Skip to content

Detected inconsistency error #194

@Wolfgang-Winter

Description

@Wolfgang-Winter

Hi, we get (sometimes) an exception when comparing two objects and I don't know what it means:

Caused by: java.lang.IllegalArgumentException: Detected inconsistency in enter/leave sequence. Must always be LIFO. at de.danielbechler.diff.circular.CircularReferenceDetector.remove(CircularReferenceDetector.java:113) at de.danielbechler.diff.differ.DifferDispatcher.forgetInstances(DifferDispatcher.java:205) at de.danielbechler.diff.differ.DifferDispatcher.compareWithCircularReferenceTracking(DifferDispatcher.java:164) at de.danielbechler.diff.differ.DifferDispatcher.compare(DifferDispatcher.java:145) at de.danielbechler.diff.differ.DifferDispatcher.dispatch(DifferDispatcher.java:93) at de.danielbechler.diff.differ.BeanDiffer.compareUsingIntrospection(BeanDiffer.java:114) at de.danielbechler.diff.differ.BeanDiffer.compareUsingAppropriateMethod(BeanDiffer.java:104) at de.danielbechler.diff.differ.BeanDiffer.compare(BeanDiffer.java:90) at de.danielbechler.diff.differ.DifferDispatcher.compare(DifferDispatcher.java:188) at de.danielbechler.diff.differ.DifferDispatcher.compareWithCircularReferenceTracking(DifferDispatcher.java:158) at de.danielbechler.diff.differ.DifferDispatcher.compare(DifferDispatcher.java:145) at de.danielbechler.diff.differ.DifferDispatcher.dispatch(DifferDispatcher.java:93) at de.danielbechler.diff.differ.CollectionDiffer.compareItems(CollectionDiffer.java:119) at de.danielbechler.diff.differ.CollectionDiffer.compareInternally(CollectionDiffer.java:141) at de.danielbechler.diff.differ.CollectionDiffer.compare(CollectionDiffer.java:93) at de.danielbechler.diff.differ.DifferDispatcher.compare(DifferDispatcher.java:188) at de.danielbechler.diff.differ.DifferDispatcher.compareWithCircularReferenceTracking(DifferDispatcher.java:158) at de.danielbechler.diff.differ.DifferDispatcher.compare(DifferDispatcher.java:145) at de.danielbechler.diff.differ.DifferDispatcher.dispatch(DifferDispatcher.java:93) at de.danielbechler.diff.differ.BeanDiffer.compareUsingIntrospection(BeanDiffer.java:114) at de.danielbechler.diff.differ.BeanDiffer.compareUsingAppropriateMethod(BeanDiffer.java:104) at de.danielbechler.diff.differ.BeanDiffer.compare(BeanDiffer.java:90) at de.danielbechler.diff.differ.DifferDispatcher.compare(DifferDispatcher.java:188) at de.danielbechler.diff.differ.DifferDispatcher.compareWithCircularReferenceTracking(DifferDispatcher.java:158) at de.danielbechler.diff.differ.DifferDispatcher.compare(DifferDispatcher.java:145) at de.danielbechler.diff.differ.DifferDispatcher.dispatch(DifferDispatcher.java:93) at de.danielbechler.diff.ObjectDiffer.compare(ObjectDiffer.java:49) at com.logitags.cibet.core.CibetUtil.compare(CibetUtil.java:497)

Here is our code:

L. 497: DiffNode root = getObjectDiffer().compare(work, base);

public static ObjectDiffer getObjectDiffer() {
if (objectDiffer == null) {
objectDiffer = ObjectDifferBuilder.startBuilding().introspection()
.setDefaultIntrospector(new EntityIntrospector()).and().differs()
.register(new PrimitiveArrayDifferFactory()).build();
}
return objectDiffer;
}

Can it be that when several theads execute this code in parallel there is some concurrency problem? Is this thread-safe?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions