Closed raararaara closed 1 month ago
[!WARNING]
Review failed
The pull request is closed.
The recent changes address tree structure and size consistency in the TreeNode
and Node
structs within the document collaboration system. Updates simplify ancestor size management, modify descendant size handling, and introduce new test cases to ensure tree consistency during concurrent edits. Additionally, debug print statements have been added to the ApplyChanges
function for specific index values.
Files | Change Summary |
---|---|
pkg/document/crdt/tree.go |
Simplified logic in TreeNode 's remove method for updating ancestors' size and parent's length. |
pkg/document/internal_document.go |
Added fmt import and a debug print statement in ApplyChanges for index 158. |
pkg/index/tree.go |
Updated UpdateAncestorsSize to break loop if parent's value is removed; modified UpdateDescendantsSize to skip removed nodes. |
test/integration/tree_test.go |
Added imports for converter and crdt packages; introduced new test cases for concurrent editing and tree consistency. |
No sequence diagrams provided as the changes are primarily logical simplifications and enhancements.
Objective (Issue #889) | Addressed | Explanation |
---|---|---|
Ensure size for index calculation in XML Tree is consistent |
✅ | |
Ensure attributes of Trees generated by Changes and Snapshot match |
✅ |
In the code, the trees now stand, Ancestors' sizes, simplified, grand. Descendants skip the nodes removed, A smoother process, finely tuned. Debug prints for index keen, Collaboration flows, pristine. 🌳✨
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?
Attention: Patch coverage is 11.11111%
with 8 lines
in your changes missing coverage. Please review.
Project coverage is 50.64%. Comparing base (
ef70028
) to head (49081a0
).
Files | Patch % | Lines |
---|---|---|
pkg/index/tree.go | 0.00% | 7 Missing and 1 partial :warning: |
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
@raararaara Thanks for your contribution.
What this PR does / why we need it?
Fix miscalculation of tree size in concurrent editing
This commit addresses the issue where the
updateAncestorsSize
method subtracts the size of a tombstoned node from its ancestors' sizes when the node is removed. However, the previous logic did not consider cases where ancestors node are tombstoned. In such cases, the update should not propagate to the parent's ancestors. This commit introduces recursive checks on ancestors and stops updating process if a tombstoned ancestor is encountered.Furthermore, the PR ensures consistency between the size maintenance policies of updateDescendantsSize and updateAncestorsSize.
Any background context you want to provide?
What are the relevant tickets?
Address https://github.com/yorkie-team/yorkie/issues/889 Related to https://github.com/yorkie-team/yorkie-js-sdk/pull/846
Checklist:
Summary by CodeRabbit
Bug Fixes
Tests