Details
-
Improvement
-
Status: Resolved
-
Normal
-
Resolution: Fixed
-
None
-
Quality Assurance
-
Normal
-
All
-
None
-
Description
To support CEP-10 it is necessary to support alternative executor implementations that may be externally controlled. This ticket introduces an ExecutorFactory, and all executor creation is migrated to this facility. The codebase’s use of executors is inconsistent, and relatedly there are divergent Future APIs in use, with Netty, Guava and Java APIs in use in various places. To improve consistency we introduce our own Future API that implements all of the above, as well as providing other additional ergonomic improvements. We introduce a new ExecutorPlus API that extends Executor to supply this extended Future API. All executors and futures are ported to these new APIs to improve coherency in the codebase, and to support consistently mocking these implementations.
DebuggableThreadPoolExecutor and its hierarchy is replaced with ThreadPoolExecutorBase, ThreadPoolExecutorPlus and extending classes with consistent names, implementations and configurability.
Additionally the ExecutorFactory takes over the allocation of new threads, and provides a new InfiniteLoopExecutorfacility for common paradigms.
Attachments
Issue Links
- causes
-
CASSANDRA-17928 Test Failure: org.apache.cassandra.db.commitlog.CommitLogInitWithExceptionTest.testCommitLogInitWithException-compression
- Resolved
- is a child of
-
CASSANDRA-16922 CEP-10: Major Prerequisites (Phase 1)
- Resolved
- relates to
-
CASSANDRA-17125 Remove use of deprecated Futures in tests
- Open