-
Notifications
You must be signed in to change notification settings - Fork 317
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: detected illegal job sequence during barrier enter/wait #3881
Conversation
Codecov ReportPatch coverage:
Additional details and impacted files@@ Coverage Diff @@
## master #3881 +/- ##
==========================================
- Coverage 68.91% 68.75% -0.17%
==========================================
Files 351 351
Lines 52801 52810 +9
==========================================
- Hits 36390 36311 -79
- Misses 14107 14182 +75
- Partials 2304 2317 +13
☔ View full report in Codecov by Sentry. |
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.
Wouldn't it make sense to have a test for this? It would also work as documentation making clear that it is a scenario that it exists (if I were asked to list possible scenarios and I would definitely not think of this one).
@fracasula added a test scenario for asserting |
e5e33b5
to
0ef75f9
Compare
0ef75f9
to
b22db24
Compare
b22db24
to
f7e0589
Compare
Description
storeMessage#merge
will be called when processor has picked up a number of jobs (maxLoopProcessEvents: 10K
) that is greater than the configured sub-job size (subJobSize: 2K
). Processor will split the picked up batch in more than one sub-jobs, it will process all sub-jobs using pipelining and will finally merge them before storing the output to the database.Whenever more than one source is connected to a destination, this absence of the appropriate
routerDestIDs
in the merged store message can cause processor to write batches of jobs for the same destination in parallel. This, in turn, can cause router to pickup jobs out-of-order due tojobID
races.If processor picks jobs less than the configured sub-job size, then the original
storeMessage
will be used, which will include the appropriaterouterDestIDs
, thus jobs will be processed in-order.One small mistake... thousands of brain cells damaged!
Linear Ticket
PIPE-291
Security