In one of the test scenario I am getting CommitFailedException [0] [1]
. From just looking at the exception its hard to make out the root
cause. I was able to get the actual conflict details only by debugging
and accessing runtime state which is like

[
  {
    ":conflict": {
      "deleteChangedNode": {
        "parentFolder": "{N\/A}"
      }
    }
  },
  {
    "rep:ours": {
      "deleteChanged": {
        "parentFolder": "{N\/A}"
      }
    }
  }
]

If this conflict information can be made available as part of
exception then it would simplify debugging. Looking at the code
ConflictValidator does not have access to the parent node which
contains the 'conflict' and 'rep:ours' nodes. Probably that data can
be collected at
org.apache.jackrabbit.oak.spi.commit.EditorDiff#process method as at
that level we can access the other sibling nodes (sibling to
jcr:mixinTypes property). I can create a patch .... but not sure at
what level and how to propogate the commit failed data.

So how to debug CommitFailedException easily?

Chetan Mehrotra

[0] https://paste.apache.org/byc6
[1] Caused by: org.apache.jackrabbit.oak.api.CommitFailedException:
OakState0001: Unresolved conflicts in /
        at 
org.apache.jackrabbit.oak.plugins.commit.ConflictValidator.failOnMergeConflict(ConflictValidator.java:82)
        at 
org.apache.jackrabbit.oak.plugins.commit.ConflictValidator.propertyChanged(ConflictValidator.java:59)
        at 
org.apache.jackrabbit.oak.spi.commit.CompositeEditor.propertyChanged(CompositeEditor.java:91)
        at 
org.apache.jackrabbit.oak.spi.commit.EditorDiff.propertyChanged(EditorDiff.java:93)
        at 
org.apache.jackrabbit.oak.plugins.memory.ModifiedNodeState.compareAgainstBaseState(ModifiedNodeState.java:355)
        at 
org.apache.jackrabbit.oak.spi.commit.EditorDiff.process(EditorDiff.java:52)
        at 
org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:129)
        at 
org.apache.jackrabbit.oak.plugins.memory.ModifiedNodeState.compareAgainstBaseState(ModifiedNodeState.java:373)
        at 
org.apache.jackrabbit.oak.spi.commit.EditorDiff.process(EditorDiff.java:52)
        at 
org.apache.jackrabbit.oak.spi.commit.EditorDiff.childNodeChanged(EditorDiff.java:129)
        at 
org.apache.jackrabbit.oak.plugins.memory.ModifiedNodeState.compareAgainstBaseState(ModifiedNodeState.java:373)
        at 
org.apache.jackrabbit.oak.spi.commit.EditorDiff.process(EditorDiff.java:52)
        at 
org.apache.jackrabbit.oak.spi.commit.EditorHook.processCommit(EditorHook.java:50)
        at 
org.apache.jackrabbit.oak.spi.commit.CompositeHook.processCommit(CompositeHook.java:59)
        at 
org.apache.jackrabbit.oak.spi.commit.CompositeHook.processCommit(CompositeHook.java:59)
        at 
org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreBranch.optimisticMerge(SegmentNodeStoreBranch.java:110)
        at 
org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStoreBranch.merge(SegmentNodeStoreBranch.java:201)
        at 
org.apache.jackrabbit.oak.core.AbstractRoot$2.run(AbstractRoot.java:247)
        at 
org.apache.jackrabbit.oak.core.AbstractRoot$2.run(AbstractRoot.java:243)
        at java.security.AccessController.doPrivileged(Native Method)
        at javax.security.auth.Subject.doAs(Subject.java:337)
        at 
org.apache.jackrabbit.oak.core.AbstractRoot.commit(AbstractRoot.java:242)
        at 
org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.save(SessionDelegate.java:269)

Reply via email to