[ https://issues.apache.org/jira/browse/OAK-3057?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14609585#comment-14609585 ]
Chetan Mehrotra commented on OAK-3057: -------------------------------------- [~mduerig] Had some thoughts around this {quote} I think we should improve org.apache.jackrabbit.oak.plugins.commit.ConflictValidator#getConflictMessage(). That method currently only logs "our changes" of the conflict. In this case this is a deletion. We should probably also log "their changes" of the conflict so it would be easier to see what really conflicted here. I just noted that tweaking getConflictMessage() is not possible as "our changes" are not available at that point (they are not passed to org.apache.jackrabbit.oak.spi.commit.ConflictHandler#deleteChangedNode, which might be seen as an issue by itself). Maybe a better approach would be to add debug logging to org.apache.jackrabbit.oak.plugins.commit.MergingNodeStateDiff#resolveConflict(). This way we could also log the conflict handlers called in the resolution process along with their resolution. This would probably give us the most detailed back trace of merge conflicts. {quote} > 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 > > > 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)