Prevent MapperPipeline.complete() from infinitely retrying after pipeline is aborted #65
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.
Summary:
I was investigating this error:
https://www.khanacademy.org/devadmin/errors/8bb7cca3
I learned that error-monitor-db will match on ANY of the 3 id's, and one of the id's is the last 3 words of the first line of the error message, in this case "not yet filled". So, the error message is actually this:
I investigated in devshell to find that this
_SlotRecord
belonged to a pipeline that had been aborted due to intermittent datastore problems:To reproduce this error locally, I inserted an exception into the
MapperPipeline.run()
. Before this change, the callback task would infinitely retry, but after this change it would stop retrying. I debated between this fix and changing the upstream code to simply not call the callback in the event of a pipeline abortion, but based on this comment inPipeline.finalized()
I think checkingwas_aborted
is the intended pattern.Test Plan:
MapperPipeline.run()
as mentioned aboveand for testing in prod:
Differential Revision: https://phabricator.khanacademy.org/D18378