diff options
author | 2018-06-11 10:29:34 -0700 | |
---|---|---|
committer | 2018-06-11 10:30:56 -0700 | |
commit | 4ee15b8182c9728855914ce174bd933698000d9b (patch) | |
tree | f5c15445d93ad75ed11e37df5e491bd48771e12a | |
parent | 8df3747348989b82d7e360dc202da2fcbcd4f8cb (diff) |
Add some more logging to the debug server.
Mostly 'debug' level logs that won't appear by default.
PiperOrigin-RevId: 200072597
5 files changed, 47 insertions, 4 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/skylarkdebug/module/SkylarkDebuggerOptions.java b/src/main/java/com/google/devtools/build/lib/skylarkdebug/module/SkylarkDebuggerOptions.java index 831a7770c6..3164843f3f 100644 --- a/src/main/java/com/google/devtools/build/lib/skylarkdebug/module/SkylarkDebuggerOptions.java +++ b/src/main/java/com/google/devtools/build/lib/skylarkdebug/module/SkylarkDebuggerOptions.java @@ -36,7 +36,6 @@ public final class SkylarkDebuggerOptions extends OptionsBase { @Option( name = "experimental_debug_server_port", defaultValue = "7300", - category = "server startup", documentationCategory = OptionDocumentationCategory.UNDOCUMENTED, effectTags = {OptionEffectTag.EXECUTION}, metadataTags = {OptionMetadataTag.EXPERIMENTAL}, 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 a1696e368a..34b2f3abec 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 @@ -37,6 +37,7 @@ final class DebugServerTransport { // TODO(bazel-team): reject all connections after the first eventHandler.handle(Event.progress("Waiting for debugger...")); Socket clientSocket = serverSocket.accept(); + eventHandler.handle(Event.info("Debugger connection successfully established.")); return new DebugServerTransport( eventHandler, serverSocket, @@ -72,7 +73,9 @@ final class DebugServerTransport { DebugRequest readClientRequest() { synchronized (requestStream) { try { - return DebugRequest.parseDelimitedFrom(requestStream); + DebugRequest request = DebugRequest.parseDelimitedFrom(requestStream); + eventHandler.handle(Event.debug("Received debug client request:\n" + request)); + return request; } catch (IOException e) { handleParsingError(e); return null; @@ -92,6 +95,7 @@ final class DebugServerTransport { /** Posts a debug event. */ void postEvent(DebugEvent event) { + 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 00af706a47..02bc164fd2 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 @@ -104,6 +104,10 @@ public final class SkylarkDebugServer implements DebugServer { + Throwables.getStackTraceAsString(e))); } } finally { + eventHandler.handle( + Event.info( + "Debug server listener thread closed; shutting down debug server and " + + "resuming all threads")); close(); } }); @@ -115,6 +119,7 @@ public final class SkylarkDebugServer implements DebugServer { @Override public void close() { try { + eventHandler.handle(Event.debug("Closing debug server")); transport.close(); } catch (IOException e) { diff --git a/src/test/java/com/google/devtools/build/lib/skylarkdebug/server/DebugServerTransportTest.java b/src/test/java/com/google/devtools/build/lib/skylarkdebug/server/DebugServerTransportTest.java index c2b6b4e414..fedf56f690 100644 --- a/src/test/java/com/google/devtools/build/lib/skylarkdebug/server/DebugServerTransportTest.java +++ b/src/test/java/com/google/devtools/build/lib/skylarkdebug/server/DebugServerTransportTest.java @@ -22,6 +22,7 @@ import com.google.devtools.build.lib.skylarkdebugging.SkylarkDebuggingProtos.Con import com.google.devtools.build.lib.skylarkdebugging.SkylarkDebuggingProtos.DebugEvent; import com.google.devtools.build.lib.skylarkdebugging.SkylarkDebuggingProtos.DebugRequest; import com.google.devtools.build.lib.skylarkdebugging.SkylarkDebuggingProtos.StartDebuggingRequest; +import com.google.devtools.build.lib.syntax.Environment.FailFastException; import java.io.IOException; import java.net.InetAddress; import java.net.InetSocketAddress; @@ -29,6 +30,7 @@ import java.net.ServerSocket; import java.net.Socket; import java.time.Duration; import java.util.ArrayList; +import java.util.EnumSet; import java.util.List; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -84,8 +86,21 @@ public class DebugServerTransportTest { } @Before - public void setup() { - events.setFailFast(true); + public void setupEventHandler() { + // fail-fast treats 'debug' messages as errors. Replace with something that doesn't + events.setFailFast(false); + + EnumSet<EventKind> failOnEvents = EnumSet.copyOf(EventKind.ERRORS_AND_WARNINGS); + failOnEvents.remove(EventKind.DEBUG); + + events + .reporter() + .addHandler( + event -> { + if (failOnEvents.contains(event.getKind())) { + throw new FailFastException(event.toString()); + } + }); } @Test diff --git a/src/test/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServerTest.java b/src/test/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServerTest.java index 8aea1889d7..15fce4ba08 100644 --- a/src/test/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServerTest.java +++ b/src/test/java/com/google/devtools/build/lib/skylarkdebug/server/SkylarkDebugServerTest.java @@ -39,6 +39,7 @@ import com.google.devtools.build.lib.skylarkdebugging.SkylarkDebuggingProtos.Ste import com.google.devtools.build.lib.syntax.BuildFileAST; import com.google.devtools.build.lib.syntax.DebugServerUtils; import com.google.devtools.build.lib.syntax.Environment; +import com.google.devtools.build.lib.syntax.Environment.FailFastException; import com.google.devtools.build.lib.syntax.Mutability; import com.google.devtools.build.lib.syntax.ParserInputSource; import com.google.devtools.build.lib.syntax.SkylarkList; @@ -49,6 +50,7 @@ import java.io.IOException; import java.net.InetAddress; import java.net.ServerSocket; import java.time.Duration; +import java.util.EnumSet; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; @@ -85,6 +87,24 @@ public class SkylarkDebugServerTest { DebugServerUtils.initializeDebugServer(server); } + @Before + public void setupEventHandler() { + // fail-fast treats 'debug' messages as errors. Replace with something that doesn't + events.setFailFast(false); + + EnumSet<EventKind> failOnEvents = EnumSet.copyOf(EventKind.ERRORS_AND_WARNINGS); + failOnEvents.remove(EventKind.DEBUG); + + events + .reporter() + .addHandler( + event -> { + if (failOnEvents.contains(event.getKind())) { + throw new FailFastException(event.toString()); + } + }); + } + @After public void shutDown() throws Exception { if (client != null) { |