From e5890b3b6f761de25a1814c98d1b7cbd827acd05 Mon Sep 17 00:00:00 2001 From: PhilReact Date: Thu, 10 Jul 2025 14:40:13 +0300 Subject: [PATCH] added cooling period in case of re-connections --- .../org/qortal/network/PeerSendManager.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/qortal/network/PeerSendManager.java b/src/main/java/org/qortal/network/PeerSendManager.java index 8b02e461..1a59c9fd 100644 --- a/src/main/java/org/qortal/network/PeerSendManager.java +++ b/src/main/java/org/qortal/network/PeerSendManager.java @@ -13,6 +13,7 @@ import org.qortal.network.message.Message; public class PeerSendManager { private static final Logger LOGGER = LogManager.getLogger(PeerSendManager.class); + private volatile boolean coolingDown = false; private static final int MAX_RETRIES = 15; private static final int BASE_RETRY_DELAY_MS = 100; @@ -75,8 +76,18 @@ private final ExecutorService executor = Executors.newSingleThreadExecutor(new T peer, MAX_RETRIES); peer.disconnect("SendMessage retries exceeded"); + coolingDown = true; queue.clear(); - break; + + try { + Thread.sleep(30_000); // Give time for peer to possibly reconnect + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + return; + } + coolingDown = false; + + continue; // Loop again in case the peer reconnects } // Throttle after successful send @@ -95,6 +106,10 @@ private final ExecutorService executor = Executors.newSingleThreadExecutor(new T private volatile long lastUsed = System.currentTimeMillis(); public void queueMessage(Message message) { + if (coolingDown) { + LOGGER.debug("PeerSendManager in cooldown, ignoring message {}", message.getId()); + return; // or block/wait if you prefer + } lastUsed = System.currentTimeMillis(); this.queue.offer(message); }