[jira] [Updated] (IGNITE-12085) ThreadPool metrics register after all components start
[ https://issues.apache.org/jira/browse/IGNITE-12085?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Aleksey Plekhanov updated IGNITE-12085: --- Fix Version/s: 2.9 > ThreadPool metrics register after all components start > -- > > Key: IGNITE-12085 > URL: https://issues.apache.org/jira/browse/IGNITE-12085 > Project: Ignite > Issue Type: Improvement >Reporter: Nikolay Izhikov >Assignee: Mikhail Petrov >Priority: Major > Labels: IEP-35, await > Fix For: 2.9 > > Time Spent: 20m > Remaining Estimate: 0h > > For now, thread pool metrics register after all {{GridComponent}} starts. > But there are specific scenarios when some component blocks {{onKernalStart}} > execution for a long time. {{GridCacheProcessor}} can be taken as an example. > This leads to the situation when some metric info is lost. > Seems, we can register thread pool metrics right after only **required** > components are started and don't wait for all components. > {code:java} > // Callbacks. > for (GridComponent comp : ctx) { > comp.onKernalStart(active); > } > // Start plugins. > for (PluginProvider provider : ctx.plugins().allProviders()) > provider.onIgniteStart(); > ctx.metric().registerThreadPools(utilityCachePool, execSvc, > svcExecSvc, sysExecSvc, stripedExecSvc, > p2pExecSvc, mgmtExecSvc, igfsExecSvc, dataStreamExecSvc, > restExecSvc, affExecSvc, idxExecSvc, > callbackExecSvc, qryExecSvc, schemaExecSvc, rebalanceExecSvc, > rebalanceStripedExecSvc, customExecSvcs); > // Register MBeans. > mBeansMgr.registerAllMBeans(utilityCachePool, execSvc, > svcExecSvc, sysExecSvc, stripedExecSvc, p2pExecSvc, > mgmtExecSvc, igfsExecSvc, dataStreamExecSvc, restExecSvc, > affExecSvc, idxExecSvc, callbackExecSvc, > qryExecSvc, schemaExecSvc, rebalanceExecSvc, > rebalanceStripedExecSvc, customExecSvcs, ctx.workersRegistry()); > {code} > {code:java} > public class GridCacheProcessor { > @Override public void onKernalStart(boolean active) throws > IgniteCheckedException { > //. > final List syncFuts = new > ArrayList<>(caches.size()); > sharedCtx.forAllCaches(new CIX1() { > @Override public void applyx(GridCacheContext cctx) { > CacheConfiguration cfg = cctx.config(); > if (cctx.affinityNode() && > cfg.getRebalanceMode() == SYNC && > startTopVer.equals(cctx.startTopologyVersion())) { > CacheMode cacheMode = cfg.getCacheMode(); > if (cacheMode == REPLICATED || (cacheMode == PARTITIONED > && cfg.getRebalanceDelay() >= 0)) > // Need to wait outside to avoid a deadlock > syncFuts.add(cctx.preloader().syncFuture()); > } > } > }); > for (int i = 0, size = syncFuts.size(); i < size; i++) > syncFuts.get(i).get(); > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Updated] (IGNITE-12085) ThreadPool metrics register after all components start
[ https://issues.apache.org/jira/browse/IGNITE-12085?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Maxim Muzafarov updated IGNITE-12085: - Fix Version/s: (was: 2.8) > ThreadPool metrics register after all components start > -- > > Key: IGNITE-12085 > URL: https://issues.apache.org/jira/browse/IGNITE-12085 > Project: Ignite > Issue Type: Improvement >Reporter: Nikolay Izhikov >Priority: Major > Labels: IEP-35, await > > For now, thread pool metrics register after all {{GridComponent}} starts. > But there are specific scenarios when some component blocks {{onKernalStart}} > execution for a long time. {{GridCacheProcessor}} can be taken as an example. > This leads to the situation when some metric info is lost. > Seems, we can register thread pool metrics right after only **required** > components are started and don't wait for all components. > {code:java} > // Callbacks. > for (GridComponent comp : ctx) { > comp.onKernalStart(active); > } > // Start plugins. > for (PluginProvider provider : ctx.plugins().allProviders()) > provider.onIgniteStart(); > ctx.metric().registerThreadPools(utilityCachePool, execSvc, > svcExecSvc, sysExecSvc, stripedExecSvc, > p2pExecSvc, mgmtExecSvc, igfsExecSvc, dataStreamExecSvc, > restExecSvc, affExecSvc, idxExecSvc, > callbackExecSvc, qryExecSvc, schemaExecSvc, rebalanceExecSvc, > rebalanceStripedExecSvc, customExecSvcs); > // Register MBeans. > mBeansMgr.registerAllMBeans(utilityCachePool, execSvc, > svcExecSvc, sysExecSvc, stripedExecSvc, p2pExecSvc, > mgmtExecSvc, igfsExecSvc, dataStreamExecSvc, restExecSvc, > affExecSvc, idxExecSvc, callbackExecSvc, > qryExecSvc, schemaExecSvc, rebalanceExecSvc, > rebalanceStripedExecSvc, customExecSvcs, ctx.workersRegistry()); > {code} > {code:java} > public class GridCacheProcessor { > @Override public void onKernalStart(boolean active) throws > IgniteCheckedException { > //. > final List syncFuts = new > ArrayList<>(caches.size()); > sharedCtx.forAllCaches(new CIX1() { > @Override public void applyx(GridCacheContext cctx) { > CacheConfiguration cfg = cctx.config(); > if (cctx.affinityNode() && > cfg.getRebalanceMode() == SYNC && > startTopVer.equals(cctx.startTopologyVersion())) { > CacheMode cacheMode = cfg.getCacheMode(); > if (cacheMode == REPLICATED || (cacheMode == PARTITIONED > && cfg.getRebalanceDelay() >= 0)) > // Need to wait outside to avoid a deadlock > syncFuts.add(cctx.preloader().syncFuture()); > } > } > }); > for (int i = 0, size = syncFuts.size(); i < size; i++) > syncFuts.get(i).get(); > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Updated] (IGNITE-12085) ThreadPool metrics register after all components start
[ https://issues.apache.org/jira/browse/IGNITE-12085?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Maxim Muzafarov updated IGNITE-12085: - Labels: IEP-35 await (was: IEP-35) > ThreadPool metrics register after all components start > -- > > Key: IGNITE-12085 > URL: https://issues.apache.org/jira/browse/IGNITE-12085 > Project: Ignite > Issue Type: Improvement >Reporter: Nikolay Izhikov >Priority: Major > Labels: IEP-35, await > Fix For: 2.8 > > > For now, thread pool metrics register after all {{GridComponent}} starts. > But there are specific scenarios when some component blocks {{onKernalStart}} > execution for a long time. {{GridCacheProcessor}} can be taken as an example. > This leads to the situation when some metric info is lost. > Seems, we can register thread pool metrics right after only **required** > components are started and don't wait for all components. > {code:java} > // Callbacks. > for (GridComponent comp : ctx) { > comp.onKernalStart(active); > } > // Start plugins. > for (PluginProvider provider : ctx.plugins().allProviders()) > provider.onIgniteStart(); > ctx.metric().registerThreadPools(utilityCachePool, execSvc, > svcExecSvc, sysExecSvc, stripedExecSvc, > p2pExecSvc, mgmtExecSvc, igfsExecSvc, dataStreamExecSvc, > restExecSvc, affExecSvc, idxExecSvc, > callbackExecSvc, qryExecSvc, schemaExecSvc, rebalanceExecSvc, > rebalanceStripedExecSvc, customExecSvcs); > // Register MBeans. > mBeansMgr.registerAllMBeans(utilityCachePool, execSvc, > svcExecSvc, sysExecSvc, stripedExecSvc, p2pExecSvc, > mgmtExecSvc, igfsExecSvc, dataStreamExecSvc, restExecSvc, > affExecSvc, idxExecSvc, callbackExecSvc, > qryExecSvc, schemaExecSvc, rebalanceExecSvc, > rebalanceStripedExecSvc, customExecSvcs, ctx.workersRegistry()); > {code} > {code:java} > public class GridCacheProcessor { > @Override public void onKernalStart(boolean active) throws > IgniteCheckedException { > //. > final List syncFuts = new > ArrayList<>(caches.size()); > sharedCtx.forAllCaches(new CIX1() { > @Override public void applyx(GridCacheContext cctx) { > CacheConfiguration cfg = cctx.config(); > if (cctx.affinityNode() && > cfg.getRebalanceMode() == SYNC && > startTopVer.equals(cctx.startTopologyVersion())) { > CacheMode cacheMode = cfg.getCacheMode(); > if (cacheMode == REPLICATED || (cacheMode == PARTITIONED > && cfg.getRebalanceDelay() >= 0)) > // Need to wait outside to avoid a deadlock > syncFuts.add(cctx.preloader().syncFuture()); > } > } > }); > for (int i = 0, size = syncFuts.size(); i < size; i++) > syncFuts.get(i).get(); > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)
[jira] [Updated] (IGNITE-12085) ThreadPool metrics register after all components start
[ https://issues.apache.org/jira/browse/IGNITE-12085?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nikolay Izhikov updated IGNITE-12085: - Fix Version/s: 2.8 > ThreadPool metrics register after all components start > -- > > Key: IGNITE-12085 > URL: https://issues.apache.org/jira/browse/IGNITE-12085 > Project: Ignite > Issue Type: Improvement >Reporter: Nikolay Izhikov >Priority: Major > Labels: IEP-35 > Fix For: 2.8 > > > For now, thread pool metrics register after all {{GridComponent}} starts. > But there are specific scenarios when some component blocks {{onKernalStart}} > execution for a long time. {{GridCacheProcessor}} can be taken as an example. > This leads to the situation when some metric info is lost. > Seems, we can register thread pool metrics right after only **required** > components are started and don't wait for all components. > {code:java} > // Callbacks. > for (GridComponent comp : ctx) { > comp.onKernalStart(active); > } > // Start plugins. > for (PluginProvider provider : ctx.plugins().allProviders()) > provider.onIgniteStart(); > ctx.metric().registerThreadPools(utilityCachePool, execSvc, > svcExecSvc, sysExecSvc, stripedExecSvc, > p2pExecSvc, mgmtExecSvc, igfsExecSvc, dataStreamExecSvc, > restExecSvc, affExecSvc, idxExecSvc, > callbackExecSvc, qryExecSvc, schemaExecSvc, rebalanceExecSvc, > rebalanceStripedExecSvc, customExecSvcs); > // Register MBeans. > mBeansMgr.registerAllMBeans(utilityCachePool, execSvc, > svcExecSvc, sysExecSvc, stripedExecSvc, p2pExecSvc, > mgmtExecSvc, igfsExecSvc, dataStreamExecSvc, restExecSvc, > affExecSvc, idxExecSvc, callbackExecSvc, > qryExecSvc, schemaExecSvc, rebalanceExecSvc, > rebalanceStripedExecSvc, customExecSvcs, ctx.workersRegistry()); > {code} > {code:java} > public class GridCacheProcessor { > @Override public void onKernalStart(boolean active) throws > IgniteCheckedException { > //. > final List syncFuts = new > ArrayList<>(caches.size()); > sharedCtx.forAllCaches(new CIX1() { > @Override public void applyx(GridCacheContext cctx) { > CacheConfiguration cfg = cctx.config(); > if (cctx.affinityNode() && > cfg.getRebalanceMode() == SYNC && > startTopVer.equals(cctx.startTopologyVersion())) { > CacheMode cacheMode = cfg.getCacheMode(); > if (cacheMode == REPLICATED || (cacheMode == PARTITIONED > && cfg.getRebalanceDelay() >= 0)) > // Need to wait outside to avoid a deadlock > syncFuts.add(cctx.preloader().syncFuture()); > } > } > }); > for (int i = 0, size = syncFuts.size(); i < size; i++) > syncFuts.get(i).get(); > {code} -- This message was sent by Atlassian Jira (v8.3.4#803005)