diff --git a/core/src/main/java/haveno/core/trade/Trade.java b/core/src/main/java/haveno/core/trade/Trade.java index d740902b..00ddb715 100644 --- a/core/src/main/java/haveno/core/trade/Trade.java +++ b/core/src/main/java/haveno/core/trade/Trade.java @@ -1162,7 +1162,7 @@ public abstract class Trade implements Tradable, Model { isShutDown = true; synchronized (walletLock) { if (wallet != null) { - saveWallet(); + xmrWalletService.saveWallet(wallet, false); // skip backup stopWallet(); } } diff --git a/core/src/main/java/haveno/core/trade/protocol/tasks/BuyerPreparePaymentSentMessage.java b/core/src/main/java/haveno/core/trade/protocol/tasks/BuyerPreparePaymentSentMessage.java index 7e685950..d108ec08 100644 --- a/core/src/main/java/haveno/core/trade/protocol/tasks/BuyerPreparePaymentSentMessage.java +++ b/core/src/main/java/haveno/core/trade/protocol/tasks/BuyerPreparePaymentSentMessage.java @@ -70,6 +70,9 @@ public class BuyerPreparePaymentSentMessage extends TradeTask { MoneroTxWallet payoutTx = trade.createPayoutTx(); trade.setPayoutTx(payoutTx); trade.setPayoutTxHex(payoutTx.getTxSet().getMultisigTxHex()); + + // save wallet off thread + new Thread(() -> trade.saveWallet()).start(); } complete(); diff --git a/core/src/main/java/haveno/core/trade/protocol/tasks/ProcessDepositsConfirmedMessage.java b/core/src/main/java/haveno/core/trade/protocol/tasks/ProcessDepositsConfirmedMessage.java index 55b60f9e..3020f54d 100644 --- a/core/src/main/java/haveno/core/trade/protocol/tasks/ProcessDepositsConfirmedMessage.java +++ b/core/src/main/java/haveno/core/trade/protocol/tasks/ProcessDepositsConfirmedMessage.java @@ -69,6 +69,9 @@ public class ProcessDepositsConfirmedMessage extends TradeTask { e.printStackTrace(); } + // save wallet off thread + new Thread(() -> trade.saveWallet()).start(); + // persist and complete processModel.getTradeManager().requestPersistence(); complete(); diff --git a/core/src/main/java/haveno/core/trade/protocol/tasks/ProcessInitMultisigRequest.java b/core/src/main/java/haveno/core/trade/protocol/tasks/ProcessInitMultisigRequest.java index 816b85d7..d7585956 100644 --- a/core/src/main/java/haveno/core/trade/protocol/tasks/ProcessInitMultisigRequest.java +++ b/core/src/main/java/haveno/core/trade/protocol/tasks/ProcessInitMultisigRequest.java @@ -110,7 +110,7 @@ public class ProcessInitMultisigRequest extends TradeTask { log.info("Importing exchanged multisig hex for trade {}", trade.getId()); MoneroMultisigInitResult result = multisigWallet.exchangeMultisigKeys(Arrays.asList(peers[0].getExchangedMultisigHex(), peers[1].getExchangedMultisigHex()), xmrWalletService.getWalletPassword()); processModel.setMultisigAddress(result.getAddress()); - trade.saveWallet(); // save multisig wallet on completion + new Thread(() -> trade.saveWallet()).start(); // save multisig wallet off thread on completion trade.setStateIfValidTransitionTo(Trade.State.MULTISIG_COMPLETED); trade.updateWalletRefreshPeriod(); // starts syncing } diff --git a/core/src/main/java/haveno/core/trade/protocol/tasks/ProcessPaymentSentMessage.java b/core/src/main/java/haveno/core/trade/protocol/tasks/ProcessPaymentSentMessage.java index 854004aa..1379077b 100644 --- a/core/src/main/java/haveno/core/trade/protocol/tasks/ProcessPaymentSentMessage.java +++ b/core/src/main/java/haveno/core/trade/protocol/tasks/ProcessPaymentSentMessage.java @@ -69,6 +69,9 @@ public class ProcessPaymentSentMessage extends TradeTask { e.printStackTrace(); } + // save wallet off thread + new Thread(() -> trade.saveWallet()).start(); + // update state trade.advanceState(Trade.State.BUYER_SENT_PAYMENT_SENT_MSG); trade.requestPersistence();