aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/skylarkdebug
diff options
context:
space:
mode:
authorGravatar brendandouglas <brendandouglas@google.com>2018-06-27 08:58:01 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-06-27 08:59:30 -0700
commit2e7125529178144e50f10fc60e37d35003770fce (patch)
treefb6f03da71c5f0d239c0ece6ab3e10f5453f0030 /src/main/java/com/google/devtools/build/lib/skylarkdebug
parent49eaa8f01065ee12e4726d818e24a8c594878e10 (diff)
Debug server logging: don't construct expensive debug-level log strings unless necessary.
PiperOrigin-RevId: 202317115
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/skylarkdebug')
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkdebug/server/DebugServerTransport.java19
-rw-r--r--src/main/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServer.java31
2 files changed, 26 insertions, 24 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/DebugServerTransport.java b/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/DebugServerTransport.java
index 34b2f3abec..e8c3852acb 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/DebugServerTransport.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/DebugServerTransport.java
@@ -33,7 +33,8 @@ final class DebugServerTransport {
/** Sets up the server transport and blocks while waiting for an incoming connection. */
static DebugServerTransport createAndWaitForClient(
- EventHandler eventHandler, ServerSocket serverSocket) throws IOException {
+ EventHandler eventHandler, ServerSocket serverSocket, boolean verboseLogging)
+ throws IOException {
// TODO(bazel-team): reject all connections after the first
eventHandler.handle(Event.progress("Waiting for debugger..."));
Socket clientSocket = serverSocket.accept();
@@ -43,7 +44,8 @@ final class DebugServerTransport {
serverSocket,
clientSocket,
clientSocket.getInputStream(),
- clientSocket.getOutputStream());
+ clientSocket.getOutputStream(),
+ verboseLogging);
}
private final EventHandler eventHandler;
@@ -51,18 +53,21 @@ final class DebugServerTransport {
private final Socket clientSocket;
private final InputStream requestStream;
private final OutputStream eventStream;
+ private final boolean verboseLogging;
private DebugServerTransport(
EventHandler eventHandler,
ServerSocket serverSocket,
Socket clientSocket,
InputStream requestStream,
- OutputStream eventStream) {
+ OutputStream eventStream,
+ boolean verboseLogging) {
this.eventHandler = eventHandler;
this.serverSocket = serverSocket;
this.clientSocket = clientSocket;
this.requestStream = requestStream;
this.eventStream = eventStream;
+ this.verboseLogging = verboseLogging;
}
/**
@@ -74,7 +79,9 @@ final class DebugServerTransport {
synchronized (requestStream) {
try {
DebugRequest request = DebugRequest.parseDelimitedFrom(requestStream);
- eventHandler.handle(Event.debug("Received debug client request:\n" + request));
+ if (verboseLogging) {
+ eventHandler.handle(Event.debug("Received debug client request:\n" + request));
+ }
return request;
} catch (IOException e) {
handleParsingError(e);
@@ -95,7 +102,9 @@ final class DebugServerTransport {
/** Posts a debug event. */
void postEvent(DebugEvent event) {
- eventHandler.handle(Event.debug("Sending debug event:\n" + event));
+ if (verboseLogging) {
+ eventHandler.handle(Event.debug("Sending debug event:\n" + event));
+ }
synchronized (eventStream) {
try {
event.writeDelimitedTo(eventStream);
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServer.java b/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServer.java
index 26f31793c2..6e605895ef 100644
--- a/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServer.java
+++ b/src/main/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServer.java
@@ -19,7 +19,6 @@ import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Throwables;
import com.google.devtools.build.lib.events.Event;
import com.google.devtools.build.lib.events.EventHandler;
-import com.google.devtools.build.lib.events.EventKind;
import com.google.devtools.build.lib.events.Location;
import com.google.devtools.build.lib.skylarkdebugging.SkylarkDebuggingProtos;
import com.google.devtools.build.lib.syntax.DebugServer;
@@ -41,7 +40,7 @@ public final class SkylarkDebugServer implements DebugServer {
* debug server socket and blocks waiting for an incoming connection.
*
* @param port the port on which the server should listen for connections
- * @param verboseLogging if false, debug-level events will be suppressed
+ * @param verboseLogging if true, debug-level events will be logged
* @throws IOException if an I/O error occurs while opening the socket or waiting for a connection
*/
public static SkylarkDebugServer createAndWaitForConnection(
@@ -54,28 +53,16 @@ public final class SkylarkDebugServer implements DebugServer {
* Initializes debugging support, setting up any debugging-specific overrides, then opens the
* debug server socket and blocks waiting for an incoming connection.
*
- * @param verboseLogging if false, debug-level events will be suppressed
+ * @param verboseLogging if true, debug-level events will be logged
* @throws IOException if an I/O error occurs while waiting for a connection
*/
@VisibleForTesting
static SkylarkDebugServer createAndWaitForConnection(
EventHandler eventHandler, ServerSocket serverSocket, boolean verboseLogging)
throws IOException {
- if (!verboseLogging) {
- eventHandler = getHandlerSuppressingDebugEvents(eventHandler);
- }
DebugServerTransport transport =
- DebugServerTransport.createAndWaitForClient(eventHandler, serverSocket);
- return new SkylarkDebugServer(eventHandler, transport);
- }
-
- /** Wraps an event handler, suppressing debug-level events. */
- private static EventHandler getHandlerSuppressingDebugEvents(EventHandler handler) {
- return event -> {
- if (event.getKind() != EventKind.DEBUG) {
- handler.handle(event);
- }
- };
+ DebugServerTransport.createAndWaitForClient(eventHandler, serverSocket, verboseLogging);
+ return new SkylarkDebugServer(eventHandler, transport, verboseLogging);
}
private final EventHandler eventHandler;
@@ -84,10 +71,14 @@ public final class SkylarkDebugServer implements DebugServer {
/** The server socket for the debug server. */
private final DebugServerTransport transport;
- private SkylarkDebugServer(EventHandler eventHandler, DebugServerTransport transport) {
+ private final boolean verboseLogging;
+
+ private SkylarkDebugServer(
+ EventHandler eventHandler, DebugServerTransport transport, boolean verboseLogging) {
this.eventHandler = eventHandler;
this.threadHandler = new ThreadHandler();
this.transport = transport;
+ this.verboseLogging = verboseLogging;
listenForClientRequests();
}
@@ -133,7 +124,9 @@ public final class SkylarkDebugServer implements DebugServer {
@Override
public void close() {
try {
- eventHandler.handle(Event.debug("Closing debug server"));
+ if (verboseLogging) {
+ eventHandler.handle(Event.debug("Closing debug server"));
+ }
transport.close();
} catch (IOException e) {