mirror of
https://github.com/haveno-dex/haveno.git
synced 2025-12-13 06:55:34 -05:00
initialize all trades together with random delays
This commit is contained in:
parent
a67e3d3dab
commit
414b10470a
1 changed files with 10 additions and 13 deletions
|
|
@ -139,7 +139,9 @@ import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
|
|
||||||
public class TradeManager implements PersistedDataHost, DecryptedDirectMessageListener {
|
public class TradeManager implements PersistedDataHost, DecryptedDirectMessageListener {
|
||||||
|
|
||||||
private static final Logger log = LoggerFactory.getLogger(TradeManager.class);
|
private static final Logger log = LoggerFactory.getLogger(TradeManager.class);
|
||||||
|
private static final int INIT_TRADE_RANDOM_DELAY_MS = 10000; // random delay to initialize trades
|
||||||
|
|
||||||
private boolean isShutDownStarted;
|
private boolean isShutDownStarted;
|
||||||
private boolean isShutDown;
|
private boolean isShutDown;
|
||||||
|
|
@ -438,20 +440,15 @@ public class TradeManager implements PersistedDataHost, DecryptedDirectMessageLi
|
||||||
|
|
||||||
// initialize trades in parallel
|
// initialize trades in parallel
|
||||||
int threadPoolSize = 10;
|
int threadPoolSize = 10;
|
||||||
Set<Runnable> initTasksP1 = new HashSet<Runnable>();
|
Set<Runnable> initTradeTasks = new HashSet<Runnable>();
|
||||||
Set<Runnable> initTasksP2 = new HashSet<Runnable>();
|
|
||||||
Set<String> uids = new HashSet<String>();
|
Set<String> uids = new HashSet<String>();
|
||||||
Set<Trade> tradesToSkip = new HashSet<Trade>();
|
Set<Trade> tradesToSkip = new HashSet<Trade>();
|
||||||
Set<Trade> uninitializedTrades = new HashSet<Trade>();
|
Set<Trade> uninitializedTrades = new HashSet<Trade>();
|
||||||
for (Trade trade : trades) {
|
for (Trade trade : trades) {
|
||||||
Runnable initTradeTask = getInitTradeTask(trade, trades, tradesToSkip, uninitializedTrades, uids);
|
initTradeTasks.add(getInitTradeTask(trade, trades, tradesToSkip, uninitializedTrades, uids));
|
||||||
if (trade.isDepositRequested() && !trade.isPayoutUnlocked()) initTasksP1.add(initTradeTask);
|
|
||||||
else initTasksP2.add(initTradeTask);
|
|
||||||
};
|
};
|
||||||
ThreadUtils.awaitTasks(initTasksP1, threadPoolSize);
|
ThreadUtils.awaitTasks(initTradeTasks, threadPoolSize);
|
||||||
log.info("Done initializing priority trades");
|
log.info("Done initializing trades");
|
||||||
ThreadUtils.awaitTasks(initTasksP2, threadPoolSize);
|
|
||||||
log.info("Done initializing all trades");
|
|
||||||
if (isShutDownStarted) return;
|
if (isShutDownStarted) return;
|
||||||
|
|
||||||
// remove skipped trades
|
// remove skipped trades
|
||||||
|
|
@ -461,9 +458,9 @@ public class TradeManager implements PersistedDataHost, DecryptedDirectMessageLi
|
||||||
for (Trade trade : trades) {
|
for (Trade trade : trades) {
|
||||||
if (trade.isIdling()) ThreadUtils.submitToPool(() -> {
|
if (trade.isIdling()) ThreadUtils.submitToPool(() -> {
|
||||||
|
|
||||||
// add random delay up to 10s to avoid syncing at exactly the same time
|
// add random delay to avoid syncing at exactly the same time
|
||||||
if (trades.size() > 1 && trade.walletExists()) {
|
if (trades.size() > 1 && trade.walletExists()) {
|
||||||
int delay = (int) (Math.random() * 10000);
|
int delay = (int) (Math.random() * INIT_TRADE_RANDOM_DELAY_MS);
|
||||||
HavenoUtils.waitFor(delay);
|
HavenoUtils.waitFor(delay);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -536,9 +533,9 @@ public class TradeManager implements PersistedDataHost, DecryptedDirectMessageLi
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// add random delay up to 10s to avoid syncing at exactly the same time
|
// add random delay to avoid syncing at exactly the same time
|
||||||
if (trades.size() > 1 && trade.walletExists()) {
|
if (trades.size() > 1 && trade.walletExists()) {
|
||||||
int delay = (int) (Math.random() * 10000);
|
int delay = (int) (Math.random() * INIT_TRADE_RANDOM_DELAY_MS);
|
||||||
HavenoUtils.waitFor(delay);
|
HavenoUtils.waitFor(delay);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue