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();
}
public void persistNow(@Nullable Runnable completeHandler) {
processModel.getTradeManager().persistNow(completeHandler);
}
public TradeProtocol getProtocol() {
return processModel.getTradeManager().getTradeProtocol(this);
}

View file

@ -546,6 +546,10 @@ public class TradeManager implements PersistedDataHost, DecryptedDirectMessageLi
persistenceManager.requestPersistence();
}
public void persistNow(@Nullable Runnable completeHandler) {
persistenceManager.persistNow(completeHandler);
}
private void handleInitTradeRequest(InitTradeRequest request, NodeAddress sender) {
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
trade.getBuyer().setPaymentSentMessage(message);
trade.requestPersistence();
trade.persistNow(() -> {
// process message on trade thread
if (!trade.isInitialized() || trade.isShutDownStarted()) return;
@ -593,6 +593,7 @@ public abstract class TradeProtocol implements DecryptedDirectMessageListener, D
awaitTradeLatch();
}
}, trade.getId());
});
}
// received by buyer and arbitrator
@ -619,7 +620,7 @@ public abstract class TradeProtocol implements DecryptedDirectMessageListener, D
// save message for reprocessing
trade.getSeller().setPaymentReceivedMessage(message);
trade.requestPersistence();
trade.persistNow(() -> {
// process message on trade thread
if (!trade.isInitialized() || trade.isShutDownStarted()) return;
@ -672,6 +673,7 @@ public abstract class TradeProtocol implements DecryptedDirectMessageListener, D
awaitTradeLatch();
}
}, trade.getId());
});
}
public void onWithdrawCompleted() {