Bug 1080186

Summary: Creating a glue fails if one above level is a conflict or missing
Product: Red Hat Enterprise Linux 7 Reporter: Noriko Hosoi <nhosoi>
Component: 389-ds-baseAssignee: Noriko Hosoi <nhosoi>
Status: CLOSED ERRATA QA Contact: Viktor Ashirov <vashirov>
Severity: urgent Docs Contact:
Priority: urgent    
Version: 7.0CC: arubin, mreynolds, nkinder, ovasik, rmeggins, vashirov
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: 389-ds-base-1.3.3.1-11.el7 Doc Type: Bug Fix
Doc Text:
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.
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-03-05 09:34:11 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Noriko Hosoi 2014-03-24 21:01:41 UTC
This bug is created as a clone of upstream ticket:
https://fedorahosted.org/389/ticket/47750

Example:
dn: ou=test,ou=projects,nsuniqueid=bd44c40a-afc711e3-9b7bd5e4-7027b69c
 +o=org246,ou=ou0,dc=example,dc=com

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 */
256                     {
257                     /* JCMREPL - Create the parent ... recursion?... but what's the uniqueid? */
258                     PR_ASSERT(0); /* JCMREPL */ <== This assertion fails.
259                     }

Comment 1 Noriko Hosoi 2014-05-12 23:26:42 UTC
Steps to reproduce: https://bugzilla.redhat.com/show_bug.cgi?id=1080185#c1

Comment 4 Ann Marie Rubin 2014-12-18 19:05:19 UTC
Without this fix, DS returns a wrong entry.  This is a data inconsystency bug.

Comment 6 Viktor Ashirov 2015-01-16 01:58:39 UTC
$ rpm -qa | grep 389
389-ds-base-libs-1.3.3.1-11.el7.x86_64
389-ds-base-1.3.3.1-11.el7.x86_64

After running reproducer, in the logs:
./slapd-M1/errors:[15/Jan/2015:21:38:29 +0100] NSMMReplicationPlugin - conn=2254 op=119 csn=54b82545000004d00000: Can't resurrect tombstone to glue reason 'deletedEntryHasChildren'. Try with conflict dn o=bees3,ou=organizations,dc=example,dc=com, error=68
./slapd-M3/errors:[15/Jan/2015:21:38:29 +0100] NSMMReplicationPlugin - conn=2216 op=132 csn=54b82545000004d00000: Can't resurrect tombstone to glue reason 'deletedEntryHasChildren'. Try with conflict dn o=bees3,ou=organizations,dc=example,dc=com, error=68


Marking as VERIFIED.

Comment 8 errata-xmlrpc 2015-03-05 09:34:11 UTC
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.

https://rhn.redhat.com/errata/RHSA-2015-0416.html