-
1. Re: How to fix broken parent-child relations (NodeNotFoundInParentException)
hchiorean Feb 23, 2015 7:16 AM (in response to javagirlie)If you're using eviction for you caches, you might be running into [MODE-2280] Child node not found under high concurrency when eviction is enabled - JBoss Issue Tracker - which is caused by an Infinispan bug. Unfortunately there is no workaround for that until ISPN fixes the underlying issue and ModeShape moves to that version of Infinispan.
If you're not using eviction and/or are able to provide a test case to replicate the problem locally, we can look into. MODE-2418 was very specific to versioning and concurrent checkin operations, which may or may not apply to your case.
-
2. Re: How to fix broken parent-child relations (NodeNotFoundInParentException)
javagirlie Feb 23, 2015 7:41 AM (in response to hchiorean)What we would like to know is, if there is a way to repair such broken parent nodes in case the NodeNotFoundInParentException has already occurred (or to remove/cleanup those child nodes which cannot be located in their parent anymore).
-
3. Re: How to fix broken parent-child relations (NodeNotFoundInParentException)
hchiorean Feb 23, 2015 7:48 AM (in response to javagirlie)ModeShape stores the parent - child relationship in the parent as an array of children IDs. If the parent data (the persisted document) becomes corrupted & missing children, there is nothing which can be done automatically by ModeShape. If that is the case, the only chance (if it applies to your context) is to catch the exception and try to cleanup/retry the operation from your application code.
However, there have been other bugs previously which weren't necessarily caused by data corruption - i.e. the stored data was fine - but the same exception was raised. We can investigate such cases (like MODE-2418) provided we can reproduce them locally.
BTW, I already assume you're using READ_COMMITTED isolation & PESSIMISTIC locking in your Infinispan configuration (which are a "must" in any concurrent scenario).
-
4. Re: How to fix broken parent-child relations (NodeNotFoundInParentException)
dev_java Feb 23, 2015 8:42 AM (in response to hchiorean)As you assumed, we've configured READ_COMMITTED isolation & PESSIMISTIC locking. We're not using eviction for our clustered caches, but eviction is configured for the local workspace cache with the defaults from default-workspace-cache-config.xml.
-
5. Re: How to fix broken parent-child relations (NodeNotFoundInParentException)
hchiorean Feb 23, 2015 9:04 AM (in response to dev_java)default-workspace-cache-config.xml is essentially an in-memory map, so don't expect that to come into play as far as this issue. What you're seeing is probably a bug somewhere, but without something to run & reproduce locally there's not much we can do.