fix(store/cachemulti): clone traceContext to prevent concurrent map panic#25934
Open
djm07073 wants to merge 2 commits intocosmos:mainfrom
Open
fix(store/cachemulti): clone traceContext to prevent concurrent map panic#25934djm07073 wants to merge 2 commits intocosmos:mainfrom
djm07073 wants to merge 2 commits intocosmos:mainfrom
Conversation
Add tests to verify traceContext isolation between parent and child stores. TestCacheMultiStoreTraceConcurrency will panic with "concurrent map writes" when multiple goroutines modify their traceContext, demonstrating the bug described in cosmos#25841. Run `go test -race ./store/cachemulti/...` on this commit to reproduce the panic.
…anic Clone traceContext before passing to child stores in CacheMultiStore() to prevent "fatal error: concurrent map writes" when multiple goroutines concurrently create and modify cache stores with tracing enabled. Closes cosmos#25841
Contributor
|
This pull request has been automatically marked as stale because it has not had recent activity. It will be closed in 7 days-before-close if no further activity occurs. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Closes #25841
Summary
traceContextbefore passing to child stores inCacheMultiStore()to prevent concurrent map panicRoot Cause
cachemulti.Store.CacheMultiStore()passestraceContextmap by reference to child stores viaNewFromParent(). When multiple goroutines concurrently modify their child stores'traceContext, they all write to the same underlying map, causingfatal error: concurrent map writes.Solution
Clone
traceContextbefore passing toNewFromParent():To reproduce the panic (on the first commit):