[10.x] Add JobTimingOut event to Worker #48893
Closed
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.
Add a
JobTimingOut
event in order to allow developers to resolve the scenario described in #48392.The main problem described in the issue is that if the job has a transaction that is still running when the job hits timeout, then any database operation that is sent before rolling back the job transaction, will not be executed as expected.
There already exists a
JobTimedOut
event, but this event is emitted after some processes that may involve database access in some scenarios. So, by adding this new event, developers can roll back database transactions before these mentioned processes are executed.I prepared a repository in order to test this.
There are two jobs
TimeOutJobWithoutTransactionRollback
andTimeOutJobWithTransactionRollback
:There is also a event listener that will make DB rollback only for
TimeOutJobWithTransactionRollback
:So you can try for example:
and that will reproduce the mentioned issue. Then you can try:
and the issue is solved with the rollback.
So, this PR resolve #48392.