Fix Server Exit Null Reference Exception #747
Merged
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.
StoreWrapper is created in GarnetServer and then shared across all instances of RespServerSessions that get created by the provider. The RespServerSessions run in separate threads. During the creation of the provider we also pass into the
When we start Disposal logic of GarnetServer. The disposal of the provider also triggers the disposal of the storeWrapper, which is going to change the value of "metrics" in GarnetServer to null.
Now the data race in my head is going to be from the fact that metrics is changed by a thread without synchronization with resp server sessions running in separate threads. Instead of synchronization we could let the null check remain as a guard against seeing Exceptions being thrown in disposal of RespServerSession.
This only started happening because we started pooling histograms.
This PR makes changes to add graceful exiting instead of the null refs.