Source:
<code>private CassandraKeyValueServiceImpl( Logger log, MetricsManager metricsManager, CassandraKeyValueServiceConfig config, CqlClient cqlClient, Supplier<CassandraKeyValueServiceRuntimeConfig> runtimeConfigSupplier, CassandraClientPool clientPool, CassandraMutationTimestampProvider mutationTimestampProvider) { super(createInstrumentedFixedThreadPool( config, metricsManager.getRegistry(), "Atlas Cassandra KVS", "executorService")); this.log = log; this.metricsManager = metricsManager; this.config = config; this.clientPool = clientPool; this.cqlClient = cqlClient; this.mutationTimestampProvider = mutationTimestampProvider; this.queryRunner = new TracingQueryRunner(log, tracingPrefs); this.wrappingQueryRunner = new WrappingQueryRunner(queryRunner); this.cassandraTables = new CassandraTables(clientPool, config); this.taskRunner = new TaskRunner(executor); this.cellLoader = CellLoader.create(clientPool, wrappingQueryRunner, taskRunner, runtimeConfigSupplier); this.asyncCellLoader = AsyncCellLoader.create( cqlClient, <START> createInstrumentedFixedThreadPool( <END> config, metricsManager.getRegistry(), "Atlas Cassandra KVS async", "asyncExecutorService"), config.getKeyspaceOrThrow()); this.rangeLoader = new RangeLoader(clientPool, queryRunner, metricsManager, readConsistency); this.cellValuePutter = new CellValuePutter( config, clientPool, taskRunner, wrappingQueryRunner, mutationTimestampProvider::getSweepSentinelWriteTimestamp); this.checkAndSetRunner = new CheckAndSetRunner(queryRunner); this.tableMetadata = new CassandraTableMetadata(rangeLoader, cassandraTables, clientPool, wrappingQueryRunner); this.cassandraTableCreator = new CassandraTableCreator(clientPool, config); this.cassandraTableTruncator = new CassandraTableTruncator(queryRunner, clientPool); this.cassandraTableDropper = new CassandraTableDropper(config, clientPool, tableMetadata, cassandraTableTruncator); }</code><technical_language>I feel inject this threadpool, internal product instantiates a lot of want reuse threadpool</technical_language>

Target:
private CassandraKeyValueServiceImpl( Logger log, MetricsManager metricsManager, CassandraKeyValueServiceConfig config, CqlClient cqlClient, Supplier<CassandraKeyValueServiceRuntimeConfig> runtimeConfigSupplier, CassandraClientPool clientPool, CassandraMutationTimestampProvider mutationTimestampProvider) { super(createInstrumentedFixedThreadPool( config.poolSize() * config.servers().numberOfThriftHosts(), metricsManager.getRegistry() )); this.log = log; this.metricsManager = metricsManager; this.config = config; this.clientPool = clientPool; this.cqlClient = cqlClient; this.mutationTimestampProvider = mutationTimestampProvider; this.queryRunner = new TracingQueryRunner(log, tracingPrefs); this.wrappingQueryRunner = new WrappingQueryRunner(queryRunner); this.cassandraTables = new CassandraTables(clientPool, config); this.taskRunner = new TaskRunner(executor); this.cqlFuturesCombiner = new DefaultCqlFuturesCombiner(createInstrumentedDynamicThreadPool( 0, config.poolSize() * config.servers().numberOfThriftHosts(), metricsManager.getRegistry(), "Atlas Cassandra KVS async", "asyncExecutorService")); this.cellLoader = CellLoader.create(clientPool, wrappingQueryRunner, taskRunner, runtimeConfigSupplier); this.asyncCellLoader = AsyncCellLoader.create(cqlClient, cqlFuturesCombiner, config.getKeyspaceOrThrow()); this.rangeLoader = new RangeLoader(clientPool, queryRunner, metricsManager, readConsistency); this.cellValuePutter = new CellValuePutter( config, clientPool, taskRunner, wrappingQueryRunner, mutationTimestampProvider::getSweepSentinelWriteTimestamp); this.checkAndSetRunner = new CheckAndSetRunner(queryRunner); this.tableMetadata = new CassandraTableMetadata(rangeLoader, cassandraTables, clientPool, wrappingQueryRunner); this.cassandraTableCreator = new CassandraTableCreator(clientPool, config); this.cassandraTableTruncator = new CassandraTableTruncator(queryRunner, clientPool); this.cassandraTableDropper = new CassandraTableDropper(config, clientPool, tableMetadata, cassandraTableTruncator); }