-
Notifications
You must be signed in to change notification settings - Fork 436
[CELEBORN-2313] Extend E2E checked zone to batch assembly point #3670
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
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
@@ -1044,12 +1044,6 @@ public int pushOrMergeData( | |||||||||||||
| // increment batchId | ||||||||||||||
| final int nextBatchId = pushState.nextBatchId(); | ||||||||||||||
|
|
||||||||||||||
|
||||||||||||||
| // Preserve integrity-check metadata for callers that still invoke pushData()/mergeData() | |
| // directly without explicitly calling computeBatchCRC() first. This must run before | |
| // compression so CRC / bytes are recorded for the original batch payload. | |
| computeBatchCRC(shuffleId, mapId, attemptId, partitionId, nextBatchId, data, offset, length); |
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.
End-to-End Integrity currently does not support Tez/MR even before this change. If we want to add support, the changes will be similar.
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.
What we are doing here is computing CRC per batch, the CRC computation on the data payload (CRC32.update over potentially megabytes) dominates the per-batch cost, making the string allocation noise.
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.
The comment sounds right on high level: PushState are mutated cross-threads. But not necessarily true on micro-level: PushState.addDataWithOffsetAndLength mutable PushState.commitMetadataMap, before this PR, it is mutated on DataPusher thread; After this PR, it is mutated on writer thread. PushState.commitMetadataMap is never mutated cross multiple threads. So to keep things simple, will not do the change the comments suggested.
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.
The computeBatchCRC() Javadoc says calling it “prevents double-computation in pushOrMergeData”, but this PR removes CRC accumulation from pushOrMergeData entirely. Please update the comment to match the new semantics (i.e., computeBatchCRC is now required for integrity-check metadata unless a fallback remains in pushOrMergeData), otherwise API users will be misled.
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.
Good catch, fixed.