Created attachment 859026 [details]
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):
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.
ldapsearch -b "cn=changelog" does not show any sub-entries
[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.
The successful entry should be recorded in changelog
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.
The sequence number is skipped in the changelog.
There is no trace of this in error log.
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.)
Created attachment 859133 [details]
bug reproducer scenario 2
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.