-
Notifications
You must be signed in to change notification settings - Fork 2.1k
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
Fix Data race in semi-join #17417
base: main
Are you sure you want to change the base?
Fix Data race in semi-join #17417
Conversation
Signed-off-by: Manan Gupta <[email protected]>
Review ChecklistHello reviewers! 👋 Please follow this checklist when reviewing this Pull Request. General
Tests
Documentation
New flags
If a workflow is added or modified:
Backward compatibility
|
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## main #17417 +/- ##
==========================================
+ Coverage 67.60% 67.64% +0.04%
==========================================
Files 1581 1581
Lines 253945 253777 -168
==========================================
+ Hits 171670 171674 +4
+ Misses 82275 82103 -172 ☔ View full report in Codecov by Sentry. |
err := vcursor.StreamExecutePrimitive(ctx, jn.Left, bindVars, wantfields, func(lresult *sqltypes.Result) error { | ||
joinVars := make(map[string]*querypb.BindVariable) | ||
result := &sqltypes.Result{Fields: lresult.Fields} | ||
for _, lrow := range lresult.Rows { | ||
for k, col := range jn.Vars { | ||
joinVars[k] = sqltypes.ValueBindVariable(lrow[col]) | ||
} | ||
rowAdded := false | ||
var rowAdded atomic.Bool | ||
err := vcursor.StreamExecutePrimitive(ctx, jn.Right, combineVars(bindVars, joinVars), false, func(rresult *sqltypes.Result) error { |
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.
There is another issue I mentioned: during a transaction, we might end up opening two connections, leaving one of them in limbo.
Do you have another PR that fixes it?
Description
As described in #17410 and #17411, there is a data race in the stream execute code of semi-join.
This PR adds a test to uncover the problem and fixes it.
Related Issue(s)
Checklist
Deployment Notes