From 9e8bd8d694d82ec117c2c4a89c5d1aab2e52af94 Mon Sep 17 00:00:00 2001
From: Valery Kharseko <vharseko@3a-systems.ru>
Date: Fri, 25 Sep 2026 14:30:27 +0000
Subject: [PATCH] [#1080] Give back the send-window permit of an update the writer drops, and count only what it sends (#1106)
---
opendj-server-legacy/src/main/java/org/opends/server/replication/server/ServerWriter.java | 21 +++++++++++++++------
1 files changed, 15 insertions(+), 6 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/replication/server/ServerWriter.java b/opendj-server-legacy/src/main/java/org/opends/server/replication/server/ServerWriter.java
index 9f68e4b..fb16ac6 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/replication/server/ServerWriter.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/replication/server/ServerWriter.java
@@ -115,21 +115,30 @@
* ReplicationServerDomain.put() applied when it queued the message, so a peer RS can
* be given a message this drops - the shutdown must stop waiting for a forward which
* will never be reported.
+ * <p>
+ * The permit take() charged it is given back as well, whichever filter dropped it: the
+ * server never receives it, so no credit will ever come for it, and nor is it counted
+ * as sent (issue #1080).
*/
+ handler.releasePermitInSendWindow();
if (updateMsg instanceof ReplicaOfflineMsg && !handler.isDataServer())
{
dsrsShutdownSync.replicaOfflineMsgNotForwarded(
replicationServerDomain.getBaseDN(), handler.getServerId());
}
}
- else if (updateMsg instanceof ReplicaOfflineMsg && !handler.isDataServer())
- {
- forwardReplicaOfflineMsg((ReplicaOfflineMsg) updateMsg);
- }
else
{
- // Publish the update to the remote server using a protocol version it supports
- session.publish(updateMsg);
+ handler.countSentUpdate(updateMsg);
+ if (updateMsg instanceof ReplicaOfflineMsg && !handler.isDataServer())
+ {
+ forwardReplicaOfflineMsg((ReplicaOfflineMsg) updateMsg);
+ }
+ else
+ {
+ // Publish the update to the remote server using a protocol version it supports
+ session.publish(updateMsg);
+ }
}
}
}
--
Gitblit v1.10.0