Cause: tombstone resurrection did not consider the case its parent entry had become a conflict entry. Also, resurrected tombstone treatment was missing in the entryrdn index.
Consequence: The parent-child relationship was confused when a tombstone was resurrected.
Fix: Even if the parent of a tombstone entry has become a conflict entry, the parent-child relationship is correctly managed.
Result: The DIT structure is properly maintained under the stress.
This bug is created as a clone of upstream ticket:
Trying to resurrect ou=test and adding a glue entry ou=projects. Then, the add fails due to its parent not found since o=org246 is a conflict.
210 create_glue_entry ( Slapi_PBlock *pb, char *sessionid, Slapi_DN *dn, const char *uniqueid, CSN *opcsn )
239 op_result= do_create_glue_entry(rdn, superiordn, uniqueid, "missingEntry", opcsn);
254 case LDAP_NO_SUCH_OBJECT:
255 /* The parent is missing */
257 /* JCMREPL - Create the parent ... recursion?... but what's the uniqueid? */
258 PR_ASSERT(0); /* JCMREPL */ <== This assertion fails.
Created attachment 894899 [details]
test script & data
How to run the test script:
1) setup 3 way mmr (M0 <--> M1 <--> M2 <--> M0)
2) untar the attached tar file reproducer.tar
3) update reproducer.sh to adjust the servers
4) ldapmodify -x ... -af test.ldif
5) sh -x reproducer.sh
If you see a log "Can't resurrect tombstone to glue reason 'deletedEntryHasChildren', Try with conflict dn o=bees##,ou=organizations,<suffix>, error=68" in the error log and the test goes to the end (loop count 200), the bug is verified.
Any chance of this getting out of QA and into a release for 5.X and 6.X? :) Thanks.
P.S. We're also looking forward to https://bugzilla.redhat.com/show_bug.cgi?id=1097002 at the same time. :)
(In reply to Jesse Adelman, Collab.Net from comment #3)
> Any chance of this getting out of QA and into a release for 5.X and 6.X? :)
Can you wait until RHEL 6.6 is released? Should be another couple of months. That's the only way to get a "supported" fix for this issue.
For RHEL 5, we will need to do an EPEL5 release from the latest 1.2.11 branch.
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.
For information on the advisory, and where to find the updated
files, follow the link below.
If the solution does not work for you, open a new bug report.