Skip to content

job-store-service: count each delivered data chunk once (DI-3049) - #322

Merged
jbndbc merged 1 commit into
DBCPR-328-dataio-chunk-scheduling-redesignfrom
DI-3049-once-only-data-chunk-count
Sep 16, 2026
Merged

jbndbc merged 1 commit into
DBCPR-328-dataio-chunk-scheduling-redesignfrom
DI-3049-once-only-data-chunk-count

Conversation

@jbndbc

@jbndbc jbndbc commented Sep 7, 2026

Copy link
Copy Markdown
Contributor

chunkDeliveringDone is called again by every redelivery, and the broker's failure detection can produce two genuinely concurrent calls for one chunk, so the count of a job's delivered data chunks has to hang off something only one caller can do. DependencyTrackingService.remove now returns the removed entry rather than void, and the gate is advanced only by the caller that was handed one. IMap.remove is atomic per key, so of any number of concurrent callers exactly one gets the entry and the rest get null.

chunkDeliveringDone is called again by every redelivery, and the broker's failure
detection can produce two genuinely concurrent calls for one chunk, so the count
of a job's delivered data chunks has to hang off something only one caller can
do. DependencyTrackingService.remove now returns the removed entry rather than
void, and the gate is advanced only by the caller that was handed one. IMap.remove
is atomic per key, so of any number of concurrent callers exactly one gets the
entry and the rest get null.
@jbndbc
jbndbc merged commit 16af39f into DBCPR-328-dataio-chunk-scheduling-redesign Sep 16, 2026
1 of 2 checks passed
@jbndbc
jbndbc deleted the DI-3049-once-only-data-chunk-count branch September 16, 2026 05:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants