Skip to content

[#1050] Document the replication repair control, and test that a repaired modify stays on its replica - #1052

Open
vharseko wants to merge 1 commit into
OpenIdentityPlatform:masterfrom
vharseko:feature/1050-repair-control-docs-test
Open

vharseko wants to merge 1 commit into
OpenIdentityPlatform:masterfrom
vharseko:feature/1050-repair-control-docs-test

Conversation

@vharseko

Copy link
Copy Markdown
Member

Follow-up to #1050, where an administrator asked how to give entries back the entryUUID values another directory had assigned to them, without breaking the replication topology.

The answer is the replication repair request control (1.3.6.1.4.1.26027.1.5.2), which the server has had since the ForgeRock days but which was only listed by its OID among the supported controls. This PR:

  • names the control in the reference appendix (asciidoc and docbook) and says what it does: the attributes replication owns can be written, on the replica the request is sent to only, without a message to the replication servers and without a trace in ds-sync-hist;
  • adds "Repairing an Entry on One Replica" to the replication chapter of the administration guide, with the ldapmodify --control procedure to run on each replica, the check to make afterwards, and the warning about repairing some replicas and not others;
  • turns ReplicationRepairControlTest, which covered the add case on an unreplicated suffix, into a test over a replicated suffix with a broker listening on the replication server. It now also checks that a modify of entryUUID and nsUniqueId under the control succeeds where the same modify without it is refused, reaches neither the replication server nor the error log, and leaves the entry replicating as any other under its repaired entryUUID. (A line-break missing from the LDIF of the add case is restored on the way: the entry was being added with an object class named personobjectClass: organizationalPerson, which the skipped schema check let through.)

Verified: the new assertions fail when MultimasterReplication.findDomain() no longer marks the repaired operation dontSynchronize (mutant run), and pass on the current code; the changed asciidoc renders without warnings.

The Relax Rules control, which looks like the alternative for this, behaves differently on a replicated suffix - see #1051.

Related: #1050.

…and test that a repaired modify stays on its replica

The control that lets an administrator write entryUUID and ds-sync-hist was only
listed by its OID among the supported controls. The reference appendix now names it
and says what it does, and the replication chapter of the administration guide
shows how to give an entry back the entryUUID another directory assigned to it -
on every replica in turn, since the change is not published.

ReplicationRepairControlTest covered the add case only, on a suffix that was not
replicated. It now runs over a replicated suffix with a broker listening on the
replication server, and checks that a modify of entryUUID and nsUniqueId under the
control succeeds where the same modify without it is refused, reaches neither the
replication server nor the error log, and leaves the entry replicating as any other
under its repaired entryUUID. A line-break missing from the LDIF of the add case is
restored as well.
@vharseko vharseko added docs tests Test suites: fixing, enabling, un-disabling replication labels Sep 15, 2026
@vharseko vharseko linked an issue Sep 16, 2026 that may be closed by this pull request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

docs replication tests Test suites: fixing, enabling, un-disabling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Need to update the entryUUID attribute

1 participant