Am 07.06.2015 15:49, schrieb Paolo Di Tommaso:
Well, the point it that I'm not using any ManagedLinkedList object in my
code.

At a first look it seems to me a side effect of this change:

https://issues.apache.org/jira/browse/GROOVY-6704

the change made it maybe obvious, but the problem is deeper.

ManagedLinkedList uses a reference manager, which will check elements of the list if they are still exist, since the elements are weak or soft referenced usually. This manager could be in a thread, but in groovy-core it is normally just triggered every now and then. Now, one manager handles one ReferenceQueue, but in theory multiple lists can share the same multiple manager. Now if the cleanup process is triggered by multiple lists "at the same time", there might be multiple threads operating the same manager and same ReferenceQueue. I assume it is a situation like that, which you experience. Solution are obviously that those lists each have their own manager or that the manager adds some synchronization to avoid this situation. Not sure yet what the best approach is

bye blackdrag

--
Jochen "blackdrag" Theodorou
blog: http://blackdragsview.blogspot.com/

Reply via email to