IGNITE-7508: Fix contention on system property access in 
GridKernalContextImpl::isDaemon(). This closes #3468.


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

Branch: refs/heads/ignite-7485-2
Commit: d2b41a08e2f6ce2913607f0fa13aa4993b801798
Parents: 63f6b1f
Author: Andrey V. Mashenkov <andrey.mashen...@gmail.com>
Authored: Wed Feb 7 18:25:25 2018 +0300
Committer: Andrey V. Mashenkov <andrey.mashen...@gmail.com>
Committed: Wed Feb 7 18:25:25 2018 +0300

----------------------------------------------------------------------
 .../ignite/internal/GridKernalContextImpl.java  | 31 ++++++++++++--------
 .../apache/ignite/internal/IgniteKernal.java    |  2 +-
 2 files changed, 20 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/d2b41a08/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
index 3f064fa..aaf2e8f 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/GridKernalContextImpl.java
@@ -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;
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/d2b41a08/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
----------------------------------------------------------------------
diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java 
b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
index e637a6b..d0c8364 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/IgniteKernal.java
@@ -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);
     }
 
     /**

Reply via email to