You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by ag...@apache.org on 2017/04/25 17:11:05 UTC
ignite git commit: IGNITE-5024 - Unregister memory MX beans on node
stop
Repository: ignite
Updated Branches:
refs/heads/ignite-5024 b4034f83d -> 543912b7c
IGNITE-5024 - Unregister memory MX beans on node stop
Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/543912b7
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/543912b7
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/543912b7
Branch: refs/heads/ignite-5024
Commit: 543912b7c0a7732cf00a9ab80e30a383ad59e975
Parents: b4034f8
Author: Alexey Goncharuk <al...@gmail.com>
Authored: Tue Apr 25 20:11:32 2017 +0300
Committer: Alexey Goncharuk <al...@gmail.com>
Committed: Tue Apr 25 20:11:58 2017 +0300
----------------------------------------------------------------------
.../IgniteCacheDatabaseSharedManager.java | 107 ++++++++++---------
1 file changed, 55 insertions(+), 52 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ignite/blob/543912b7/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteCacheDatabaseSharedManager.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteCacheDatabaseSharedManager.java b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteCacheDatabaseSharedManager.java
index 2ff4471..4032d1e 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteCacheDatabaseSharedManager.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/processors/cache/database/IgniteCacheDatabaseSharedManager.java
@@ -52,8 +52,11 @@ import org.apache.ignite.internal.processors.cache.database.freelist.FreeList;
import org.apache.ignite.internal.processors.cache.database.freelist.FreeListImpl;
import org.apache.ignite.internal.processors.cache.database.tree.reuse.ReuseList;
import org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture;
+import org.apache.ignite.internal.util.typedef.C1;
+import org.apache.ignite.internal.util.typedef.F;
import org.apache.ignite.internal.util.typedef.internal.U;
import org.apache.ignite.internal.processors.cluster.IgniteChangeGlobalStateSupport;
+import org.apache.ignite.lang.IgniteClosure;
import org.apache.ignite.mxbean.MemoryMetricsMXBean;
import org.jetbrains.annotations.Nullable;
@@ -71,9 +74,6 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap
protected Map<String, MemoryPolicy> memPlcMap;
/** */
- protected Map<String, MemoryMetrics> memMetricsMap;
-
- /** */
protected MemoryPolicy dfltMemPlc;
/** */
@@ -85,6 +85,13 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap
/** */
private int pageSize;
+ /** */
+ private static final IgniteClosure<MemoryPolicy, MemoryMetrics> PLC_TO_METRICS = new C1<MemoryPolicy, MemoryMetrics>() {
+ @Override public MemoryMetrics apply(MemoryPolicy memPlc) {
+ return memPlc.memoryMetrics();
+ }
+ };
+
/** {@inheritDoc} */
@Override protected void start0() throws IgniteCheckedException {
if (cctx.kernalContext().clientNode() && cctx.kernalContext().config().getMemoryConfiguration() == null)
@@ -126,7 +133,7 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap
for (MemoryPolicy memPlc : memPlcMap.values()) {
MemoryPolicyConfiguration memPlcCfg = memPlc.config();
- MemoryMetricsImpl memMetrics = (MemoryMetricsImpl) memMetricsMap.get(memPlcCfg.getName());
+ MemoryMetricsImpl memMetrics = (MemoryMetricsImpl)memPlcMap.get(memPlcCfg.getName()).memoryMetrics();
FreeListImpl freeList = new FreeListImpl(0,
cctx.igniteInstanceName(),
@@ -164,75 +171,66 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap
}
/**
- * @param dbCfg Database config.
+ * @param memCfg Database config.
*/
- protected void initPageMemoryPolicies(MemoryConfiguration dbCfg) {
- MemoryPolicyConfiguration[] memPlcsCfgs = dbCfg.getMemoryPolicies();
+ protected void initPageMemoryPolicies(MemoryConfiguration memCfg) {
+ MemoryPolicyConfiguration[] memPlcsCfgs = memCfg.getMemoryPolicies();
if (memPlcsCfgs == null) {
//reserve place for default and system memory policies
memPlcMap = U.newHashMap(2);
- memMetricsMap = U.newHashMap(2);
-
- MemoryPolicyConfiguration dfltPlcCfg = dbCfg.createDefaultPolicyConfig();
+ MemoryPolicyConfiguration dfltPlcCfg = memCfg.createDefaultPolicyConfig();
- MemoryMetricsImpl memMetrics = new MemoryMetricsImpl(dfltPlcCfg);
+ dfltMemPlc = initMemoryPolicy(dfltPlcCfg, memCfg);
- registerMetricsMBean(memMetrics);
-
- dfltMemPlc = createDefaultMemoryPolicy(dbCfg, dfltPlcCfg, memMetrics);
-
- memPlcMap.put(null, dfltMemPlc);
- memMetricsMap.put(null, memMetrics);
-
- log.warning("No user-defined default MemoryPolicy found; system default of 1GB size will be used.");
+ U.warn(log, "No user-defined default MemoryPolicy found; system default of 1GB size will be used.");
}
else {
- String dfltMemPlcName = dbCfg.getDefaultMemoryPolicyName();
+ String dfltMemPlcName = memCfg.getDefaultMemoryPolicyName();
if (dfltMemPlcName == null) {
//reserve additional place for default and system memory policies
memPlcMap = U.newHashMap(memPlcsCfgs.length + 2);
- memMetricsMap = U.newHashMap(memPlcsCfgs.length + 2);
-
- MemoryPolicyConfiguration dfltPlcCfg = dbCfg.createDefaultPolicyConfig();
- MemoryMetricsImpl memMetrics = new MemoryMetricsImpl(dfltPlcCfg);
+ MemoryPolicyConfiguration dfltPlcCfg = memCfg.createDefaultPolicyConfig();
- dfltMemPlc = createDefaultMemoryPolicy(dbCfg, dfltPlcCfg, memMetrics);
- memPlcMap.put(null, dfltMemPlc);
- memMetricsMap.put(null, memMetrics);
+ dfltMemPlc = initMemoryPolicy(dfltPlcCfg, memCfg);
- log.warning("No user-defined default MemoryPolicy found; system default of 1GB size will be used.");
+ U.warn(log, "No user-defined default MemoryPolicy found; system default of 1GB size will be used.");
}
- else {
+ else
//reserve additional place for system memory policy only
memPlcMap = U.newHashMap(memPlcsCfgs.length + 1);
- memMetricsMap = U.newHashMap(memPlcsCfgs.length + 1);
- }
for (MemoryPolicyConfiguration memPlcCfg : memPlcsCfgs) {
- MemoryMetricsImpl memMetrics = new MemoryMetricsImpl(memPlcCfg);
-
- MemoryPolicy memPlc = initMemory(dbCfg, memPlcCfg, memMetrics);
-
- memPlcMap.put(memPlcCfg.getName(), memPlc);
-
- memMetricsMap.put(memPlcCfg.getName(), memMetrics);
+ MemoryPolicy memPlc = initMemoryPolicy(memPlcCfg, memCfg);
if (memPlcCfg.getName().equals(dfltMemPlcName))
dfltMemPlc = memPlc;
}
}
- MemoryPolicyConfiguration sysPlcCfg = createSystemMemoryPolicy(dbCfg.getSystemCacheMemorySize());
+ MemoryPolicyConfiguration sysPlcCfg = createSystemMemoryPolicy(memCfg.getSystemCacheMemorySize());
+
+ initMemoryPolicy(sysPlcCfg, memCfg);
+ }
+
+ /**
+ * @param plcCfg Policy configuration.
+ * @param memCfg Memory configuration.
+ * @return Initialized memory policy.
+ */
+ private MemoryPolicy initMemoryPolicy(MemoryPolicyConfiguration plcCfg, MemoryConfiguration memCfg) {
+ MemoryMetricsImpl sysMemMetrics = new MemoryMetricsImpl(plcCfg);
+
+ MemoryPolicy plc = initMemory(memCfg, plcCfg, sysMemMetrics);
- MemoryMetricsImpl sysMemMetrics = new MemoryMetricsImpl(sysPlcCfg);
+ memPlcMap.put(plcCfg.getName(), plc);
- memPlcMap.put(SYSTEM_MEMORY_POLICY_NAME, initMemory(dbCfg, sysPlcCfg, sysMemMetrics));
+ registerMetricsMBean(sysMemMetrics);
- memMetricsMap.put(SYSTEM_MEMORY_POLICY_NAME, sysMemMetrics);
+ return plc;
}
/**
@@ -256,15 +254,6 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap
}
/**
- * @param dbCfg Database configuration.
- * @param memPlcCfg MemoryPolicy configuration.
- * @param memMetrics MemoryMetrics instance.
- */
- private MemoryPolicy createDefaultMemoryPolicy(MemoryConfiguration dbCfg, MemoryPolicyConfiguration memPlcCfg, MemoryMetricsImpl memMetrics) {
- return initMemory(dbCfg, memPlcCfg, memMetrics);
- }
-
- /**
* @param sysCacheMemSize size of PageMemory to be created for system cache.
*/
private MemoryPolicyConfiguration createSystemMemoryPolicy(long sysCacheMemSize) {
@@ -428,7 +417,7 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap
* @return MemoryMetrics for all MemoryPolicies configured in Ignite instance.
*/
public Collection<MemoryMetrics> memoryMetrics() {
- return memMetricsMap != null ? memMetricsMap.values() : null;
+ return memPlcMap != null ? F.viewReadOnly(memPlcMap.values(), PLC_TO_METRICS) : null;
}
/**
@@ -480,6 +469,20 @@ public class IgniteCacheDatabaseSharedManager extends GridCacheSharedManagerAdap
memPlc.pageMemory().stop();
memPlc.evictionTracker().stop();
+
+ IgniteConfiguration cfg = cctx.gridConfig();
+
+ try {
+ cfg.getMBeanServer().unregisterMBean(
+ U.makeMBeanName(
+ cfg.getIgniteInstanceName(),
+ "MemoryMetrics",
+ memPlc.memoryMetrics().getName()));
+ }
+ catch (JMException e) {
+ U.error(log, "Failed to unregister MBean for memory metrics: " +
+ memPlc.memoryMetrics().getName(), e);
+ }
}
}
}