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
LockedExecutor
class, modifications to theCronRunCommand
to use this executor, and the inclusion of the Symfony Lock component as a dependency.Enhancements to job execution with locking:
New
LockedExecutor
class: Introduced a newLockedExecutor
class inCron/LockedExecutor.php
to 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 likestartProcesses
andisRunning
.Integration of
LockedExecutor
inCronRunCommand
: Updated theCronRunCommand
class to replace the default executor with the newLockedExecutor
. A helper methodcreateLockedExecutor
was added to configure the executor with a lock factory that uses filesystem locks. [1] [2]Dependency updates:
composer.json
to include the Symfony Lock component (symfony/lock
) as a dependency to enable the locking functionality.Code organization:
LockedExecutor
,LockFactory
, andFlockStore
inCronRunCommand.php
to support the new locking mechanism. [1] [2]