Details
-
Improvement
-
Status: Resolved
-
Medium
-
Resolution: Done
-
None
-
None
Description
NormalizedNodePruner is used heavily during recovery, where it is used for each modification being applied. Its design unfortunately does not lend itself for reuse and we end churning memory rather heavily due to its use of an internal stack.
Furthermore we end up looking up the same DataSchemaContextTree over and over, which while working on a weak cache, is still a waste of CPU cycles.
Attachments
| # | Subject | Branch | Project | Status | CR | V |
|---|---|---|---|---|---|---|
| 81248,2 | Hide NormalizedNodeBuilderWrapper | master | controller | Status: MERGED | +2 | +1 |
| 81249,2 | Do not use Optional in NormalizedNodeWrapper | master | controller | Status: MERGED | +2 | +1 |
| 81250,2 | Remove NormalizedNodePruner.findSchemaNodeForNodePath() | master | controller | Status: MERGED | +2 | +1 |
| 81251,2 | Move checkNotSealed() to addBuilder() | master | controller | Status: MERGED | +2 | +1 |
| 81257,4 | Add ReusableNormalizedNodePruner | master | controller | Status: MERGED | +2 | +1 |
| 81258,5 | Use ReusableNormalizedNodePruner in PruningDataTreeModification | master | controller | Status: MERGED | +2 | +1 |
| 81259,3 | Do not use Deque.size() | master | controller | Status: ABANDONED | 0 | 0 |
| 81287,3 | Clean up NormalizedNodePruner | stable/neon | controller | Status: MERGED | -1 | +1 |
| 81288,3 | Remove NormalizedNodePruner.SimpleStack | stable/neon | controller | Status: MERGED | +2 | +1 |
| 81289,3 | Hide NormalizedNodeBuilderWrapper | stable/neon | controller | Status: MERGED | -1 | +1 |
| 81290,3 | Do not use Optional in NormalizedNodeWrapper | stable/neon | controller | Status: MERGED | -1 | +1 |
| 81291,3 | Remove NormalizedNodePruner.findSchemaNodeForNodePath() | stable/neon | controller | Status: MERGED | -1 | +1 |
| 81292,3 | Move checkNotSealed() to addBuilder() | stable/neon | controller | Status: MERGED | -1 | +1 |
| 81293,3 | Add ReusableNormalizedNodePruner | stable/neon | controller | Status: MERGED | -1 | +1 |
| 81294,3 | Use ReusableNormalizedNodePruner in PruningDataTreeModification | stable/neon | controller | Status: MERGED | -1 | +1 |
| 81299,1 | Hide NormalizedNodeBuilderWrapper | stable/fluorine | controller | Status: MERGED | -1 | +1 |
| 81300,1 | Do not use Optional in NormalizedNodeWrapper | stable/fluorine | controller | Status: MERGED | -1 | +1 |
| 81301,1 | Remove NormalizedNodePruner.findSchemaNodeForNodePath() | stable/fluorine | controller | Status: MERGED | -1 | +1 |
| 81302,1 | Move checkNotSealed() to addBuilder() | stable/fluorine | controller | Status: MERGED | -1 | +1 |
| 81303,1 | Add ReusableNormalizedNodePruner | stable/fluorine | controller | Status: MERGED | -1 | +1 |
| 81304,1 | Use ReusableNormalizedNodePruner in PruningDataTreeModification | stable/fluorine | controller | Status: MERGED | -1 | +1 |