From c147aaf0250b1d460b2cfab5c39d425be78ff9b5 Mon Sep 17 00:00:00 2001 From: woodser <13068859+woodser@users.noreply.github.com> Date: Mon, 25 Aug 2025 22:13:03 -0400 Subject: [PATCH 1/2] publish trade stat after random delay in ms --- core/src/main/java/haveno/core/trade/Trade.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/haveno/core/trade/Trade.java b/core/src/main/java/haveno/core/trade/Trade.java index 753e0370fd1..4fd38169b66 100644 --- a/core/src/main/java/haveno/core/trade/Trade.java +++ b/core/src/main/java/haveno/core/trade/Trade.java @@ -2476,7 +2476,7 @@ public void maybePublishTradeStatistics() { // publish after random delay within 24 hours UserThread.runAfterRandomDelay(() -> { if (!isShutDownStarted) doPublishTradeStatistics(); - }, 0, 24, TimeUnit.HOURS); + }, 0, 24 * 60 * 60 * 1000, TimeUnit.MILLISECONDS); } } From e5af708397284a07d72e2127d883817308f7ddcb Mon Sep 17 00:00:00 2001 From: woodser <13068859+woodser@users.noreply.github.com> Date: Sat, 30 Aug 2025 19:26:20 -0400 Subject: [PATCH 2/2] add random delay to publish trade statistics on startup within 24 hours --- core/src/main/java/haveno/core/trade/Trade.java | 3 ++- .../core/trade/statistics/TradeStatisticsManager.java | 11 +++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/haveno/core/trade/Trade.java b/core/src/main/java/haveno/core/trade/Trade.java index 4fd38169b66..e05536deec6 100644 --- a/core/src/main/java/haveno/core/trade/Trade.java +++ b/core/src/main/java/haveno/core/trade/Trade.java @@ -65,6 +65,7 @@ import haveno.core.trade.protocol.TradeListener; import haveno.core.trade.protocol.TradePeer; import haveno.core.trade.protocol.TradeProtocol; +import haveno.core.trade.statistics.TradeStatisticsManager; import haveno.core.util.PriceUtil; import haveno.core.util.VolumeUtil; import haveno.core.xmr.model.XmrAddressEntry; @@ -2476,7 +2477,7 @@ public void maybePublishTradeStatistics() { // publish after random delay within 24 hours UserThread.runAfterRandomDelay(() -> { if (!isShutDownStarted) doPublishTradeStatistics(); - }, 0, 24 * 60 * 60 * 1000, TimeUnit.MILLISECONDS); + }, 0, TradeStatisticsManager.PUBLISH_STATS_RANDOM_DELAY_HOURS * 60 * 60 * 1000, TimeUnit.MILLISECONDS); } } diff --git a/core/src/main/java/haveno/core/trade/statistics/TradeStatisticsManager.java b/core/src/main/java/haveno/core/trade/statistics/TradeStatisticsManager.java index 9188da25d18..1e20efd5c2b 100644 --- a/core/src/main/java/haveno/core/trade/statistics/TradeStatisticsManager.java +++ b/core/src/main/java/haveno/core/trade/statistics/TradeStatisticsManager.java @@ -20,6 +20,8 @@ import com.google.inject.Inject; import com.google.inject.Singleton; import com.google.inject.name.Named; + +import haveno.common.UserThread; import haveno.common.config.Config; import haveno.common.file.JsonFileManager; import haveno.core.locale.CurrencyTuple; @@ -55,6 +57,7 @@ public class TradeStatisticsManager { private final boolean dumpStatistics; private final ObservableSet observableTradeStatisticsSet = FXCollections.observableSet(); private JsonFileManager jsonFileManager; + public static final int PUBLISH_STATS_RANDOM_DELAY_HOURS = 24; @Inject public TradeStatisticsManager(P2PService p2PService, @@ -299,8 +302,12 @@ public void maybePublishTradeStatistics(Set trades, return; } - log.info("Publishing trade statistics for {} {}", trade.getClass().getSimpleName(), trade.getShortId()); - p2PService.addPersistableNetworkPayload(tradeStatistics3V2, true); + // publish after random delay within 24 hours + log.info("Scheduling to publish trade statistics at random time for {} {}", trade.getClass().getSimpleName(), trade.getShortId()); + TradeStatistics3 tradeStatistics3V2Final = tradeStatistics3V2; + UserThread.runAfterRandomDelay(() -> { + p2PService.addPersistableNetworkPayload(tradeStatistics3V2Final, true); + }, 0, PUBLISH_STATS_RANDOM_DELAY_HOURS * 60 * 60 * 1000, TimeUnit.MILLISECONDS); }); log.info("maybeRepublishTradeStatistics took {} ms. Number of tradeStatistics: {}. Number of own trades: {}", System.currentTimeMillis() - ts, hashes.size(), trades.size());