feat(server): dedup partition writes with per-group client table slices - #3959
Conversation
|
Merge after #3958 |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## master #3959 +/- ##
=============================================
- Coverage 85.10% 73.01% -12.09%
Complexity 1402 1402
=============================================
Files 1236 1235 -1
Lines 181699 166022 -15677
Branches 148003 132330 -15673
=============================================
- Hits 154629 121218 -33411
- Misses 23047 40807 +17760
+ Partials 4023 3997 -26
🚀 New features to boost your workflow:
|
|
This pull request has been automatically marked as stale because it has not had recent activity. It will be closed in 7 days if no further activity occurs. If you need a review, please ensure CI is green and the PR is rebased on the latest master. Don't hesitate to ping the maintainers - either Thank you for your contribution! |
|
/ready |
hubcio
left a comment
There was a problem hiding this comment.
items on lines outside the diff:
- no shipped SDK preserves its client id across a reconnect and HTTP mints a fresh request id per call, so nothing reaches the dedup today - the PR body should say so and link the SDK follow-up.
purgeiniggy_partition.rsclears offsets, caches and consumer offsets but not the dedup slice, whileconverge_to_empty_after_failed_installclears it for the same reason. clear it inpurgetoo.- the
decode_sectionbyte-guard comment instate_transfer.rsis stale now that the dedup section follows: an over-stated group count fails asNonAscendingIdorTrailingBytesinstead ofTruncated. fix the comment or subtract the trailing sections' minimum.
|
/ready |
hubcio
left a comment
There was a problem hiding this comment.
round 2 only fixed the doctest link, so most of round 1 still stands. two findings have no line in the diff to hang on:
ShardZeroCoordinator::seed_client_sequence in core/shard/src/coordinator.rs only ever raises the counter, and it seeds from live metadata ids at boot - a logged-out id is already gone from the table by then. so after a restart the same user can be handed the same client id while a peer primary still holds that id's slice watermark, and the first writes come back 201 without being written. minting ids that never repeat (boot nonce or view in the upper bits) closes it without touching the slice.
the PR body is still one line. worth saying which SDKs this reaches and what a client sees when a write is refused.
separate from this PR: the scripts/ci/storage-compat.sh fix in 85aa01e is ok.
|
/ready |
Implement deduplication for partition plane operations.