Hello. I found that IgniteConfiguration.utilityCachePoolSize and IgniteConfiguration.marshCachePoolSize are limited by a constant IgniteConfiguration.DFLT_SYSTEM_MAX_THREAD_CNT that is equals to DFLT_PUBLIC_THREAD_CNT and does not used any more.
IgnitionEx:1661: utilityCacheExecSvc = new IgniteThreadPoolExecutor( "utility", cfg.getGridName(), >> myCfg.getUtilityCacheThreadPoolSize(), >> DFLT_SYSTEM_MAX_THREAD_CNT, myCfg.getUtilityCacheKeepAliveTime(), new LinkedBlockingQueue<Runnable>(DFLT_SYSTEM_THREADPOOL_QUEUE_CAP)); marshCacheExecSvc = new IgniteThreadPoolExecutor( "marshaller-cache", cfg.getGridName(), >> myCfg.getMarshallerCacheThreadPoolSize(), >> DFLT_SYSTEM_MAX_THREAD_CNT, myCfg.getMarshallerCacheKeepAliveTime(), new LinkedBlockingQueue<Runnable>(DFLT_SYSTEM_THREADPOOL_QUEUE_CAP)); We can configure these properties more then default limit and catch runtime exception. DFLT_PUBLIC_THREAD_CNT configure default value of IgniteConfiguration.pubPoolSize. I think we should limit these pool sizes by value of IgniteConfiguration.pubPoolSize, f.e.: utilityCacheExecSvc = new IgniteThreadPoolExecutor( "utility", cfg.getGridName(), myCfg.getUtilityCacheThreadPoolSize(), >> myCfg.getPublicThreadPoolSize(), myCfg.getUtilityCacheKeepAliveTime(), new LinkedBlockingQueue<Runnable>(DFLT_SYSTEM_THREADPOOL_QUEUE_CAP)); marshCacheExecSvc = new IgniteThreadPoolExecutor( "marshaller-cache", cfg.getGridName(), myCfg.getMarshallerCacheThreadPoolSize(), >> myCfg.getPublicThreadPoolSize(), myCfg.getMarshallerCacheKeepAliveTime(), new LinkedBlockingQueue<Runnable>(DFLT_SYSTEM_THREADPOOL_QUEUE_CAP)); Thoughts? -- Vasiliy Sisko GridGain Systems www.gridgain.com