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/main/java/org/opends/server/replication/server/changelog/file/Log.java |   16 +++++++++-------
 1 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/opendj-server-legacy/src/main/java/org/opends/server/replication/server/changelog/file/Log.java b/opendj-server-legacy/src/main/java/org/opends/server/replication/server/changelog/file/Log.java
index 0839b7c..61d8233 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/replication/server/changelog/file/Log.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/replication/server/changelog/file/Log.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;
 
@@ -411,10 +412,12 @@
    *
    * @param record
    *          The record to add.
+   * @return {@code true} if the record was appended, {@code false} if it was not: its key is not
+   *         higher than the key of the last record added, or this log is closed
    * @throws ChangelogException
    *           If an error occurs while adding the record to the log.
    */
-  public void append(final Record<K, V> record) throws ChangelogException
+  public boolean append(final Record<K, V> record) throws ChangelogException
   {
     // Fast-path - assume that no rotation is needed and use shared lock.
     sharedLock.lock();
@@ -422,13 +425,12 @@
     {
       if (isClosed)
       {
-        return;
+        return false;
       }
       LogFile<K, V> headLogFile = getHeadLogFile();
       if (!mustRotate(headLogFile))
       {
-        headLogFile.append(record);
-        return;
+        return headLogFile.append(record);
       }
     }
     finally
@@ -442,13 +444,13 @@
     {
       if (isClosed)
       {
-        return;
+        return false;
       }
       LogFile<K, V> headLogFile = getHeadLogFile();
       if (headLogFile.appendWouldBreakKeyOrdering(record))
       {
         // abort rotation
-        return;
+        return false;
       }
       if (mustRotate(headLogFile))
       {
@@ -457,7 +459,7 @@
         rotateHeadLogFile();
         headLogFile = getHeadLogFile();
       }
-      headLogFile.append(record);
+      return headLogFile.append(record);
     }
     finally
     {

--
Gitblit v1.10.0