Skip to content

Fixed race condition in OutOfProcessQueue #66#67

Open
Kittyfisto wants to merge 1 commit intorelease/0.5.166from
bugfix/outofprocessqueue_dispose_race
Open

Fixed race condition in OutOfProcessQueue #66#67
Kittyfisto wants to merge 1 commit intorelease/0.5.166from
bugfix/outofprocessqueue_dispose_race

Conversation

@Kittyfisto
Copy link
Owner

@Kittyfisto Kittyfisto commented Mar 24, 2020

The child process was able to survive a call to Dispose() if it crashed right before Dispose() was called.
OutOfProcessQueue.Dispose() now performs synchronisation at the cost of of a slightly changed behaviour visible to users, if they call dispose from within a FailureHandler callback:

Prior to this bugfix, Dispose() did not block (which caused this behavior in the first place), however users calling Dispose() from within the FailureHandler did not see any delays: Dispose() returned immediately.

Now Dispose() blocks until the worker thread is stopped, however since the worker thread executes the failure handler, we this would cause a deadlock. Dispose() circumnavigates this by waiting for a maximum of 5 seconds and the continuing nevertheless.
However, in the end, calling Dispose() from within a callback is very strongly discouraged nevertheless.

The child process was able to survive a call to Dispose() if it crashed right before Dispose() was called.
OutOfProcessQueue.Dispose() now performs synchronisation at the cost of of a slightly changed behaviour visible to users, if they call dispose from within a FailureHandler callback.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant