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); } /**