TaskTimeoutError should be BaseException instead of Exception #241
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.
Task timeout function sets alarm that triggers SIGALRM, which is then handled by throwing TaskTimeoutError. This mechanism should crash task that is running too long e.g. because of infinite loop or other conditon that caused the consumer to be hanged.
Unfortunately, TaskTimeoutError derives from Exception base class which means that it will be cached by any
try..except
clause that catches all Exceptions, which is pretty common pattern in Python, making timeout ineffective. This kind of situation happens in karton-config-extractor and malduck: https://github.com/CERT-Polska/malduck/blob/master/malduck/extractor/extractor.py#L447This PR changes base class of TaskTimeoutError from Exception to BaseException (like GracefulShutdown).