[ https://issues.apache.org/jira/browse/OAK-3057?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Alex Parvulescu updated OAK-3057: --------------------------------- Attachment: OAK-3057-v1.patch [new version of the patch|^OAK-3057-v1.patch], this ones is a bit more involved and I'm really curious about your thoughts! * completely refactored ConflictValidator. it seems that the current version is keeping track of all the tree states traversing down on each commit, in the case it might have to log the famous commit message. that's a lot of resources for nothing possibly. this thing lead to another, and so I ended up with this version :) * MergingNodeStateDiff added extra logs suggested by Michael, but it also needed some toString methods so the logs make some sense. * ConflictResolutionTest: move the conflict test to its own class. I'd love to hear some ideas on how to enable debug logs for the above just for this test and collect them, then check them for messages. now this would make for some pretty interesting unit tests :) so far it's just the same old test moved away cc. [~chetanm], [~mduerig], [~catholicon] > Simplify debugging conflict related errors > ------------------------------------------ > > Key: OAK-3057 > URL: https://issues.apache.org/jira/browse/OAK-3057 > Project: Jackrabbit Oak > Issue Type: Improvement > Components: core > Reporter: Chetan Mehrotra > Fix For: 1.3.3 > > Attachments: OAK-3057-v0.patch, OAK-3057-v1.patch > > > Many a times we see conflict exception in the logs like below. Looking at the > stacktrace its hard to reason out what was the conflict and hence harder to > debug such issues. Oak should provide more details as part of exception > message itself to simplify debugging such issues. > Note that such issues are intermittent and might happen in background > processing logic. So its required that all details should be made part of > exception message itself as it would not be possible to turn on any trace > logging to get more details given the intermittent nature of such issues > {noformat} > Caused by: org.apache.jackrabbit.oak.api.CommitFailedException: OakState0001: > Unresolved conflicts in /content/dam/news/images/2015/06/27/blue-sky.jpg > at > org.apache.jackrabbit.oak.plugins.commit.ConflictValidator.failOnMergeConflict(ConflictValidator.java:84) > at > org.apache.jackrabbit.oak.plugins.commit.ConflictValidator.propertyAdded(ConflictValidator.java:54) > at > org.apache.jackrabbit.oak.spi.commit.CompositeEditor.propertyAdded(CompositeEditor.java:83) > at > org.apache.jackrabbit.oak.spi.commit.EditorDiff.propertyAdded(EditorDiff.java:82) > at > org.apache.jackrabbit.oak.plugins.memory.ModifiedNodeState.compareAgainstBaseState(ModifiedNodeState.java:375) > at > org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:148) > at > org.apache.jackrabbit.oak.plugins.memory.ModifiedNodeState.compareAgainstBaseState(ModifiedNodeState.java:396) > at > org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:148) > at > org.apache.jackrabbit.oak.plugins.memory.ModifiedNodeState.compareAgainstBaseState(ModifiedNodeState.java:396) > at > org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:148) > at > org.apache.jackrabbit.oak.plugins.memory.ModifiedNodeState.compareAgainstBaseState(ModifiedNodeState.java:396) > at > org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:148) > at > org.apache.jackrabbit.oak.plugins.memory.ModifiedNodeState.compareAgainstBaseState(ModifiedNodeState.java:396) > at > org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:148) > at > org.apache.jackrabbit.oak.plugins.memory.ModifiedNodeState.compareAgainstBaseState(ModifiedNodeState.java:396) > at > org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:148) > at > org.apache.jackrabbit.oak.plugins.memory.ModifiedNodeState.compareAgainstBaseState(ModifiedNodeState.java:396) > at > org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:148) > at > org.apache.jackrabbit.oak.plugins.memory.ModifiedNodeState.compareAgainstBaseState(ModifiedNodeState.java:396) > at > org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:148) > at > org.apache.jackrabbit.oak.plugins.memory.ModifiedNodeState.compareAgainstBaseState(ModifiedNodeState.java:396) > at > org.apache.jackrabbit.oak.spi.commit.EditorDiff.process(EditorDiff.java:52) > at > org.apache.jackrabbit.oak.spi.commit.EditorHook.processCommit(EditorHook.java:54) > at > org.apache.jackrabbit.oak.spi.commit.CompositeHook.processCommit(CompositeHook.java:60) > at > org.apache.jackrabbit.oak.spi.commit.CompositeHook.processCommit(CompositeHook.java:60) > at > org.apache.jackrabbit.oak.spi.state.AbstractNodeStoreBranch$InMemory.merge(AbstractNodeStoreBranch.java:557) > at > org.apache.jackrabbit.oak.spi.state.AbstractNodeStoreBranch.merge0(AbstractNodeStoreBranch.java:329) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStoreBranch.merge(DocumentNodeStoreBranch.java:148) > at > org.apache.jackrabbit.oak.plugins.document.DocumentRootBuilder.merge(DocumentRootBuilder.java:159) > at > org.apache.jackrabbit.oak.plugins.document.DocumentNodeStore.merge(DocumentNodeStore.java:1482) > at > org.apache.jackrabbit.oak.core.MutableRoot.commit(MutableRoot.java:247) > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)