This is an automated email from the ASF dual-hosted git repository.
ilyak pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ignite.git
The following commit(s) were added to refs/heads/master by this push:
new 2b6cad5 IGNITE-14505 Print information about a striped pool in local
node metrics - Fixes #8988.
2b6cad5 is described below
commit 2b6cad5f04898eb6ca93a266642f28da18496852
Author: Denis Mekhanikov <[email protected]>
AuthorDate: Mon Apr 19 17:03:59 2021 +0300
IGNITE-14505 Print information about a striped pool in local node metrics -
Fixes #8988.
Signed-off-by: Ilya Kasnacheev <[email protected]>
---
.../org/apache/ignite/internal/IgniteKernal.java | 21 +++++++++++++++------
.../ignite/internal/GridNodeMetricsLogSelfTest.java | 1 +
2 files changed, 16 insertions(+), 6 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 f280ce5..5ad333a 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
@@ -1534,7 +1534,7 @@ public class IgniteKernal implements IgniteEx,
IgniteMXBean, Externalizable {
private final DecimalFormat dblFmt = doubleFormat();
@Override public void run() {
- ackNodeMetrics(dblFmt, execSvc, sysExecSvc,
customExecSvcs);
+ ackNodeMetrics(dblFmt, execSvc, sysExecSvc,
stripedExecSvc, customExecSvcs);
}
}, metricsLogFreq, metricsLogFreq);
}
@@ -1580,19 +1580,26 @@ public class IgniteKernal implements IgniteEx,
IgniteMXBean, Externalizable {
* @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.stripesCount();
+ poolActiveThreads = exec.activeStripesCount();
+ poolQSize = exec.queueSize();
+ }
+
+ int poolIdleThreads = poolSize - poolActiveThreads;
return execSvcName + " [active=" + poolActiveThreads + ", idle=" +
poolIdleThreads + ", qSize=" + poolQSize + "]";
}
@@ -2243,6 +2250,7 @@ public class IgniteKernal implements IgniteEx,
IgniteMXBean, Externalizable {
private void ackNodeMetrics(DecimalFormat dblFmt,
ExecutorService execSvc,
ExecutorService sysExecSvc,
+ ExecutorService stripedExecSvc,
Map<String, ? extends ExecutorService> customExecSvcs
) {
if (!log.isInfoEnabled())
@@ -2321,7 +2329,8 @@ public class IgniteKernal implements IgniteEx,
IgniteMXBean, Externalizable {
.a(dataStorageInfo)
.a(" ^-- Outbound messages queue
[size=").a(m.getOutboundMessagesQueueSize()).a("]").nl()
.a(" ^-- ").a(createExecutorDescription("Public thread
pool", execSvc)).nl()
- .a(" ^-- ").a(createExecutorDescription("System thread
pool", sysExecSvc));
+ .a(" ^-- ").a(createExecutorDescription("System thread
pool", sysExecSvc)).nl()
+ .a(" ^-- ").a(createExecutorDescription("Striped thread
pool", stripedExecSvc));
if (customExecSvcs != null) {
for (Map.Entry<String, ? extends ExecutorService> entry :
customExecSvcs.entrySet())
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 ce1943b..21e6ea9 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
@@ -129,6 +129,7 @@ public class GridNodeMetricsLogSelfTest extends
GridCommonAbstractTest {
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=.*].*"));
}