You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ratis.apache.org by sh...@apache.org on 2020/05/07 07:46:20 UTC

[incubator-ratis] branch master updated: RATIS-925. Fix Memory leak of RaftServerImpl for no remove from static RaftServerMetrics::metricsMap (#90)

This is an automated email from the ASF dual-hosted git repository.

shashikant pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-ratis.git


The following commit(s) were added to refs/heads/master by this push:
     new 36b9af3  RATIS-925. Fix Memory leak of RaftServerImpl for no remove from static RaftServerMetrics::metricsMap (#90)
36b9af3 is described below

commit 36b9af3a74828209eb3f4eb0b10aff9193228b8a
Author: runzhiwang <51...@users.noreply.github.com>
AuthorDate: Thu May 7 15:46:09 2020 +0800

    RATIS-925. Fix Memory leak of RaftServerImpl for no remove from static RaftServerMetrics::metricsMap (#90)
---
 .../src/main/java/org/apache/ratis/server/impl/RaftServerImpl.java | 1 +
 .../main/java/org/apache/ratis/server/impl/RaftServerMetrics.java  | 7 +++++++
 2 files changed, 8 insertions(+)

diff --git a/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerImpl.java b/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerImpl.java
index 8526028..4633480 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerImpl.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerImpl.java
@@ -276,6 +276,7 @@ public class RaftServerImpl implements RaftServerProtocol, RaftServerAsynchronou
       }
       leaderElectionMetrics.unregister();
       raftServerMetrics.unregister();
+      RaftServerMetrics.removeRaftServerMetrics(this);
       if (deleteDirectory) {
         final RaftStorageDirectory dir = state.getStorage().getStorageDir();
         try {
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerMetrics.java b/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerMetrics.java
index ebbd346..0098627 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerMetrics.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/impl/RaftServerMetrics.java
@@ -78,6 +78,13 @@ public final class RaftServerMetrics extends RatisMetrics {
     return serverMetrics;
   }
 
+  public static void removeRaftServerMetrics(RaftServerImpl raftServer) {
+    String memberId = raftServer.getMemberId().toString();
+    if (metricsMap.containsKey(memberId)) {
+      metricsMap.remove(memberId);
+    }
+  }
+
   private RaftServerMetrics(RaftServerImpl server) {
     registry = getMetricRegistryForRaftServer(server.getMemberId().toString());
     commitInfoCache = server.getCommitInfoCache();