You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@giraph.apache.org by ac...@apache.org on 2013/05/13 22:42:19 UTC

git commit: updated refs/heads/trunk to 7b72413

Updated Branches:
  refs/heads/trunk 57821392a -> 7b724131f


GIRAPH-666: Netty execs threads and metrics threads don't get
cleaned up properly (aching)


Project: http://git-wip-us.apache.org/repos/asf/giraph/repo
Commit: http://git-wip-us.apache.org/repos/asf/giraph/commit/7b724131
Tree: http://git-wip-us.apache.org/repos/asf/giraph/tree/7b724131
Diff: http://git-wip-us.apache.org/repos/asf/giraph/diff/7b724131

Branch: refs/heads/trunk
Commit: 7b724131fd7fd7f67119258a532a651789beec68
Parents: 5782139
Author: Avery Ching <ac...@fb.com>
Authored: Mon May 13 12:41:20 2013 -0700
Committer: Avery Ching <ac...@fb.com>
Committed: Mon May 13 13:41:41 2013 -0700

----------------------------------------------------------------------
 CHANGELOG                                          |    3 +++
 .../org/apache/giraph/comm/netty/NettyClient.java  |    7 ++++++-
 .../org/apache/giraph/comm/netty/NettyServer.java  |    7 ++++++-
 .../org/apache/giraph/graph/GraphTaskManager.java  |    4 ++++
 .../org/apache/giraph/metrics/GiraphMetrics.java   |    9 +++++++++
 .../giraph/metrics/GiraphMetricsRegistry.java      |    7 +++++++
 6 files changed, 35 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/giraph/blob/7b724131/CHANGELOG
----------------------------------------------------------------------
diff --git a/CHANGELOG b/CHANGELOG
index 947f12d..50547c0 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,9 @@
 Giraph Change Log
 
 Release 1.1.0 - unreleased
+  GIRAPH-666: Netty execs threads and metrics threads don't get 
+  cleaned up properly (aching)
+
   GIRAPH-665: Reduce ZooKeeper output in tests by changing log level from 
   INFO to ERROR (aching)
 

http://git-wip-us.apache.org/repos/asf/giraph/blob/7b724131/giraph-core/src/main/java/org/apache/giraph/comm/netty/NettyClient.java
----------------------------------------------------------------------
diff --git a/giraph-core/src/main/java/org/apache/giraph/comm/netty/NettyClient.java b/giraph-core/src/main/java/org/apache/giraph/comm/netty/NettyClient.java
index 30c32fd..83f1654 100644
--- a/giraph-core/src/main/java/org/apache/giraph/comm/netty/NettyClient.java
+++ b/giraph-core/src/main/java/org/apache/giraph/comm/netty/NettyClient.java
@@ -164,6 +164,8 @@ public class NettyClient {
   private final int maxPoolSize;
   /** Maximum number of attempts to resolve an address*/
   private final int maxResolveAddressAttempts;
+  /** Use execution handler? */
+  private final boolean useExecutionHandler;
   /** Execution handler (if used) */
   private final ExecutionHandler executionHandler;
   /** Name of the handler before the execution handler (if used) */
@@ -218,7 +220,7 @@ public class NettyClient {
 
     handlerBeforeExecutionHandler =
         NETTY_CLIENT_EXECUTION_AFTER_HANDLER.get(conf);
-    boolean useExecutionHandler = NETTY_CLIENT_USE_EXECUTION_HANDLER.get(conf);
+    useExecutionHandler = NETTY_CLIENT_USE_EXECUTION_HANDLER.get(conf);
     if (useExecutionHandler) {
       int executionThreads = NETTY_CLIENT_EXECUTION_THREADS.get(conf);
       executionHandler = new ExecutionHandler(
@@ -551,6 +553,9 @@ public class NettyClient {
             bossExecutorService.shutdownNow();
             workerExecutorService.shutdownNow();
             bootstrap.releaseExternalResources();
+            if (useExecutionHandler) {
+              executionHandler.releaseExternalResources();
+            }
           }
         }
       });

http://git-wip-us.apache.org/repos/asf/giraph/blob/7b724131/giraph-core/src/main/java/org/apache/giraph/comm/netty/NettyServer.java
----------------------------------------------------------------------
diff --git a/giraph-core/src/main/java/org/apache/giraph/comm/netty/NettyServer.java b/giraph-core/src/main/java/org/apache/giraph/comm/netty/NettyServer.java
index 0bfc2d6..9d4afa9 100644
--- a/giraph-core/src/main/java/org/apache/giraph/comm/netty/NettyServer.java
+++ b/giraph-core/src/main/java/org/apache/giraph/comm/netty/NettyServer.java
@@ -118,6 +118,8 @@ public class NettyServer {
   private final ExecutorService workerExecutorService;
   /** Request completed map per worker */
   private final WorkerRequestReservedMap workerRequestReservedMap;
+  /** Use execution handler? */
+  private final boolean useExecutionHandler;
   /** Execution handler (if used) */
   private final ExecutionHandler executionHandler;
   /** Name of the handler before the execution handler (if used) */
@@ -172,7 +174,7 @@ public class NettyServer {
 
     handlerBeforeExecutionHandler =
         GiraphConstants.NETTY_SERVER_EXECUTION_AFTER_HANDLER.get(conf);
-    boolean useExecutionHandler =
+    useExecutionHandler =
         GiraphConstants.NETTY_SERVER_USE_EXECUTION_HANDLER.get(conf);
     if (useExecutionHandler) {
       int executionThreads = conf.getNettyServerExecutionThreads();
@@ -367,6 +369,9 @@ public class NettyServer {
     }
     bootstrap.releaseExternalResources();
     channelFactory.releaseExternalResources();
+    if (useExecutionHandler) {
+      executionHandler.releaseExternalResources();
+    }
     if (LOG.isInfoEnabled()) {
       LOG.info("stop: Netty server halted");
     }

http://git-wip-us.apache.org/repos/asf/giraph/blob/7b724131/giraph-core/src/main/java/org/apache/giraph/graph/GraphTaskManager.java
----------------------------------------------------------------------
diff --git a/giraph-core/src/main/java/org/apache/giraph/graph/GraphTaskManager.java b/giraph-core/src/main/java/org/apache/giraph/graph/GraphTaskManager.java
index 9caf1b9..82e1b1e 100644
--- a/giraph-core/src/main/java/org/apache/giraph/graph/GraphTaskManager.java
+++ b/giraph-core/src/main/java/org/apache/giraph/graph/GraphTaskManager.java
@@ -890,6 +890,8 @@ public class GraphTaskManager<I extends WritableComparable, V extends Writable,
     if (zkManager != null) {
       zkManager.offlineZooKeeperServers(ZooKeeperManager.State.FINISHED);
     }
+    // Stop tracking metrics
+    GiraphMetrics.get().shutdown();
   }
 
   /**
@@ -914,6 +916,8 @@ public class GraphTaskManager<I extends WritableComparable, V extends Writable,
       if (graphFunctions.isWorker()) {
         serviceWorker.failureCleanup();
       }
+      // Stop tracking metrics
+      GiraphMetrics.get().shutdown();
     // Checkstyle exception due to needing to get the original
     // exception on failure
     // CHECKSTYLE: stop IllegalCatch

http://git-wip-us.apache.org/repos/asf/giraph/blob/7b724131/giraph-core/src/main/java/org/apache/giraph/metrics/GiraphMetrics.java
----------------------------------------------------------------------
diff --git a/giraph-core/src/main/java/org/apache/giraph/metrics/GiraphMetrics.java b/giraph-core/src/main/java/org/apache/giraph/metrics/GiraphMetrics.java
index 0454a5e..7d980ea 100644
--- a/giraph-core/src/main/java/org/apache/giraph/metrics/GiraphMetrics.java
+++ b/giraph-core/src/main/java/org/apache/giraph/metrics/GiraphMetrics.java
@@ -146,4 +146,13 @@ public class GiraphMetrics {
     perJobRequired.printToStream(out);
     perSuperstep.printToStream(out);
   }
+
+  /**
+   * Stop using metrics (for cleanup)
+   */
+  public void shutdown() {
+    perJobOptional.shutdown();
+    perJobRequired.shutdown();
+    perSuperstep.shutdown();
+  }
 }

http://git-wip-us.apache.org/repos/asf/giraph/blob/7b724131/giraph-core/src/main/java/org/apache/giraph/metrics/GiraphMetricsRegistry.java
----------------------------------------------------------------------
diff --git a/giraph-core/src/main/java/org/apache/giraph/metrics/GiraphMetricsRegistry.java b/giraph-core/src/main/java/org/apache/giraph/metrics/GiraphMetricsRegistry.java
index 3c61872..149f352 100644
--- a/giraph-core/src/main/java/org/apache/giraph/metrics/GiraphMetricsRegistry.java
+++ b/giraph-core/src/main/java/org/apache/giraph/metrics/GiraphMetricsRegistry.java
@@ -303,4 +303,11 @@ public class GiraphMetricsRegistry {
   protected MetricName makeMetricName(String name) {
     return new MetricName(groupName, type, name);
   }
+
+  /**
+   * Nothing will be captured after this is called.
+   */
+  public void shutdown() {
+    registry.shutdown();
+  }
 }