Closed hackerwins closed 1 month ago
Recent updates focus on refining the handling of styling operations within the tree structures in the codebase. The changes primarily enhance the order of operations and the parameters involved in styling and attribute removal processes. These improvements ensure more accurate and efficient management of node attributes, particularly when dealing with concurrent edits and different actors.
File | Change Summary |
---|---|
api/converter/from_pb.go |
Rearranged operations order in fromTreeStyle and updated operations.NewTreeStyleRemove call to include createdAtMapByActor . |
pkg/document/crdt/tree.go |
Refined logic in canStyle and Style methods; added maxCreatedAtMapByActor parameter to RemoveStyle . |
pkg/document/json/tree.go |
Added maxCreationMapByActor parameter to RemoveStyle method. |
pkg/document/operations/tree_style.go |
Added maxCreatedAtMapByActor parameter to NewTreeStyleRemove and updated Execute method. |
test/integration/tree_concurrency_test.go |
Modified TestTreeConcurrencyEditStyle to include new attributes and updated StyleRemove and StyleSet operations. |
sequenceDiagram
participant User
participant API
participant CRDT
participant JSON
participant Operations
User->>API: Call fromTreeStyle with TreeStyle
API->>Operations: Call NewTreeStyleRemove with createdAtMapByActor
Operations->>CRDT: Execute TreeStyle with maxCreatedAtMapByActor
User->>JSON: Call RemoveStyle with maxCreationMapByActor
JSON->>CRDT: RemoveStyle with updated parameters
CRDT->>Operations: RemoveStyle with maxCreatedAtMapByActor
Operations->>CRDT: Update node attributes
In the forest of code where trees reside,
With styles and attributes, they now abide.
A map of actors, a time to keep,
Ensuring harmony where conflicts seep.
Blue and bold, they dance anew,
In the world of bytes, a vibrant hue.
🐇✨
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 9.52381%
with 38 lines
in your changes are missing coverage. Please review.
Project coverage is 50.50%. Comparing base (
3647f35
) to head (e0837cf
).
Files | Patch % | Lines |
---|---|---|
pkg/document/crdt/tree.go | 11.42% | 31 Missing :warning: |
api/converter/from_pb.go | 0.00% | 7 Missing :warning: |
:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.
What this PR does / why we need it:
Handle concurrent Tree.RemoveStyle
This commit addresses an issue where if a node has an attribute with the same key as the RemoveStyle is simultaneously inserted by Tree.Edit functions, the attribute of the concurrently inserted Node with the same key gets deleted. To resolve this issue, this commit adds filtering logic in RemoveStyle to prevent attribute deletion from concurrently inserted nodes.
Which issue(s) this PR fixes:
Address #884
Special notes for your reviewer:
Does this PR introduce a user-facing change?:
Additional documentation:
Checklist:
Summary by CodeRabbit
Bug Fixes
New Features
Tests