Bug 1061060

Summary: betxn: retro changelog broken after cancelled transaction
Product: Red Hat Enterprise Linux 7 Reporter: Milan Kubík <mkubik>
Component: 389-ds-baseAssignee: mreynolds
Status: CLOSED ERRATA QA Contact: Viktor Ashirov <vashirov>
Severity: unspecified Docs Contact:
Priority: low    
Version: 7.0CC: nhosoi, nkinder, vashirov
Target Milestone: rc   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: 389-ds-base-1.3.3.1-1.el7 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2015-03-05 09:33:42 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:
Attachments:
Description Flags
bug reproducer
none
bug reproducer scenario 2 none

Description Milan Kubík 2014-02-04 10:25:55 UTC
Created attachment 859026 [details]
bug reproducer

Description of problem:
If the first transaction after enabling the retro changelog plugin fails, the database gets corrupted and any subsequent successful operation is not recorded into changelog.

Version-Release number of selected component (if applicable):
389-ds-base-1.3.1.6-18.el7

How reproducible:
Always

Steps to Reproduce:
1. Turn on the retro changelog plugin. Restart.
2. Create a transaction that fails. E.g. by auto membership plugin.
3. Add entry in a transaction that succeeds.

Actual results:
ldapsearch -b "cn=changelog" does not show any sub-entries
log:
[04/Feb/2014:11:06:03 +0100] auto-membership-plugin - automember_add_member_value: Unable to add "cn=tuser,ou=people,dc=example,dc=com" as a "member" value to group "cn=testgroup,ou=groups,dc=example,dc=com" (No such object).
[04/Feb/2014:11:06:03 +0100] DSRetroclPlugin - replog: an error occured while adding change number 1, dn = changenumber=1,cn=changelog: Already exists. 


Expected results:
The successful entry should be recorded in changelog

Comment 1 Milan Kubík 2014-02-04 13:05:13 UTC
Scenario 2:
When a transaction fails and there are some changes in the retro changelog,
the changelog skips the change sequence number that the change would have.

Steps to Reproduce:
1. Turn on the retro changelog plugin
2. Add some entry in a successful transaction.
3. Do a modification and cancel the transaction. E.g. by auto membership plugin.
4. Add some other entry in a successful transaction.

Actual result:
The sequence number is skipped in the changelog.
There is no trace of this in error log.

Expected result:
The failed transaction is ignored and next successful change to directory has a sequence number N+1 where N is the sequence number of the last successful transaction/modification.

This is probably caused by the same bug.
Attaching the reproducer for this one (It's almost the same, but little bit rearanged.)

Comment 2 Milan Kubík 2014-02-04 13:05:56 UTC
Created attachment 859133 [details]
bug reproducer scenario 2

Comment 5 Noriko Hosoi 2014-02-20 18:19:42 UTC
Upstream ticket:
https://fedorahosted.org/389/ticket/47712

Comment 12 errata-xmlrpc 2015-03-05 09:33:42 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