Conversation
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: trueThanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
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 join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
A standalone
updateManycurrently fails withTransactionTooLargewhen its accumulated document and index writes exceed the 62 MiB transaction write-set limit. This change executes ordinary multi-updates in capacity-bounded transactions. A batch commits when the next complete document plus its index writes cannot fit, or when the scan ends; crossing a cursor prefetch window does not trigger a commit.The executor owns transaction boundaries, saves and restores scan state, and re-reads pending documents after a transaction change. It confirms candidate IDs and statistics only after a successful commit, and retries only the uncommitted batch after a definite write-conflict abort. Index admission and execution share the same encoded-byte accounting, including multikey, partial unique, and creating-index writes.
Behavior to review
OP_UPDATEuse the same batching rules where eligible.The change is based directly on upstream main
6959f0c79abf5eda5347f7301bced8c7bff716e2. It uses the existing modifier-update interfaces and adds no aggregation pipeline-update support. Pipeline-dependent regression scenarios have been rewritten with ordinary modifiers while retaining schema and batch-failure coverage.Dependency
Depends on eloqdata/tx_service#574 for the byte-accounting APIs. The submodule pin contains only that change on top of the current EloqDoc main pin;
.gitmodulescontinues to use the upstream GitHub URL. If the dependency is squash-merged, update the pin to the accepted upstream commit before merging this PR.Validation
eloq_basic/eloq_core. Two C++ accounting tests are explicitly built and executed by the existing CI build phase, before build-output cleanup.Reviewer focus: transaction ownership and partial completion, retained-ID replay and deduplication, exact document/index byte accounting, and schema lifetime across commits. Reverting this PR restores command-level transaction handling for standalone multi-updates.