From 2b1ab579dc0c2a1784d46dbbb32ebc00c2b3ca40 Mon Sep 17 00:00:00 2001 From: shikhman Date: Wed, 17 May 2017 15:14:41 -0700 Subject: [PATCH] Move metrics shutdown behavior to a ShutdownHook HttpServlet#destroy() is not called on instance shutdown, so the metrics code was never shut down correctly before. ------------- Created by MOE: https://github.com/google/moe MOE_MIGRATED_REVID=156360866 --- .../module/backend/BackendServlet.java | 24 ++++++++++++------- .../module/frontend/FrontendServlet.java | 24 ++++++++++++------- 2 files changed, 30 insertions(+), 18 deletions(-) diff --git a/java/google/registry/module/backend/BackendServlet.java b/java/google/registry/module/backend/BackendServlet.java index 17ac9cdec..76977d0b0 100644 --- a/java/google/registry/module/backend/BackendServlet.java +++ b/java/google/registry/module/backend/BackendServlet.java @@ -14,6 +14,8 @@ package google.registry.module.backend; +import com.google.appengine.api.LifecycleManager; +import com.google.appengine.api.LifecycleManager.ShutdownHook; import google.registry.monitoring.metrics.MetricReporter; import google.registry.util.FormattingLogger; import java.io.IOException; @@ -43,16 +45,20 @@ public final class BackendServlet extends HttpServlet { } catch (TimeoutException timeoutException) { logger.severefmt("Failed to initialize MetricReporter: %s", timeoutException); } - } - @Override - public void destroy() { - try { - metricReporter.stopAsync().awaitTerminated(10, TimeUnit.SECONDS); - logger.info("Shut down MetricReporter"); - } catch (TimeoutException timeoutException) { - logger.severefmt("Failed to stop MetricReporter: %s", timeoutException); - } + LifecycleManager.getInstance() + .setShutdownHook( + new ShutdownHook() { + @Override + public void shutdown() { + try { + metricReporter.stopAsync().awaitTerminated(10, TimeUnit.SECONDS); + logger.info("Shut down MetricReporter"); + } catch (TimeoutException timeoutException) { + logger.severefmt("Failed to stop MetricReporter: %s", timeoutException); + } + } + }); } @Override diff --git a/java/google/registry/module/frontend/FrontendServlet.java b/java/google/registry/module/frontend/FrontendServlet.java index d99dff0b7..05b3b64d8 100644 --- a/java/google/registry/module/frontend/FrontendServlet.java +++ b/java/google/registry/module/frontend/FrontendServlet.java @@ -14,6 +14,8 @@ package google.registry.module.frontend; +import com.google.appengine.api.LifecycleManager; +import com.google.appengine.api.LifecycleManager.ShutdownHook; import google.registry.monitoring.metrics.MetricReporter; import google.registry.util.FormattingLogger; import java.io.IOException; @@ -43,16 +45,20 @@ public final class FrontendServlet extends HttpServlet { } catch (TimeoutException timeoutException) { logger.severefmt("Failed to initialize MetricReporter: %s", timeoutException); } - } - @Override - public void destroy() { - try { - metricReporter.stopAsync().awaitTerminated(10, TimeUnit.SECONDS); - logger.info("Shut down MetricReporter"); - } catch (TimeoutException timeoutException) { - logger.severefmt("Failed to stop MetricReporter: %s", timeoutException); - } + LifecycleManager.getInstance() + .setShutdownHook( + new ShutdownHook() { + @Override + public void shutdown() { + try { + metricReporter.stopAsync().awaitTerminated(10, TimeUnit.SECONDS); + logger.info("Shut down MetricReporter"); + } catch (TimeoutException timeoutException) { + logger.severefmt("Failed to stop MetricReporter: %s", timeoutException); + } + } + }); } @Override