EngineClient: properly handle abort flag on close #591
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.
StreamWorker.abort()
callsEngine.remove()
withabort
set toTrue
but this flag was never actually used. The problem is thatEngineClient._close_stream()
is then called and flushes any read buffers, which can lead to unexpected read events and messing with the user's code logic (StreamWorker
is used by theGateway
and this issue was discovered there).With this patch, we ensure that
worker.abort()
actually aborts all engine events.Just a last note that we keep the current behavior when both abort and timeout are set to True in
Engine.remove()
/EngineClient._close()
. In that case,timeout=True
prevails as it is Engine-induced and we consider we can flush any read buffers (so potentially generating a fewev_read
events).