소스 검색

Simplify AbstractFileWatchingService (#96191)

We can use built in cluster state methods to check if we're master,
also no need to repeatedly enter a synchronized method if we're not master
and also were not the master in the previous state.
Armin Braun 2 년 전
부모
커밋
240eb33604

+ 5 - 13
server/src/main/java/org/elasticsearch/common/file/AbstractFileWatchingService.java

@@ -133,7 +133,11 @@ public abstract class AbstractFileWatchingService extends AbstractLifecycleCompo
     @Override
     public final void clusterChanged(ClusterChangedEvent event) {
         ClusterState clusterState = event.state();
-        startIfMaster(clusterState);
+        if (clusterState.nodes().isLocalNodeElectedMaster()) {
+            startWatcher(clusterState);
+        } else if (event.previousState().nodes().isLocalNodeElectedMaster()) {
+            stopWatcher();
+        }
     }
 
     @Override
@@ -180,18 +184,6 @@ public abstract class AbstractFileWatchingService extends AbstractLifecycleCompo
         return (previousUpdateState == null || previousUpdateState.equals(fileUpdateState) == false);
     }
 
-    protected final boolean currentNodeMaster(ClusterState clusterState) {
-        return clusterState.nodes().getLocalNodeId().equals(clusterState.nodes().getMasterNodeId());
-    }
-
-    private void startIfMaster(ClusterState clusterState) {
-        if (currentNodeMaster(clusterState)) {
-            startWatcher(clusterState);
-        } else {
-            stopWatcher();
-        }
-    }
-
     private synchronized void startWatcher(ClusterState clusterState) {
         if (watching() || active == false) {
             refreshExistingFileStateIfNeeded(clusterState);

+ 1 - 1
server/src/main/java/org/elasticsearch/reservedstate/service/FileSettingsService.java

@@ -71,7 +71,7 @@ public class FileSettingsService extends AbstractFileWatchingService {
      * @param mdBuilder the current metadata builder for the new cluster state
      */
     public void handleSnapshotRestore(ClusterState clusterState, Metadata.Builder mdBuilder) {
-        assert currentNodeMaster(clusterState);
+        assert clusterState.nodes().isLocalNodeElectedMaster();
 
         ReservedStateMetadata fileSettingsMetadata = clusterState.metadata().reservedStateMetadata().get(NAMESPACE);