These changes rovides the ability to repair
the consistency in the replication topology in the (hopefully) rare case
when hardware failure or software bugs could break it (issue 788 and 791)
There are several parts in this commit :
- a new log file called replication was added.
It's purpose is to store all the consistency errors detected by the replication
with enough information to allow the administrator to repair the problem.
This file is configured by default and contain only the replication errors,
To achieve the a new log severity keyword "None" has been created so that
the associated error log publisher does not print any error not related to
replication. (I will update the reference guide after this commit)
- a new control (the replication repair control) has been added.
When this control is used in a MODIFY, DELETE, ADD or MODDN operation
the operation is marked as a non-replicated replication operation.
This cause the following :
- The operation is allowed to modify attributes that are normally not
allowed to be modified or added (NO-USER-MODIFCATION) such as
entryuuid and ds-sync-hist
To achieve this I add to move those checks from the
AddOperationBasis.getObjectClasses() or AddOperationBasis.getUserAttributes()
to the LocalBackendWorkflowElement.processAdd() but this has already
been reviewed.
- no change number is associated to the operation.
- the operation is not published to the replication server and is therefore
a local only operation.
- the replication don't try to solve conflict or generate historical information
for this operation.
The intended usage of this control is that the administrator will check
for errors in the replication log, determine the entries that have inconsistent
values and use the control to repair them.
I will write some documentation explaining in more details how to do this.
- even though this is not related to replication repair I also took advantage of
this change to add the multimaster replication synchronization provider
in the default configuration.
This will make configuration of replication using dsconfig easier because
the user will now only need to configure the replication servers and
replication domains.