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