add random delay to publish trade statistics on startup within 24 hours

This commit is contained in:
woodser 2025-08-30 19:26:20 -04:00 committed by woodser
parent 723d5cc1dd
commit cfc62aa9ae
2 changed files with 11 additions and 3 deletions

View file

@ -65,6 +65,7 @@ import haveno.core.trade.protocol.ProcessModelServiceProvider;
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 abstract class Trade extends XmrWalletBase implements Tradable, Model {
// 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);
}
}

View file

@ -20,6 +20,8 @@ package haveno.core.trade.statistics;
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<TradeStatistics3> 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 class TradeStatisticsManager {
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());