[ 
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)

Reply via email to