From 712038fe92a8042acb675dcdf3a08789e0fe39af Mon Sep 17 00:00:00 2001 From: Denis Mekhanikov Date: Fri, 2 Aug 2019 21:24:52 +0300 Subject: [PATCH] GG-22320 Print information about a striped pool in local node metrics. --- .../apache/ignite/internal/IgniteKernal.java | 23 +++++++++++++------ .../internal/GridNodeMetricsLogSelfTest.java | 1 + 2 files changed, 17 insertions(+), 7 deletions(-) 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 b474d9f08863a..30d7a9185cb53 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 @@ -166,8 +166,8 @@ import org.apache.ignite.internal.processors.resource.GridSpringResourceContext; import org.apache.ignite.internal.processors.rest.GridRestProcessor; import org.apache.ignite.internal.processors.security.GridSecurityProcessor; -import org.apache.ignite.internal.processors.security.IgniteSecurity; import org.apache.ignite.internal.processors.security.IgniteSecurityProcessor; +import org.apache.ignite.internal.processors.security.IgniteSecurity; import org.apache.ignite.internal.processors.security.NoOpIgniteSecurityProcessor; import org.apache.ignite.internal.processors.segmentation.GridSegmentationProcessor; import org.apache.ignite.internal.processors.service.GridServiceProcessor; @@ -1390,7 +1390,7 @@ private long checkPoolStarvation( private final DecimalFormat dblFmt = new DecimalFormat("#.##"); @Override public void run() { - ackNodeMetrics(dblFmt, execSvc, sysExecSvc, customExecSvcs); + ackNodeMetrics(dblFmt, execSvc, sysExecSvc, stripedExecSvc, customExecSvcs); } }, metricsLogFreq, metricsLogFreq); } @@ -1447,19 +1447,26 @@ private GridProcessor securityProcessor() throws IgniteCheckedException { * @param execSvc service to create a description for */ private String createExecutorDescription(String execSvcName, ExecutorService execSvc) { + int poolSize = 0; int poolActiveThreads = 0; - int poolIdleThreads = 0; int poolQSize = 0; if (execSvc instanceof ThreadPoolExecutor) { ThreadPoolExecutor exec = (ThreadPoolExecutor)execSvc; - int poolSize = exec.getPoolSize(); - + poolSize = exec.getPoolSize(); poolActiveThreads = Math.min(poolSize, exec.getActiveCount()); - poolIdleThreads = poolSize - poolActiveThreads; poolQSize = exec.getQueue().size(); } + else if (execSvc instanceof StripedExecutor) { + StripedExecutor exec = (StripedExecutor) execSvc; + + poolSize = exec.stripes(); + poolActiveThreads = exec.activeStripesCount(); + poolQSize = exec.queueSize(); + } + + int poolIdleThreads = poolSize - poolActiveThreads; return execSvcName + " [active=" + poolActiveThreads + ", idle=" + poolIdleThreads + ", qSize=" + poolQSize + "]"; } @@ -2164,6 +2171,7 @@ private void ackLanguageRuntime() { private void ackNodeMetrics(DecimalFormat dblFmt, ExecutorService execSvc, ExecutorService sysExecSvc, + ExecutorService stripedExecSvc, Map customExecSvcs ) { if (!log.isInfoEnabled()) @@ -2291,7 +2299,8 @@ private void ackNodeMetrics(DecimalFormat dblFmt, pdsInfo + " ^-- Outbound messages queue [size=" + m.getOutboundMessagesQueueSize() + "]" + NL + " ^-- " + createExecutorDescription("Public thread pool", execSvc) + NL + - " ^-- " + createExecutorDescription("System thread pool", sysExecSvc); + " ^-- " + createExecutorDescription("System thread pool", sysExecSvc) + NL + + " ^-- " + createExecutorDescription("Striped thread pool", stripedExecSvc); if (customExecSvcs != null) { StringBuilder customSvcsMsg = new StringBuilder(); diff --git a/modules/core/src/test/java/org/apache/ignite/internal/GridNodeMetricsLogSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/GridNodeMetricsLogSelfTest.java index 784ee7f30fc37..29ddd8c3fcab2 100644 --- a/modules/core/src/test/java/org/apache/ignite/internal/GridNodeMetricsLogSelfTest.java +++ b/modules/core/src/test/java/org/apache/ignite/internal/GridNodeMetricsLogSelfTest.java @@ -117,6 +117,7 @@ protected void checkNodeMetricsFormat(String fullLog) { assertTrue(msg, fullLog.matches("(?s).*Outbound messages queue \\[size=.*].*")); assertTrue(msg, fullLog.matches("(?s).*Public thread pool \\[active=.*, idle=.*, qSize=.*].*")); assertTrue(msg, fullLog.matches("(?s).*System thread pool \\[active=.*, idle=.*, qSize=.*].*")); + assertTrue(msg, fullLog.matches("(?s).*Striped thread pool \\[active=.*, idle=.*, qSize=.*].*")); assertTrue(msg, fullLog.matches("(?s).*" + CUSTOM_EXECUTOR_0 + " \\[active=.*, idle=.*, qSize=.*].*")); assertTrue(msg, fullLog.matches("(?s).*" + CUSTOM_EXECUTOR_1 + " \\[active=.*, idle=.*, qSize=.*].*")); }