Bug 1552698

Summary: replicated operations should be serialized.
Product: Red Hat Enterprise Linux 7 Reporter: German Parente <gparente>
Component: 389-ds-baseAssignee: mreynolds
Status: CLOSED ERRATA QA Contact: RHDS QE <ds-qe-bugs>
Severity: urgent Docs Contact: Marc Muehlfeld <mmuehlfe>
Priority: urgent    
Version: 7.7-AltCC: cpelland, gparente, lkrispen, msauton, nkinder, pasik, rmeggins, ryamamot, tbordaz, tmihinto
Target Milestone: rcKeywords: ZStream
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: 389-ds-base-1.3.8.2-1.el7 Doc Type: Bug Fix
Doc Text:
Thread processing in Directory Server has been serialized On an incoming replicated session, a replicated operation must only be processed when the previous one is completed. In certain situations, the thread which processed the start session operation continued to read and process replicated operations. Consequently, two replicated operations ran in parallel that led to inconsistencies, such as an completed child "add" operation before the parent entry was added. With this update, the thread processing the start session operation no longer processes further operations, even if some are available in the read buffer. As a result, the inconsistencies no longer occur in the mentioned scenario.
Story Points: ---
Clone Of:
: 1579698 (view as bug list) Environment:
Last Closed: 2018-10-30 10:13:31 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1579698    

Description German Parente 2018-03-07 14:51:13 UTC
Description of problem:

We have observed in a read only consumer that the operations are not completely serialized. This should not be a problem except when we add a parent and inmediately after, a child. If the child is processed before the parent or the parent has not finished to be processed, the child could fail to be added. Or a glue entry created, as we have seen already in a customer case. Logs:

[05/Mar/2018:22:59:36.576352590 -0800] conn=5952102 op=800 ADD dn="ou=parent,ou=Projects,dc=example,dc=com"
[05/Mar/2018:22:59:36.577978254 -0800] conn=5952102 op=801 ADD dn="ou=child,ou=parent,ou=Projects,dc=example,dc=com"
[05/Mar/2018:22:59:36.647458809 -0800] conn=5952102 op=801 RESULT err=0 tag=105 nentries=0 etime=0.073000 csn=5a9e3c58000003e90000
[05/Mar/2018:22:59:36.651239085 -0800] conn=5952102 op=802 ADD dn="ou=child2,ou=parent,ou=Projects,dc=example,dc=com"
[05/Mar/2018:22:59:36.651830303 -0800] conn=5952102 op=800 RESULT err=0 tag=105 nentries=0 etime=0.078000 csn=5a9e3c57000003e90000

errors:

[05/Mar/2018:22:59:36.640046623 -0800] - NOTICE - NSMMReplicationPlugin - create_glue_entry - conn=5952102 op=801 csn=5a9e3c58000003e90000: Created glue entry ou=parent,ou=Projects,dc=example,dc=com uniqueid=dbc0c281-210b11e8-bb36c1a8-ea47160f reason missingEntry

Version-Release number of selected component (if applicable): latest RHDS10.

Comment 2 German Parente 2018-03-07 14:52:16 UTC
Just to add, in this case the consumer is a read only replica. So, the glue entry is created in the read only replica and it's extremely complicated to be deleted. We have to re-initialize the consumer each time.

Comment 3 thierry bordaz 2018-03-09 08:26:20 UTC
The creation and handling of the glue entry is not designed for such condition where replicated operation are not serialized.
The focus of that BZ should be failure of serialization.

Comment 23 errata-xmlrpc 2018-10-30 10:13:31 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://access.redhat.com/errata/RHSA-2018:3127