Community
Participate
Working Groups
As a solution to bug 298561, I introduced a mechanism that removes locally new (i.e. uncommitted) references pointing to objects that are about to be removed/invalidated because of an incoming update/refresh. This mechanism is flawed in that it will also remove such references if the target pointed to is CLEAN. If the reference has an eOpposite, this removal itself will make the target DIRTY (due to implicit adjustment of the eOpposite ref), even though the user did not modify the object. Immediately afterwards, the actual invalidation is performed, and invalidating the now DIRTY object puts it in INVALID_CONFLICT state while it should have just been INVALID (i.e. remotely detached). Working on fix.
Created attachment 173520 [details] Patch including test case
Created attachment 173527 [details] Patch v2 including testcase This patch includes changes to the older testcase for bug 298561.
Created attachment 173531 [details] Fix+Test v3 - reformatted
Created attachment 173537 [details] Fix+test v4
Committed to HEAD.
Should be fixed in 3.0 maintenance also! (Will open separate Zilla.)
Available in R20110608-1407