From 5cb0f945157d090f1d3fcc16c48bee668d99be3b Mon Sep 17 00:00:00 2001 From: Dounan Shi Date: Tue, 10 Dec 2019 21:05:51 -0800 Subject: [PATCH 1/9] examples: update example servers to perform proper graceful shutdown --- .../java/io/grpc/examples/advanced/HelloJsonServer.java | 7 ++++++- .../CompressingHelloWorldServerAllMethods.java | 7 ++++++- .../experimental/CompressingHelloWorldServerPerMethod.java | 7 ++++++- .../java/io/grpc/examples/header/CustomHeaderServer.java | 7 ++++++- .../io/grpc/examples/hedging/HedgingHelloWorldServer.java | 7 ++++++- .../java/io/grpc/examples/helloworld/HelloWorldServer.java | 7 ++++++- .../manualflowcontrol/ManualFlowControlServer.java | 7 ++++++- .../java/io/grpc/examples/routeguide/RouteGuideServer.java | 7 ++++++- 8 files changed, 48 insertions(+), 8 deletions(-) diff --git a/examples/src/main/java/io/grpc/examples/advanced/HelloJsonServer.java b/examples/src/main/java/io/grpc/examples/advanced/HelloJsonServer.java index 09609177ebf..9e9f6a37528 100644 --- a/examples/src/main/java/io/grpc/examples/advanced/HelloJsonServer.java +++ b/examples/src/main/java/io/grpc/examples/advanced/HelloJsonServer.java @@ -28,6 +28,7 @@ import io.grpc.stub.ServerCalls.UnaryMethod; import io.grpc.stub.StreamObserver; import java.io.IOException; +import java.util.concurrent.TimeUnit; import java.util.logging.Logger; /** @@ -67,7 +68,11 @@ public void run() { private void stop() { if (server != null) { - server.shutdown(); + try { + server.shutdown().awaitTermination(30, TimeUnit.SECONDS); + } catch (InterruptedException e) { + logger.warning(e.getMessage()); + } } } diff --git a/examples/src/main/java/io/grpc/examples/experimental/CompressingHelloWorldServerAllMethods.java b/examples/src/main/java/io/grpc/examples/experimental/CompressingHelloWorldServerAllMethods.java index 87079099cd7..1f08b4f5943 100644 --- a/examples/src/main/java/io/grpc/examples/experimental/CompressingHelloWorldServerAllMethods.java +++ b/examples/src/main/java/io/grpc/examples/experimental/CompressingHelloWorldServerAllMethods.java @@ -17,6 +17,7 @@ package io.grpc.examples.experimental; import java.io.IOException; +import java.util.concurrent.TimeUnit; import java.util.logging.Logger; import io.grpc.Metadata; @@ -70,7 +71,11 @@ public void run() { private void stop() { if (server != null) { - server.shutdown(); + try { + server.shutdown().awaitTermination(30, TimeUnit.SECONDS); + } catch (InterruptedException e) { + logger.warning(e.getMessage()); + } } } diff --git a/examples/src/main/java/io/grpc/examples/experimental/CompressingHelloWorldServerPerMethod.java b/examples/src/main/java/io/grpc/examples/experimental/CompressingHelloWorldServerPerMethod.java index 01b4c703308..4be7f88c1bf 100644 --- a/examples/src/main/java/io/grpc/examples/experimental/CompressingHelloWorldServerPerMethod.java +++ b/examples/src/main/java/io/grpc/examples/experimental/CompressingHelloWorldServerPerMethod.java @@ -17,6 +17,7 @@ package io.grpc.examples.experimental; import java.io.IOException; +import java.util.concurrent.TimeUnit; import java.util.logging.Logger; import io.grpc.Server; @@ -57,7 +58,11 @@ public void run() { private void stop() { if (server != null) { - server.shutdown(); + try { + server.shutdown().awaitTermination(30, TimeUnit.SECONDS); + } catch (InterruptedException e) { + logger.warning(e.getMessage()); + } } } diff --git a/examples/src/main/java/io/grpc/examples/header/CustomHeaderServer.java b/examples/src/main/java/io/grpc/examples/header/CustomHeaderServer.java index 21ad5f27691..7695425bd39 100644 --- a/examples/src/main/java/io/grpc/examples/header/CustomHeaderServer.java +++ b/examples/src/main/java/io/grpc/examples/header/CustomHeaderServer.java @@ -24,6 +24,7 @@ import io.grpc.examples.helloworld.HelloRequest; import io.grpc.stub.StreamObserver; import java.io.IOException; +import java.util.concurrent.TimeUnit; import java.util.logging.Logger; /** @@ -56,7 +57,11 @@ public void run() { private void stop() { if (server != null) { - server.shutdown(); + try { + server.shutdown().awaitTermination(30, TimeUnit.SECONDS); + } catch (InterruptedException e) { + logger.warning(e.getMessage()); + } } } diff --git a/examples/src/main/java/io/grpc/examples/hedging/HedgingHelloWorldServer.java b/examples/src/main/java/io/grpc/examples/hedging/HedgingHelloWorldServer.java index 9919944ab4f..10a5e242995 100644 --- a/examples/src/main/java/io/grpc/examples/hedging/HedgingHelloWorldServer.java +++ b/examples/src/main/java/io/grpc/examples/hedging/HedgingHelloWorldServer.java @@ -29,6 +29,7 @@ import io.grpc.stub.StreamObserver; import java.io.IOException; import java.util.Random; +import java.util.concurrent.TimeUnit; import java.util.logging.Logger; /** @@ -61,7 +62,11 @@ public void run() { private void stop() { if (server != null) { - server.shutdown(); + try { + server.shutdown().awaitTermination(30, TimeUnit.SECONDS); + } catch (InterruptedException e) { + logger.warning(e.getMessage()); + } } } diff --git a/examples/src/main/java/io/grpc/examples/helloworld/HelloWorldServer.java b/examples/src/main/java/io/grpc/examples/helloworld/HelloWorldServer.java index 4c021a8a05f..3c6fc1cbad5 100644 --- a/examples/src/main/java/io/grpc/examples/helloworld/HelloWorldServer.java +++ b/examples/src/main/java/io/grpc/examples/helloworld/HelloWorldServer.java @@ -20,6 +20,7 @@ import io.grpc.ServerBuilder; import io.grpc.stub.StreamObserver; import java.io.IOException; +import java.util.concurrent.TimeUnit; import java.util.logging.Logger; /** @@ -51,7 +52,11 @@ public void run() { private void stop() { if (server != null) { - server.shutdown(); + try { + server.shutdown().awaitTermination(30, TimeUnit.SECONDS); + } catch (InterruptedException e) { + logger.warning(e.getMessage()); + } } } diff --git a/examples/src/main/java/io/grpc/examples/manualflowcontrol/ManualFlowControlServer.java b/examples/src/main/java/io/grpc/examples/manualflowcontrol/ManualFlowControlServer.java index b3e4aa76c30..a432e8a4b43 100644 --- a/examples/src/main/java/io/grpc/examples/manualflowcontrol/ManualFlowControlServer.java +++ b/examples/src/main/java/io/grpc/examples/manualflowcontrol/ManualFlowControlServer.java @@ -23,6 +23,7 @@ import io.grpc.stub.StreamObserver; import java.io.IOException; +import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicBoolean; import java.util.logging.Logger; @@ -136,7 +137,11 @@ public void onCompleted() { @Override public void run() { logger.info("Shutting down"); - server.shutdown(); + try { + server.shutdown().awaitTermination(30, TimeUnit.SECONDS); + } catch (InterruptedException e) { + logger.warning(e.getMessage()); + } } }); server.awaitTermination(); diff --git a/examples/src/main/java/io/grpc/examples/routeguide/RouteGuideServer.java b/examples/src/main/java/io/grpc/examples/routeguide/RouteGuideServer.java index 051e2551b22..c297b08fc8b 100644 --- a/examples/src/main/java/io/grpc/examples/routeguide/RouteGuideServer.java +++ b/examples/src/main/java/io/grpc/examples/routeguide/RouteGuideServer.java @@ -36,6 +36,7 @@ import java.util.List; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.TimeUnit; import java.util.logging.Level; import java.util.logging.Logger; @@ -82,7 +83,11 @@ public void run() { /** Stop serving requests and shutdown resources. */ public void stop() { if (server != null) { - server.shutdown(); + try { + server.shutdown().awaitTermination(30, TimeUnit.SECONDS); + } catch (InterruptedException e) { + logger.warning(e.getMessage()); + } } } From 6784bca8ef801af7ff8232ae5590c56d1521e57f Mon Sep 17 00:00:00 2001 From: Dounan Shi Date: Tue, 10 Dec 2019 21:06:12 -0800 Subject: [PATCH 2/9] api: clarify that `Server.shutdown()` does not block on preexisting calls --- api/src/main/java/io/grpc/Server.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/io/grpc/Server.java b/api/src/main/java/io/grpc/Server.java index 828abb2d0f5..f9ba41edf31 100644 --- a/api/src/main/java/io/grpc/Server.java +++ b/api/src/main/java/io/grpc/Server.java @@ -104,8 +104,8 @@ public List getMutableServices() { /** * Initiates an orderly shutdown in which preexisting calls continue but new calls are rejected. - * After this call returns, this server has released the listening socket(s) and may be reused by - * another server. + * This call will not wait for preexisting calls finish before returning. After this call returns, + * this server has released the listening socket(s) and may be reused by another server. * * @return {@code this} object * @since 1.0.0 From 7bd69d390ec8d14642f955783383b6ae1e0cee97 Mon Sep 17 00:00:00 2001 From: Dounan Shi Date: Wed, 11 Dec 2019 11:57:27 -0800 Subject: [PATCH 3/9] Update shutdown API documentation --- api/src/main/java/io/grpc/Server.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/api/src/main/java/io/grpc/Server.java b/api/src/main/java/io/grpc/Server.java index f9ba41edf31..42c1e673cef 100644 --- a/api/src/main/java/io/grpc/Server.java +++ b/api/src/main/java/io/grpc/Server.java @@ -104,8 +104,12 @@ public List getMutableServices() { /** * Initiates an orderly shutdown in which preexisting calls continue but new calls are rejected. - * This call will not wait for preexisting calls finish before returning. After this call returns, - * this server has released the listening socket(s) and may be reused by another server. + * After this call returns, this server has released the listening socket(s) and may be reused by + * another server. + * + * Note that this method will not wait for preexisting calls to finish before returning. + * {@link #awaitTermination()} or {@link #awaitTermination(long, TimeUnit)} needs to be called to + * wait for existing calls to finish. * * @return {@code this} object * @since 1.0.0 From 8e75b2dd4ebe7db8fa0cb951d0868853c81b0350 Mon Sep 17 00:00:00 2001 From: Dounan Shi Date: Wed, 11 Dec 2019 12:08:51 -0800 Subject: [PATCH 4/9] Update InterruptedException handling during shutdown --- .../grpc/examples/advanced/HelloJsonServer.java | 14 +++++++------- .../CompressingHelloWorldServerAllMethods.java | 16 ++++++++-------- .../CompressingHelloWorldServerPerMethod.java | 14 +++++++------- .../grpc/examples/header/CustomHeaderServer.java | 14 +++++++------- .../hedging/HedgingHelloWorldServer.java | 14 +++++++------- .../examples/helloworld/HelloWorldServer.java | 14 +++++++------- .../ManualFlowControlServer.java | 2 +- .../examples/routeguide/RouteGuideServer.java | 14 +++++++------- 8 files changed, 51 insertions(+), 51 deletions(-) diff --git a/examples/src/main/java/io/grpc/examples/advanced/HelloJsonServer.java b/examples/src/main/java/io/grpc/examples/advanced/HelloJsonServer.java index 9e9f6a37528..b8de024e916 100644 --- a/examples/src/main/java/io/grpc/examples/advanced/HelloJsonServer.java +++ b/examples/src/main/java/io/grpc/examples/advanced/HelloJsonServer.java @@ -60,19 +60,19 @@ private void start() throws IOException { public void run() { // Use stderr here since the logger may have been reset by its JVM shutdown hook. System.err.println("*** shutting down gRPC server since JVM is shutting down"); - HelloJsonServer.this.stop(); + try { + HelloJsonServer.this.stop(); + } catch (InterruptedException e) { + e.printStackTrace(); + } System.err.println("*** server shut down"); } }); } - private void stop() { + private void stop() throws InterruptedException { if (server != null) { - try { - server.shutdown().awaitTermination(30, TimeUnit.SECONDS); - } catch (InterruptedException e) { - logger.warning(e.getMessage()); - } + server.shutdown().awaitTermination(30, TimeUnit.SECONDS); } } diff --git a/examples/src/main/java/io/grpc/examples/experimental/CompressingHelloWorldServerAllMethods.java b/examples/src/main/java/io/grpc/examples/experimental/CompressingHelloWorldServerAllMethods.java index 1f08b4f5943..65b8b306c43 100644 --- a/examples/src/main/java/io/grpc/examples/experimental/CompressingHelloWorldServerAllMethods.java +++ b/examples/src/main/java/io/grpc/examples/experimental/CompressingHelloWorldServerAllMethods.java @@ -34,7 +34,7 @@ /** * Server that manages startup/shutdown of a {@code Greeter} server - * with an interceptor to enable compression for all responses. + * with an interceptor to enable compression for all responses. */ public class CompressingHelloWorldServerAllMethods { private static final Logger logger = Logger.getLogger(CompressingHelloWorldServerAllMethods.class.getName()); @@ -63,19 +63,19 @@ public Listener interceptCall(ServerCall call, public void run() { // Use stderr here since the logger may have been reset by its JVM shutdown hook. System.err.println("*** shutting down gRPC server since JVM is shutting down"); - CompressingHelloWorldServerAllMethods.this.stop(); + try { + CompressingHelloWorldServerAllMethods.this.stop(); + } catch (InterruptedException e) { + e.printStackTrace(); + } System.err.println("*** server shut down"); } }); } - private void stop() { + private void stop() throws InterruptedException { if (server != null) { - try { - server.shutdown().awaitTermination(30, TimeUnit.SECONDS); - } catch (InterruptedException e) { - logger.warning(e.getMessage()); - } + server.shutdown().awaitTermination(30, TimeUnit.SECONDS); } } diff --git a/examples/src/main/java/io/grpc/examples/experimental/CompressingHelloWorldServerPerMethod.java b/examples/src/main/java/io/grpc/examples/experimental/CompressingHelloWorldServerPerMethod.java index 4be7f88c1bf..e59adb588b7 100644 --- a/examples/src/main/java/io/grpc/examples/experimental/CompressingHelloWorldServerPerMethod.java +++ b/examples/src/main/java/io/grpc/examples/experimental/CompressingHelloWorldServerPerMethod.java @@ -50,19 +50,19 @@ private void start() throws IOException { public void run() { // Use stderr here since the logger may have been reset by its JVM shutdown hook. System.err.println("*** shutting down gRPC server since JVM is shutting down"); - CompressingHelloWorldServerPerMethod.this.stop(); + try { + CompressingHelloWorldServerPerMethod.this.stop(); + } catch (InterruptedException e) { + e.printStackTrace(); + } System.err.println("*** server shut down"); } }); } - private void stop() { + private void stop() throws InterruptedException { if (server != null) { - try { - server.shutdown().awaitTermination(30, TimeUnit.SECONDS); - } catch (InterruptedException e) { - logger.warning(e.getMessage()); - } + server.shutdown().awaitTermination(30, TimeUnit.SECONDS); } } diff --git a/examples/src/main/java/io/grpc/examples/header/CustomHeaderServer.java b/examples/src/main/java/io/grpc/examples/header/CustomHeaderServer.java index 7695425bd39..7452d4537a4 100644 --- a/examples/src/main/java/io/grpc/examples/header/CustomHeaderServer.java +++ b/examples/src/main/java/io/grpc/examples/header/CustomHeaderServer.java @@ -49,19 +49,19 @@ private void start() throws IOException { public void run() { // Use stderr here since the logger may have been reset by its JVM shutdown hook. System.err.println("*** shutting down gRPC server since JVM is shutting down"); - CustomHeaderServer.this.stop(); + try { + CustomHeaderServer.this.stop(); + } catch (InterruptedException e) { + e.printStackTrace(); + } System.err.println("*** server shut down"); } }); } - private void stop() { + private void stop() throws InterruptedException { if (server != null) { - try { - server.shutdown().awaitTermination(30, TimeUnit.SECONDS); - } catch (InterruptedException e) { - logger.warning(e.getMessage()); - } + server.shutdown().awaitTermination(30, TimeUnit.SECONDS); } } diff --git a/examples/src/main/java/io/grpc/examples/hedging/HedgingHelloWorldServer.java b/examples/src/main/java/io/grpc/examples/hedging/HedgingHelloWorldServer.java index 10a5e242995..502f154f805 100644 --- a/examples/src/main/java/io/grpc/examples/hedging/HedgingHelloWorldServer.java +++ b/examples/src/main/java/io/grpc/examples/hedging/HedgingHelloWorldServer.java @@ -54,19 +54,19 @@ private void start() throws IOException { public void run() { // Use stderr here since the logger may have been reset by its JVM shutdown hook. System.err.println("*** shutting down gRPC server since JVM is shutting down"); - HedgingHelloWorldServer.this.stop(); + try { + HedgingHelloWorldServer.this.stop(); + } catch (InterruptedException e) { + e.printStackTrace(); + } System.err.println("*** server shut down"); } }); } - private void stop() { + private void stop() throws InterruptedException { if (server != null) { - try { - server.shutdown().awaitTermination(30, TimeUnit.SECONDS); - } catch (InterruptedException e) { - logger.warning(e.getMessage()); - } + server.shutdown().awaitTermination(30, TimeUnit.SECONDS); } } diff --git a/examples/src/main/java/io/grpc/examples/helloworld/HelloWorldServer.java b/examples/src/main/java/io/grpc/examples/helloworld/HelloWorldServer.java index 3c6fc1cbad5..9e7c1ae70d6 100644 --- a/examples/src/main/java/io/grpc/examples/helloworld/HelloWorldServer.java +++ b/examples/src/main/java/io/grpc/examples/helloworld/HelloWorldServer.java @@ -44,19 +44,19 @@ private void start() throws IOException { public void run() { // Use stderr here since the logger may have been reset by its JVM shutdown hook. System.err.println("*** shutting down gRPC server since JVM is shutting down"); - HelloWorldServer.this.stop(); + try { + HelloWorldServer.this.stop(); + } catch (InterruptedException e) { + e.printStackTrace(); + } System.err.println("*** server shut down"); } }); } - private void stop() { + private void stop() throws InterruptedException { if (server != null) { - try { - server.shutdown().awaitTermination(30, TimeUnit.SECONDS); - } catch (InterruptedException e) { - logger.warning(e.getMessage()); - } + server.shutdown().awaitTermination(30, TimeUnit.SECONDS); } } diff --git a/examples/src/main/java/io/grpc/examples/manualflowcontrol/ManualFlowControlServer.java b/examples/src/main/java/io/grpc/examples/manualflowcontrol/ManualFlowControlServer.java index a432e8a4b43..c69000da9f4 100644 --- a/examples/src/main/java/io/grpc/examples/manualflowcontrol/ManualFlowControlServer.java +++ b/examples/src/main/java/io/grpc/examples/manualflowcontrol/ManualFlowControlServer.java @@ -140,7 +140,7 @@ public void run() { try { server.shutdown().awaitTermination(30, TimeUnit.SECONDS); } catch (InterruptedException e) { - logger.warning(e.getMessage()); + e.printStackTrace(); } } }); diff --git a/examples/src/main/java/io/grpc/examples/routeguide/RouteGuideServer.java b/examples/src/main/java/io/grpc/examples/routeguide/RouteGuideServer.java index c297b08fc8b..180a8e88d7a 100644 --- a/examples/src/main/java/io/grpc/examples/routeguide/RouteGuideServer.java +++ b/examples/src/main/java/io/grpc/examples/routeguide/RouteGuideServer.java @@ -74,20 +74,20 @@ public void start() throws IOException { public void run() { // Use stderr here since the logger may have been reset by its JVM shutdown hook. System.err.println("*** shutting down gRPC server since JVM is shutting down"); - RouteGuideServer.this.stop(); + try { + RouteGuideServer.this.stop(); + } catch (InterruptedException e) { + e.printStackTrace(); + } System.err.println("*** server shut down"); } }); } /** Stop serving requests and shutdown resources. */ - public void stop() { + public void stop() throws InterruptedException { if (server != null) { - try { - server.shutdown().awaitTermination(30, TimeUnit.SECONDS); - } catch (InterruptedException e) { - logger.warning(e.getMessage()); - } + server.shutdown().awaitTermination(30, TimeUnit.SECONDS); } } From 53b54df5c4d6d34a41c33f11b8946e2375caacc6 Mon Sep 17 00:00:00 2001 From: Dounan Shi Date: Wed, 11 Dec 2019 12:35:36 -0800 Subject: [PATCH 5/9] Fix tests --- .../io/grpc/examples/routeguide/RouteGuideServerTest.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/examples/src/test/java/io/grpc/examples/routeguide/RouteGuideServerTest.java b/examples/src/test/java/io/grpc/examples/routeguide/RouteGuideServerTest.java index 75b9f63780a..9a4b4c9821f 100644 --- a/examples/src/test/java/io/grpc/examples/routeguide/RouteGuideServerTest.java +++ b/examples/src/test/java/io/grpc/examples/routeguide/RouteGuideServerTest.java @@ -86,7 +86,11 @@ public void setUp() throws Exception { @After public void tearDown() { - server.stop(); + try { + server.stop(); + } catch (InterruptedException e) { + e.printStackTrace(); + } } @Test From 5118c7bb0d6c6ddce4f50a7352b676707f64671c Mon Sep 17 00:00:00 2001 From: Dounan Shi Date: Wed, 11 Dec 2019 12:58:15 -0800 Subject: [PATCH 6/9] Fix checkstyle --- api/src/main/java/io/grpc/Server.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/api/src/main/java/io/grpc/Server.java b/api/src/main/java/io/grpc/Server.java index 42c1e673cef..fc98fe242e0 100644 --- a/api/src/main/java/io/grpc/Server.java +++ b/api/src/main/java/io/grpc/Server.java @@ -107,7 +107,7 @@ public List getMutableServices() { * After this call returns, this server has released the listening socket(s) and may be reused by * another server. * - * Note that this method will not wait for preexisting calls to finish before returning. + *

Note that this method will not wait for preexisting calls to finish before returning. * {@link #awaitTermination()} or {@link #awaitTermination(long, TimeUnit)} needs to be called to * wait for existing calls to finish. * From 91391d2017a0481fbf29f7ecebf510d1e4abfe04 Mon Sep 17 00:00:00 2001 From: Dounan Shi Date: Wed, 11 Dec 2019 14:06:45 -0800 Subject: [PATCH 7/9] Replace tabs with spaces --- .../java/io/grpc/examples/routeguide/RouteGuideServerTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/src/test/java/io/grpc/examples/routeguide/RouteGuideServerTest.java b/examples/src/test/java/io/grpc/examples/routeguide/RouteGuideServerTest.java index 9a4b4c9821f..5cd60b73768 100644 --- a/examples/src/test/java/io/grpc/examples/routeguide/RouteGuideServerTest.java +++ b/examples/src/test/java/io/grpc/examples/routeguide/RouteGuideServerTest.java @@ -87,7 +87,7 @@ public void setUp() throws Exception { @After public void tearDown() { try { - server.stop(); + server.stop(); } catch (InterruptedException e) { e.printStackTrace(); } From d997e5be9504f61d4f9fe23998cb400899a95274 Mon Sep 17 00:00:00 2001 From: Dounan Shi Date: Thu, 12 Dec 2019 09:38:34 -0800 Subject: [PATCH 8/9] Print stacktrace to stderr --- .../main/java/io/grpc/examples/advanced/HelloJsonServer.java | 2 +- .../experimental/CompressingHelloWorldServerAllMethods.java | 2 +- .../experimental/CompressingHelloWorldServerPerMethod.java | 2 +- .../main/java/io/grpc/examples/header/CustomHeaderServer.java | 2 +- .../java/io/grpc/examples/hedging/HedgingHelloWorldServer.java | 2 +- .../main/java/io/grpc/examples/helloworld/HelloWorldServer.java | 2 +- .../examples/manualflowcontrol/ManualFlowControlServer.java | 2 +- .../main/java/io/grpc/examples/routeguide/RouteGuideServer.java | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/examples/src/main/java/io/grpc/examples/advanced/HelloJsonServer.java b/examples/src/main/java/io/grpc/examples/advanced/HelloJsonServer.java index b8de024e916..0a656dd52b8 100644 --- a/examples/src/main/java/io/grpc/examples/advanced/HelloJsonServer.java +++ b/examples/src/main/java/io/grpc/examples/advanced/HelloJsonServer.java @@ -63,7 +63,7 @@ public void run() { try { HelloJsonServer.this.stop(); } catch (InterruptedException e) { - e.printStackTrace(); + e.printStackTrace(System.err); } System.err.println("*** server shut down"); } diff --git a/examples/src/main/java/io/grpc/examples/experimental/CompressingHelloWorldServerAllMethods.java b/examples/src/main/java/io/grpc/examples/experimental/CompressingHelloWorldServerAllMethods.java index 65b8b306c43..23c51a6d26c 100644 --- a/examples/src/main/java/io/grpc/examples/experimental/CompressingHelloWorldServerAllMethods.java +++ b/examples/src/main/java/io/grpc/examples/experimental/CompressingHelloWorldServerAllMethods.java @@ -66,7 +66,7 @@ public void run() { try { CompressingHelloWorldServerAllMethods.this.stop(); } catch (InterruptedException e) { - e.printStackTrace(); + e.printStackTrace(System.err); } System.err.println("*** server shut down"); } diff --git a/examples/src/main/java/io/grpc/examples/experimental/CompressingHelloWorldServerPerMethod.java b/examples/src/main/java/io/grpc/examples/experimental/CompressingHelloWorldServerPerMethod.java index e59adb588b7..0ccf38184d3 100644 --- a/examples/src/main/java/io/grpc/examples/experimental/CompressingHelloWorldServerPerMethod.java +++ b/examples/src/main/java/io/grpc/examples/experimental/CompressingHelloWorldServerPerMethod.java @@ -53,7 +53,7 @@ public void run() { try { CompressingHelloWorldServerPerMethod.this.stop(); } catch (InterruptedException e) { - e.printStackTrace(); + e.printStackTrace(System.err); } System.err.println("*** server shut down"); } diff --git a/examples/src/main/java/io/grpc/examples/header/CustomHeaderServer.java b/examples/src/main/java/io/grpc/examples/header/CustomHeaderServer.java index 7452d4537a4..ae80045603c 100644 --- a/examples/src/main/java/io/grpc/examples/header/CustomHeaderServer.java +++ b/examples/src/main/java/io/grpc/examples/header/CustomHeaderServer.java @@ -52,7 +52,7 @@ public void run() { try { CustomHeaderServer.this.stop(); } catch (InterruptedException e) { - e.printStackTrace(); + e.printStackTrace(System.err); } System.err.println("*** server shut down"); } diff --git a/examples/src/main/java/io/grpc/examples/hedging/HedgingHelloWorldServer.java b/examples/src/main/java/io/grpc/examples/hedging/HedgingHelloWorldServer.java index 502f154f805..b934e8514ac 100644 --- a/examples/src/main/java/io/grpc/examples/hedging/HedgingHelloWorldServer.java +++ b/examples/src/main/java/io/grpc/examples/hedging/HedgingHelloWorldServer.java @@ -57,7 +57,7 @@ public void run() { try { HedgingHelloWorldServer.this.stop(); } catch (InterruptedException e) { - e.printStackTrace(); + e.printStackTrace(System.err); } System.err.println("*** server shut down"); } diff --git a/examples/src/main/java/io/grpc/examples/helloworld/HelloWorldServer.java b/examples/src/main/java/io/grpc/examples/helloworld/HelloWorldServer.java index 9e7c1ae70d6..12836a4c828 100644 --- a/examples/src/main/java/io/grpc/examples/helloworld/HelloWorldServer.java +++ b/examples/src/main/java/io/grpc/examples/helloworld/HelloWorldServer.java @@ -47,7 +47,7 @@ public void run() { try { HelloWorldServer.this.stop(); } catch (InterruptedException e) { - e.printStackTrace(); + e.printStackTrace(System.err); } System.err.println("*** server shut down"); } diff --git a/examples/src/main/java/io/grpc/examples/manualflowcontrol/ManualFlowControlServer.java b/examples/src/main/java/io/grpc/examples/manualflowcontrol/ManualFlowControlServer.java index c69000da9f4..bdde21a20f8 100644 --- a/examples/src/main/java/io/grpc/examples/manualflowcontrol/ManualFlowControlServer.java +++ b/examples/src/main/java/io/grpc/examples/manualflowcontrol/ManualFlowControlServer.java @@ -140,7 +140,7 @@ public void run() { try { server.shutdown().awaitTermination(30, TimeUnit.SECONDS); } catch (InterruptedException e) { - e.printStackTrace(); + e.printStackTrace(System.err); } } }); diff --git a/examples/src/main/java/io/grpc/examples/routeguide/RouteGuideServer.java b/examples/src/main/java/io/grpc/examples/routeguide/RouteGuideServer.java index 180a8e88d7a..c91544ae45d 100644 --- a/examples/src/main/java/io/grpc/examples/routeguide/RouteGuideServer.java +++ b/examples/src/main/java/io/grpc/examples/routeguide/RouteGuideServer.java @@ -77,7 +77,7 @@ public void run() { try { RouteGuideServer.this.stop(); } catch (InterruptedException e) { - e.printStackTrace(); + e.printStackTrace(System.err); } System.err.println("*** server shut down"); } From 1df260adb280a6a60e9e2e53f6bd6546b94272b7 Mon Sep 17 00:00:00 2001 From: Dounan Shi Date: Thu, 12 Dec 2019 09:41:41 -0800 Subject: [PATCH 9/9] Fix ManualFlowControlServer logging during shutdown --- .../examples/manualflowcontrol/ManualFlowControlServer.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/examples/src/main/java/io/grpc/examples/manualflowcontrol/ManualFlowControlServer.java b/examples/src/main/java/io/grpc/examples/manualflowcontrol/ManualFlowControlServer.java index bdde21a20f8..abd04fa9ad5 100644 --- a/examples/src/main/java/io/grpc/examples/manualflowcontrol/ManualFlowControlServer.java +++ b/examples/src/main/java/io/grpc/examples/manualflowcontrol/ManualFlowControlServer.java @@ -136,7 +136,8 @@ public void onCompleted() { Runtime.getRuntime().addShutdownHook(new Thread() { @Override public void run() { - logger.info("Shutting down"); + // Use stderr here since the logger may have been reset by its JVM shutdown hook. + System.err.println("Shutting down"); try { server.shutdown().awaitTermination(30, TimeUnit.SECONDS); } catch (InterruptedException e) {