Fix: Issue #154 - parallel running cron jobs and locking of running jobs #155
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This pull request introduces parallel running cron jobs and a locking mechanism to prevent concurrent execution of the same cron job. The primary changes include the addition of a
LockedExecutorclass, modifications to theCronRunCommandto use this executor, and the inclusion of the Symfony Lock component as a dependency.Enhancements to job execution with locking:
New
LockedExecutorclass: Introduced a newLockedExecutorclass inCron/LockedExecutor.phpto manage job execution with a locking mechanism. This prevents concurrent execution of the same job by utilizing the Symfony Lock component. It includes methods for acquiring and releasing locks, as well as overriding job lifecycle methods likestartProcessesandisRunning.Integration of
LockedExecutorinCronRunCommand: Updated theCronRunCommandclass to replace the default executor with the newLockedExecutor. A helper methodcreateLockedExecutorwas added to configure the executor with a lock factory that uses filesystem locks. [1] [2]Dependency updates:
composer.jsonto include the Symfony Lock component (symfony/lock) as a dependency to enable the locking functionality.Code organization:
LockedExecutor,LockFactory, andFlockStoreinCronRunCommand.phpto support the new locking mechanism. [1] [2]