Description
a) The batch pool may not be assigned a value in the ConnectionImpl’s construction.
b) The meta pool always be null in the ConnectionImpl’s construction.
For reasons outlined above, the NPE may happen in MetricsConnection’s construction
final ThreadPoolExecutor batchPool = (ThreadPoolExecutor) conn.getCurrentBatchPool(); final ThreadPoolExecutor metaPool = (ThreadPoolExecutor) conn.getCurrentMetaLookupPool(); this.registry.register(name(this.getClass(), "executorPoolActiveThreads", scope), new RatioGauge() { @Override protected Ratio getRatio() { return Ratio.of(batchPool.getActiveCount(), batchPool.getMaximumPoolSize()); } }); this.registry.register(name(this.getClass(), "metaPoolActiveThreads", scope), new RatioGauge() { @Override protected Ratio getRatio() { return Ratio.of(metaPool.getActiveCount(), metaPool.getMaximumPoolSize()); } });