resend payment sent & received messages from trade thread on startup

This commit is contained in:
woodser 2024-02-01 07:43:31 -05:00
parent bbec107dcc
commit 6f51d333ec
2 changed files with 46 additions and 40 deletions

View file

@ -55,27 +55,30 @@ public class BuyerProtocol extends DisputeProtocol {
super.onInitialized(); super.onInitialized();
// re-send payment sent message if not acked // re-send payment sent message if not acked
synchronized (trade) { ThreadUtils.execute(() -> {
if (trade.isShutDownStarted()) return; if (trade.isShutDownStarted() || trade.isPayoutPublished()) return;
if (trade.getState().ordinal() >= Trade.State.BUYER_SENT_PAYMENT_SENT_MSG.ordinal() && trade.getState().ordinal() < Trade.State.SELLER_RECEIVED_PAYMENT_SENT_MSG.ordinal()) { synchronized (trade) {
latchTrade(); if (trade.isShutDownStarted() || trade.isPayoutPublished()) return;
given(anyPhase(Trade.Phase.PAYMENT_SENT) if (trade.getState().ordinal() >= Trade.State.BUYER_SENT_PAYMENT_SENT_MSG.ordinal() && trade.getState().ordinal() < Trade.State.SELLER_RECEIVED_PAYMENT_SENT_MSG.ordinal()) {
.with(BuyerEvent.STARTUP)) latchTrade();
.setup(tasks( given(anyPhase(Trade.Phase.PAYMENT_SENT)
BuyerSendPaymentSentMessageToSeller.class, .with(BuyerEvent.STARTUP))
BuyerSendPaymentSentMessageToArbitrator.class) .setup(tasks(
.using(new TradeTaskRunner(trade, BuyerSendPaymentSentMessageToSeller.class,
() -> { BuyerSendPaymentSentMessageToArbitrator.class)
unlatchTrade(); .using(new TradeTaskRunner(trade,
}, () -> {
(errorMessage) -> { unlatchTrade();
log.warn("Error sending PaymentSentMessage on startup: " + errorMessage); },
unlatchTrade(); (errorMessage) -> {
}))) log.warn("Error sending PaymentSentMessage on startup: " + errorMessage);
.executeTasks(); unlatchTrade();
awaitTradeLatch(); })))
.executeTasks();
awaitTradeLatch();
}
} }
} }, trade.getId());
} }
@Override @Override

View file

@ -51,27 +51,30 @@ public class SellerProtocol extends DisputeProtocol {
super.onInitialized(); super.onInitialized();
// re-send payment received message if payout not published // re-send payment received message if payout not published
synchronized (trade) { ThreadUtils.execute(() -> {
if (trade.isShutDownStarted()) return; if (trade.isShutDownStarted() || trade.isPayoutPublished()) return;
if (trade.getState().ordinal() >= Trade.State.SELLER_SENT_PAYMENT_RECEIVED_MSG.ordinal() && !trade.isPayoutPublished()) { synchronized (trade) {
latchTrade(); if (trade.isShutDownStarted() || trade.isPayoutPublished()) return;
given(anyPhase(Trade.Phase.PAYMENT_RECEIVED) if (trade.getState().ordinal() >= Trade.State.SELLER_SENT_PAYMENT_RECEIVED_MSG.ordinal() && !trade.isPayoutPublished()) {
.with(SellerEvent.STARTUP)) latchTrade();
.setup(tasks( given(anyPhase(Trade.Phase.PAYMENT_RECEIVED)
SellerSendPaymentReceivedMessageToBuyer.class, .with(SellerEvent.STARTUP))
SellerSendPaymentReceivedMessageToArbitrator.class) .setup(tasks(
.using(new TradeTaskRunner(trade, SellerSendPaymentReceivedMessageToBuyer.class,
() -> { SellerSendPaymentReceivedMessageToArbitrator.class)
unlatchTrade(); .using(new TradeTaskRunner(trade,
}, () -> {
(errorMessage) -> { unlatchTrade();
log.warn("Error sending PaymentReceivedMessage on startup: " + errorMessage); },
unlatchTrade(); (errorMessage) -> {
}))) log.warn("Error sending PaymentReceivedMessage on startup: " + errorMessage);
.executeTasks(); unlatchTrade();
awaitTradeLatch(); })))
.executeTasks();
awaitTradeLatch();
}
} }
} }, trade.getId());
} }
@Override @Override