persist trade with payment confirmation msgs before processing

This commit is contained in:
woodser 2025-04-21 18:14:22 -04:00 committed by woodser
parent 923b3ad73b
commit de5250e89a
3 changed files with 114 additions and 104 deletions

View file

@ -811,6 +811,10 @@ public abstract class Trade extends XmrWalletBase implements Tradable, Model {
if (processModel.getTradeManager() != null) processModel.getTradeManager().requestPersistence(); if (processModel.getTradeManager() != null) processModel.getTradeManager().requestPersistence();
} }
public void persistNow(@Nullable Runnable completeHandler) {
processModel.getTradeManager().persistNow(completeHandler);
}
public TradeProtocol getProtocol() { public TradeProtocol getProtocol() {
return processModel.getTradeManager().getTradeProtocol(this); return processModel.getTradeManager().getTradeProtocol(this);
} }

View file

@ -546,6 +546,10 @@ public class TradeManager implements PersistedDataHost, DecryptedDirectMessageLi
persistenceManager.requestPersistence(); persistenceManager.requestPersistence();
} }
public void persistNow(@Nullable Runnable completeHandler) {
persistenceManager.persistNow(completeHandler);
}
private void handleInitTradeRequest(InitTradeRequest request, NodeAddress sender) { private void handleInitTradeRequest(InitTradeRequest request, NodeAddress sender) {
log.info("TradeManager handling InitTradeRequest for tradeId={}, sender={}, uid={}", request.getOfferId(), sender, request.getUid()); log.info("TradeManager handling InitTradeRequest for tradeId={}, sender={}, uid={}", request.getOfferId(), sender, request.getUid());

View file

@ -537,7 +537,7 @@ public abstract class TradeProtocol implements DecryptedDirectMessageListener, D
// save message for reprocessing // save message for reprocessing
trade.getBuyer().setPaymentSentMessage(message); trade.getBuyer().setPaymentSentMessage(message);
trade.requestPersistence(); trade.persistNow(() -> {
// process message on trade thread // process message on trade thread
if (!trade.isInitialized() || trade.isShutDownStarted()) return; if (!trade.isInitialized() || trade.isShutDownStarted()) return;
@ -593,6 +593,7 @@ public abstract class TradeProtocol implements DecryptedDirectMessageListener, D
awaitTradeLatch(); awaitTradeLatch();
} }
}, trade.getId()); }, trade.getId());
});
} }
// received by buyer and arbitrator // received by buyer and arbitrator
@ -619,7 +620,7 @@ public abstract class TradeProtocol implements DecryptedDirectMessageListener, D
// save message for reprocessing // save message for reprocessing
trade.getSeller().setPaymentReceivedMessage(message); trade.getSeller().setPaymentReceivedMessage(message);
trade.requestPersistence(); trade.persistNow(() -> {
// process message on trade thread // process message on trade thread
if (!trade.isInitialized() || trade.isShutDownStarted()) return; if (!trade.isInitialized() || trade.isShutDownStarted()) return;
@ -672,6 +673,7 @@ public abstract class TradeProtocol implements DecryptedDirectMessageListener, D
awaitTradeLatch(); awaitTradeLatch();
} }
}, trade.getId()); }, trade.getId());
});
} }
public void onWithdrawCompleted() { public void onWithdrawCompleted() {