Community
Participate
Working Groups
Created attachment 190727 [details] Stacktrace Consider the attached stacktrace which was dumped by a CDOServer running with a DB store. Apparently its possible somehow, under certain circumstances, for a CDOList to remain uninitialized, i.e. for it to contain instances of CDORevisionUtil.Uninitialized Further observations: - Clearing the server revision cache solves the problem. - Before the problem occurred, a client had been killed. (It's not certain whether this has any bearing on the problem or not.) - The UNINITIALIZED value is only added to CDOList in 2 locations: 1. CDOListImpl.CDOListImpl (the constructor) 2. AbstractHorizontalClassMapping.readValuesFromStatement
From a code review, it seems to me that one way this could happen is for prefetching to be combined with chunking. When chunking is used, some of the elements in an isMany reference will remain set to 'CDORevisionUtil.Uninitialized', but the code in LoadRevisionsIndication.prefetchRevision seems to assume that all elements in such a collection can be cast to CDOID. But then, I've never used chunking and/or prefetching, so I'm not too sure I'm right about this. Any comments would be welcome...
Created attachment 191656 [details] Testcase (as a patch) Test fails for DB repo configs.
Created attachment 191657 [details] Patch
Looks good to me.
Committed revision 7576.
Available in R20110608-1407