From b8a4d35f03b7fa5cf0d80a9424224f6ddeb3b3f9 Mon Sep 17 00:00:00 2001
From: Valery Kharseko <vharseko@3a-systems.ru>
Date: Mon, 19 Oct 2026 08:52:10 +0000
Subject: [PATCH] [#1206] Take a late handler of a replication server back to its queue only once its consumer has every change the queue lacks (#1219)
---
opendj-server-legacy/src/test/java/org/opends/server/replication/server/changelog/file/LogTest.java | 24 ++++++++++++++++++++++++
1 files changed, 24 insertions(+), 0 deletions(-)
diff --git a/opendj-server-legacy/src/test/java/org/opends/server/replication/server/changelog/file/LogTest.java b/opendj-server-legacy/src/test/java/org/opends/server/replication/server/changelog/file/LogTest.java
index 5c084ca..aee0ad1 100644
--- a/opendj-server-legacy/src/test/java/org/opends/server/replication/server/changelog/file/LogTest.java
+++ b/opendj-server-legacy/src/test/java/org/opends/server/replication/server/changelog/file/LogTest.java
@@ -12,6 +12,7 @@
* information: "Portions Copyright [year] [name of copyright owner]".
*
* Copyright 2014-2016 ForgeRock AS.
+ * Portions Copyright 2026 3A Systems, LLC.
*/
package org.opends.server.replication.server.changelog.file;
@@ -82,6 +83,29 @@
return Log.openLog(replicationEnv, LOG_DIRECTORY, parser, rotationParams);
}
+ /**
+ * A record whose key is not after the newest one is not appended, whether the head log file is
+ * to be rotated or not, and the log tells so.
+ */
+ @Test
+ public void appendTellsWhetherTheRecordWasAppended() throws Exception
+ {
+ try (Log<String, String> log = openLog(RECORD_PARSER))
+ {
+ // the head log file holds 2 records: the next append rotates it
+ assertThat(log.append(Record.from("key010", "value10 again"))).as("the newest key again").isFalse();
+ assertThat(log.append(Record.from("key005", "value5 again"))).as("an older key").isFalse();
+ assertThat(log.append(Record.from("key011", "value11"))).as("a newer key").isTrue();
+ // the new head log file holds 1 record: no rotation
+ assertThat(log.append(Record.from("key011", "value11 again"))).as("the newest key again").isFalse();
+
+ try (DBCursor<Record<String, String>> cursor = log.getCursor())
+ {
+ assertThatCursorCanBeFullyReadFromStart(cursor, 1, 11);
+ }
+ }
+ }
+
@Test
public void testCursor() throws Exception
{
--
Gitblit v1.10.0