tagging delete bugs: prevent triggering tag deletion if its deletion is pending#138
Merged
Merged
Conversation
- BUG-1: propagate Cassandra errors from getPopulatedBuckets in GetMembersPaginated as 500 instead of masking them as 404 "tag not found" - BUG-2: a failed bucket read now fails the page (500) instead of silently omitting the bucket's members and advancing the cursor past them; same fix applied to the non-paginated read path (GetTagById / GetMembersNonPaginated) - BUG-3: a cursor pointing past the last populated bucket ends the enumeration instead of wrapping around to bucket 0 and re-delivering the whole tag; invalid/corrupt cursors now return 400 Bad Request instead of silently restarting from the beginning - Remove unused BucketedCursor.TotalCollected field - Add a mock DatabaseClient test seam and service-level tests covering all three bugs plus a two-page pagination regression walk Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- BUG-4: deleteBucketMembers returns an error on partial XDAS removal instead of nil, so DeleteTag no longer reports a half-deleted tag as a completed deletion; bucket metadata survives for retry - BUG-5: per-instance in-flight guard in DeleteTagHandler deduplicates concurrent background deletions of the same tag (interim until the tag registry provides cross-instance state) - BUG-6: GetTagById returns a typed 404 error; handler no longer matches the error message by string comparison - BUG-7: remove min/max helpers shadowing Go builtins; skip the COUNT(*) metadata-cleanup check for buckets whose batch delete failed - Add exported template setters to GroupServiceSyncConnector so tests can point it at a mock XDAS server; extend the mock DatabaseClient with batch/modify support Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- BUG-4: deleteBucketMembers returns an error on partial XDAS removal instead of nil, so DeleteTag no longer reports a half-deleted tag as a completed deletion; bucket metadata survives for retry - BUG-5: per-instance in-flight guard in DeleteTagHandler deduplicates concurrent background deletions of the same tag (interim until the tag registry provides cross-instance state) - BUG-6: GetTagById returns a typed 404 error; handler no longer matches the error message by string comparison - BUG-7: remove min/max helpers shadowing Go builtins; skip the COUNT(*) metadata-cleanup check for buckets whose batch delete failed - Add exported template setters to GroupServiceSyncConnector so tests can point it at a mock XDAS server; extend the mock DatabaseClient with batch/modify support Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…x/tagging-delete-bugs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
instead of nil, so DeleteTag no longer reports a half-deleted tag as a
completed deletion; bucket metadata survives for retry
concurrent background deletions of the same tag (interim until the tag
registry provides cross-instance state)
the error message by string comparison
metadata-cleanup check for buckets whose batch delete failed
point it at a mock XDAS server; extend the mock DatabaseClient with
batch/modify support