Description
RepositoryUpgrade logic currently creates when migrating content from JR2 to Oak currently creates a one large commit. This causes issue with DocumentNodeStore as all the commit state is maintained in memory in Commit#operations variable which leads to OOM when source repository content is large.
On Analyzing the heap dump it can be seen that o.a.j.o.plugins.document.Commit#operations map contains large number of UpdateOp entries. These entries are created due to the diff being performed in o.a.j.o.plugins.document.DocumentNodeStoreBranch#persist which traverse down the whole tree (source being JR2 tree) and captures the diff as UpdateOp. As commit does not get applied till whole diff is complete the in memory state is proportional to repository size
Attachments
Attachments
Issue Links
- relates to
-
OAK-1768 DocumentNodeBuilder.setChildNode() runs OOM with large tree
- Closed