-
Notifications
You must be signed in to change notification settings - Fork 910
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Unload taskQueueManager by instance, not queue ID #1917
Conversation
@@ -201,7 +201,7 @@ func (w *taskWriter) appendTasks( | |||
return resp, nil | |||
|
|||
case *persistence.ConditionFailedError: | |||
w.tlMgr.signalFatalProblem(w.tlMgr.taskQueueID) | |||
w.tlMgr.signalFatalProblem(w.tlMgr) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
BTW, if we were just call w.tlMgr.Unload() here we won't have to deal with this bug.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not sure what you mean - taskQueueManager doesn't have an Unload?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
tlMgr.Stop maybe? that would work because it dedups on a per-taskQueueManager instance basis.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I meat tlm.Stop(), but yes we still need to remove it from the collection of matching engine, which is keyed on taskQueueID, and dedupe would still needed. So, maybe it does not matter.
Matching engine can incorrectly unload a taskQueueManager instance because the fatal signals from a previous instance are still being delivered and reference the same queue ID. To address we unload by taskQueueManager object instance rather than simply by queue ID.
Matching engine can incorrectly unload a taskQueueManager instance because the fatal signals from a previous instance are still being delivered and reference the same queue ID. To address we unload by taskQueueManager object instance rather than simply by queue ID.
Russian Revolution PR: https://en.wikipedia.org/wiki/Russian_Revolution |
☮️ 🏞️ 🍞 |
Matching engine can incorrectly unload a taskQueueManager instance because the fatal signals from a previous instance are still being delivered and reference the same queue ID. To address we unload by taskQueueManager object instance rather than simply by queue ID.
What changed?
Unload taskQueueManager by instance, not queue ID
Why?
Matching engine can incorrectly unload a taskQueueManager instance
because the fatal signals from a previous instance are still being
delivered and reference the same queue ID. To address we unload by
taskQueueManager object instance rather than simply by queue ID.
How did you test it?
New unit test
Potential risks
Minimal - unload occurs in strictly fewer cases
Is hotfix candidate?
no