My code is throwing the error below:
java.lang.StackOverflowError
at jetbrains.exodus.entitystore.EntityIterableCache.putIfNotCached(EntityIterableCache.java:100)
at jetbrains.exodus.entitystore.iterate.EntityIterableBase.asProbablyCached(EntityIterableBase.java:578)
at jetbrains.exodus.entitystore.iterate.EntityIterableBase.iterator(EntityIterableBase.java:138)
at jetbrains.exodus.entitystore.iterate.binop.MinusIterable$SortedIterator.<init>(MinusIterable.java:72)
at jetbrains.exodus.entitystore.iterate.binop.MinusIterable$SortedIterator.<init>(MinusIterable.java:59)
at jetbrains.exodus.entitystore.iterate.binop.MinusIterable.getIteratorImpl(MinusIterable.java:55)
at jetbrains.exodus.entitystore.iterate.binop.MinusIterable.getIteratorImpl(MinusIterable.java:23)
at jetbrains.exodus.entitystore.iterate.EntityIterableBase.iterator(EntityIterableBase.java:138)
at jetbrains.exodus.entitystore.iterate.binop.MinusIterable$SortedIterator.<init>(MinusIterable.java:72)
at jetbrains.exodus.entitystore.iterate.binop.MinusIterable$SortedIterator.<init>(MinusIterable.java:59)
at jetbrains.exodus.entitystore.iterate.binop.MinusIterable.getIteratorImpl(MinusIterable.java:55)
at jetbrains.exodus.entitystore.iterate.binop.MinusIterable.getIteratorImpl(MinusIterable.java:23)
at jetbrains.exodus.entitystore.iterate.EntityIterableBase.iterator(EntityIterableBase.java:138)
at jetbrains.exodus.entitystore.iterate.binop.MinusIterable$SortedIterator.<init>(MinusIterable.java:72)
at jetbrains.exodus.entitystore.iterate.binop.MinusIterable$SortedIterator.<init>(MinusIterable.java:59)
at jetbrains.exodus.entitystore.iterate.binop.MinusIterable.getIteratorImpl(MinusIterable.java:55)
at jetbrains.exodus.entitystore.iterate.binop.MinusIterable.getIteratorImpl(MinusIterable.java:23)
It does not point exactly where in my code is the root cause, but I know in my code I have this:
EntityIterable tempEntities = txn.findWithProp(entityType, propertyName);
tempEntities.forEach(entity -> {
if (!match(entity.getProperty(propertyName))) {
tempEntities = tempEntities.minus(txn.getSingletonIterable(entity));
}
);
And I know that the count for the tempEntities
is 10,000+ items, since the code did a save for 10,000+ entities prior to this throwing.
Does it mean you can't iterate over like 10K entities with Xodus?