From 4d765fa5d969e4a5aa5079ed370a61db1e726fbe Mon Sep 17 00:00:00 2001 From: woodser Date: Tue, 18 Feb 2025 08:16:13 -0500 Subject: [PATCH] resend deposit confirmed and payment sent messages more often until ack --- .../protocol/tasks/BuyerSendPaymentSentMessage.java | 13 +++++++++++-- .../tasks/SendDepositsConfirmedMessage.java | 6 +++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/haveno/core/trade/protocol/tasks/BuyerSendPaymentSentMessage.java b/core/src/main/java/haveno/core/trade/protocol/tasks/BuyerSendPaymentSentMessage.java index 42206c8de0..f060effe78 100644 --- a/core/src/main/java/haveno/core/trade/protocol/tasks/BuyerSendPaymentSentMessage.java +++ b/core/src/main/java/haveno/core/trade/protocol/tasks/BuyerSendPaymentSentMessage.java @@ -66,7 +66,7 @@ import lombok.extern.slf4j.Slf4j; public abstract class BuyerSendPaymentSentMessage extends SendMailboxMessageTask { private ChangeListener listener; private Timer timer; - private static final int MAX_RESEND_ATTEMPTS = 10; + private static final int MAX_RESEND_ATTEMPTS = 20; private int delayInMin = 10; private int resendCounter = 0; @@ -198,7 +198,16 @@ public abstract class BuyerSendPaymentSentMessage extends SendMailboxMessageTask onMessageStateChange(processModel.getPaymentSentMessageStateProperty().get()); } - delayInMin = delayInMin * 2; + // first re-send is after 2 minutes, then increase the delay exponentially + if (resendCounter == 0) { + int shortDelay = 2; + log.info("We will send the message again to the peer after a delay of {} min.", shortDelay); + timer = UserThread.runAfter(this::run, shortDelay, TimeUnit.MINUTES); + } else { + log.info("We will send the message again to the peer after a delay of {} min.", delayInMin); + timer = UserThread.runAfter(this::run, delayInMin, TimeUnit.MINUTES); + delayInMin = (int) ((double) delayInMin * 1.5); + } resendCounter++; } diff --git a/core/src/main/java/haveno/core/trade/protocol/tasks/SendDepositsConfirmedMessage.java b/core/src/main/java/haveno/core/trade/protocol/tasks/SendDepositsConfirmedMessage.java index 8be8f00da5..fb17d60d4d 100644 --- a/core/src/main/java/haveno/core/trade/protocol/tasks/SendDepositsConfirmedMessage.java +++ b/core/src/main/java/haveno/core/trade/protocol/tasks/SendDepositsConfirmedMessage.java @@ -37,7 +37,7 @@ import lombok.extern.slf4j.Slf4j; @Slf4j public abstract class SendDepositsConfirmedMessage extends SendMailboxMessageTask { private Timer timer; - private static final int MAX_RESEND_ATTEMPTS = 10; + private static final int MAX_RESEND_ATTEMPTS = 20; private int delayInMin = 10; private int resendCounter = 0; @@ -137,7 +137,7 @@ public abstract class SendDepositsConfirmedMessage extends SendMailboxMessageTas timer.stop(); } - // first re-send is after 2 minutes, then double the delay each iteration + // first re-send is after 2 minutes, then increase the delay exponentially if (resendCounter == 0) { int shortDelay = 2; log.info("We will send the message again to the peer after a delay of {} min.", shortDelay); @@ -145,7 +145,7 @@ public abstract class SendDepositsConfirmedMessage extends SendMailboxMessageTas } else { log.info("We will send the message again to the peer after a delay of {} min.", delayInMin); timer = UserThread.runAfter(this::run, delayInMin, TimeUnit.MINUTES); - delayInMin = delayInMin * 2; + delayInMin = (int) ((double) delayInMin * 1.5); } resendCounter++; }