sync on wallet lock before checking if wallet is behind

This commit is contained in:
woodser 2024-08-05 12:23:31 -04:00
parent 3dfaa2fc52
commit 443c2f4cdb

View file

@ -2412,13 +2412,15 @@ public abstract class Trade extends XmrWalletBase implements Tradable, Model {
private void syncWallet(boolean pollWallet) { private void syncWallet(boolean pollWallet) {
MoneroRpcConnection sourceConnection = xmrConnectionService.getConnection(); MoneroRpcConnection sourceConnection = xmrConnectionService.getConnection();
try { try {
if (getWallet() == null) throw new RuntimeException("Cannot sync trade wallet because it doesn't exist for " + getClass().getSimpleName() + ", " + getId()); synchronized (walletLock) {
if (getWallet().getDaemonConnection() == null) throw new RuntimeException("Cannot sync trade wallet because it's not connected to a Monero daemon for " + getClass().getSimpleName() + ", " + getId()); if (getWallet() == null) throw new RuntimeException("Cannot sync trade wallet because it doesn't exist for " + getClass().getSimpleName() + ", " + getId());
if (isWalletBehind()) { if (getWallet().getDaemonConnection() == null) throw new RuntimeException("Cannot sync trade wallet because it's not connected to a Monero daemon for " + getClass().getSimpleName() + ", " + getId());
log.info("Syncing wallet for {} {}", getClass().getSimpleName(), getShortId()); if (isWalletBehind()) {
long startTime = System.currentTimeMillis(); log.info("Syncing wallet for {} {}", getClass().getSimpleName(), getShortId());
syncWalletIfBehind(); long startTime = System.currentTimeMillis();
log.info("Done syncing wallet for {} {} in {} ms", getClass().getSimpleName(), getShortId(), System.currentTimeMillis() - startTime); syncWalletIfBehind();
log.info("Done syncing wallet for {} {} in {} ms", getClass().getSimpleName(), getShortId(), System.currentTimeMillis() - startTime);
}
} }
// apply tor after wallet synced depending on configuration // apply tor after wallet synced depending on configuration
@ -2627,8 +2629,8 @@ public abstract class Trade extends XmrWalletBase implements Tradable, Model {
} }
private void syncWalletIfBehind() { private void syncWalletIfBehind() {
if (isWalletBehind()) { synchronized (walletLock) {
synchronized (walletLock) { if (isWalletBehind()) {
syncWithProgress(); syncWithProgress();
} }
} }