Share sub-paths in reverse write-backs during mutation operations #47
Labels
No labels
bug
duplicate
enhancement/documentation
enhancement/feature
enhancement/organization
question
rejected
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
UserCurt/mpath#47
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
setandremovecurrently consider each attempted mutation as separate, even when multiple mutations share common chunk ancestors.For example:
This current expands as:
This issue proposes expanding as:
This can increase the number of assignments that gets performed unnecessarily, especially for deeply branched paths such as in
/*/*/*/*/*/*.The proposed approach would build a shared reverse write-back tree from the mutation plan. Each tree node would represent one indexing chunk, and edges would represent retrieval and reverse write-back between chunks. Mutation paths with a common chunk prefix would share a parent node.
Each node would perform each child mutation before the parent can be mutated. So mutations would apply in a leaf-to-root ordering.
This issue depends on the forward and reverse chunk-planning model selected in #48. The two issues should be designed together and may be implemented in the same series of commits.
Similar to the current implementation, each
UniformPathsgroup will be applied largely separately but here as separate sub-trees in the plan.Complete terminal CSL assignment rounds must remain grouped (see completed #42). Repeated assignments must not be dropped or merged. Broader duplicate and ancestor/descendant behavior and ordering remains tracked by #46.
setassigns through missing paths and constructs new data #15