IGNITE-7508: Fix contention on system property access in GridKernalContextImpl::isDae...
authorAndrey V. Mashenkov <andrey.mashenkov@gmail.com>
Wed, 7 Feb 2018 15:25:25 +0000 (18:25 +0300)
committerAndrey V. Mashenkov <andrey.mashenkov@gmail.com>
Wed, 7 Feb 2018 15:25:25 +0000 (18:25 +0300)
modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java

index 3f064fa..aaf2e8f 100644 (file)
@@ -34,6 +34,7 @@ import java.util.concurrent.ExecutorService;
 import org.apache.ignite.IgniteCheckedException;
 import org.apache.ignite.IgniteException;
 import org.apache.ignite.IgniteLogger;
+import org.apache.ignite.IgniteSystemProperties;
 import org.apache.ignite.cluster.ClusterNode;
 import org.apache.ignite.configuration.IgniteConfiguration;
 import org.apache.ignite.internal.managers.checkpoint.GridCheckpointManager;
@@ -597,7 +598,7 @@ public class GridKernalContextImpl implements GridKernalContext, Externalizable
         else if (comp instanceof GridInternalSubscriptionProcessor)
             internalSubscriptionProc = (GridInternalSubscriptionProcessor)comp;
         else if (!(comp instanceof DiscoveryNodeValidationProcessor
-                || comp instanceof PlatformPluginProcessor))
+            || comp instanceof PlatformPluginProcessor))
             assert (comp instanceof GridPluginComponent) : "Unknown manager class: " + comp.getClass();
 
         if (addToList)
@@ -623,15 +624,19 @@ public class GridKernalContextImpl implements GridKernalContext, Externalizable
         return ((IgniteKernal)grid).isStopping();
     }
 
+    /** */
+    @Nullable private ClusterNode localNode() {
+        if (locNode == null && discoMgr != null)
+            locNode = discoMgr.localNode();
+
+        return locNode;
+    }
+
     /** {@inheritDoc} */
     @Override public UUID localNodeId() {
-        if (locNode != null)
-            return locNode.id();
+        ClusterNode locNode0 = localNode();
 
-        if (discoMgr != null)
-            locNode = discoMgr.localNode();
-
-        return locNode != null ? locNode.id() : config().getNodeId();
+        return locNode0 != null ? locNode0.id() : config().getNodeId();
     }
 
     /** {@inheritDoc} */
@@ -886,7 +891,10 @@ public class GridKernalContextImpl implements GridKernalContext, Externalizable
 
     /** {@inheritDoc} */
     @Override public boolean isDaemon() {
-        return config().isDaemon() || "true".equalsIgnoreCase(System.getProperty(IGNITE_DAEMON));
+        ClusterNode locNode0 = localNode();
+
+        return locNode0 != null ? locNode0.isDaemon() :
+            (config().isDaemon() || IgniteSystemProperties.getBoolean(IGNITE_DAEMON));
     }
 
     /** {@inheritDoc} */
@@ -1068,10 +1076,9 @@ public class GridKernalContextImpl implements GridKernalContext, Externalizable
 
     /** {@inheritDoc} */
     @Override public boolean clientDisconnected() {
-        if (locNode == null)
-            locNode = discoMgr != null ? discoMgr.localNode() : null;
+        ClusterNode locNode0 = localNode();
 
-        return locNode != null ? (locNode.isClient() && disconnected) : false;
+        return locNode0 != null ? (locNode0.isClient() && disconnected) : false;
     }
 
     /** {@inheritDoc} */
@@ -1091,7 +1098,7 @@ public class GridKernalContextImpl implements GridKernalContext, Externalizable
         this.disconnected = disconnected;
     }
 
-    /**{@inheritDoc}*/
+    /** {@inheritDoc} */
     @Override public PdsFoldersResolver pdsFolderResolver() {
         return pdsFolderRslvr;
     }
index e637a6b..d0c8364 100644 (file)
@@ -2408,7 +2408,7 @@ public class IgniteKernal implements IgniteEx, IgniteMXBean, Externalizable {
     private boolean isDaemon() {
         assert cfg != null;
 
-        return cfg.isDaemon() || "true".equalsIgnoreCase(System.getProperty(IGNITE_DAEMON));
+        return cfg.isDaemon() || IgniteSystemProperties.getBoolean(IGNITE_DAEMON);
     }
 
     /**