Skip to content

Revisit the concurrency model #4955

@fmbenhassine

Description

@fmbenhassine

The current approach to concurrency with a "parallel iteration" concept (based on TaskExecutorRepeatTemplate, ResultHolderResultQueue, RepeatSynchronizationManager, TransactionSynchronizationManager, etc) is not friendly to concurrent executions as it requires a lot of state synchronization at different levels (Step level with a semaphore, chunk level with ThreadLocal for execution contexts, and item level with locks). This results in several issues like maxItemCount not being honored in a multi-threaded step, inconsistent state when a transaction is rolled-back leading to optimistic locking issues, throttling issues, poor performance, etc. Here is a non exhaustive list of related issues:

v6 is a good opportunity to revisit the concurrency features provided out-of-the-box, which should be adapted to the new implementation of the chunk-oriented processing model introduced in #3950.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Relationships

None yet

Development

No branches or pull requests

Issue actions