I have a job that runs fine when I run it with the SimpleAsyncTaskExecutor.
When I run it with a SyncTaskExecutor it fails though because in the TaskletStep on line 405 Spring Batch does a semaphore.acquire().
I'm not sure that this should even be executing since the comment right above it states:
There doesn't seem to be a check to see if the operation is even an async operation at this point.
// If the step operations are asynchronous then we need
// to synchronize changes to the step execution (at a
// minimum). Take the lock *before* changing the step
I'm wondering if this is a bug? Since I'm running SyncTaskExecutor I would think semaphore's are not needed.
Am I correct in this assumption or do I perhaps have something else going on?