Skip to content

Commit ebdaa74

Browse files
committed
resend payment sent & received messages from trade thread on startup
1 parent bbec107 commit ebdaa74

File tree

2 files changed

+44
-40
lines changed

2 files changed

+44
-40
lines changed

core/src/main/java/haveno/core/trade/protocol/BuyerProtocol.java

+22-20
Original file line numberDiff line numberDiff line change
@@ -55,27 +55,29 @@ protected void onInitialized() {
5555
super.onInitialized();
5656

5757
// re-send payment sent message if not acked
58-
synchronized (trade) {
59-
if (trade.isShutDownStarted()) return;
60-
if (trade.getState().ordinal() >= Trade.State.BUYER_SENT_PAYMENT_SENT_MSG.ordinal() && trade.getState().ordinal() < Trade.State.SELLER_RECEIVED_PAYMENT_SENT_MSG.ordinal()) {
61-
latchTrade();
62-
given(anyPhase(Trade.Phase.PAYMENT_SENT)
63-
.with(BuyerEvent.STARTUP))
64-
.setup(tasks(
65-
BuyerSendPaymentSentMessageToSeller.class,
66-
BuyerSendPaymentSentMessageToArbitrator.class)
67-
.using(new TradeTaskRunner(trade,
68-
() -> {
69-
unlatchTrade();
70-
},
71-
(errorMessage) -> {
72-
log.warn("Error sending PaymentSentMessage on startup: " + errorMessage);
73-
unlatchTrade();
74-
})))
75-
.executeTasks();
76-
awaitTradeLatch();
58+
ThreadUtils.execute(() -> {
59+
synchronized (trade) {
60+
if (trade.isShutDownStarted() || trade.isPayoutPublished()) return;
61+
if (trade.getState().ordinal() >= Trade.State.BUYER_SENT_PAYMENT_SENT_MSG.ordinal() && trade.getState().ordinal() < Trade.State.SELLER_RECEIVED_PAYMENT_SENT_MSG.ordinal()) {
62+
latchTrade();
63+
given(anyPhase(Trade.Phase.PAYMENT_SENT)
64+
.with(BuyerEvent.STARTUP))
65+
.setup(tasks(
66+
BuyerSendPaymentSentMessageToSeller.class,
67+
BuyerSendPaymentSentMessageToArbitrator.class)
68+
.using(new TradeTaskRunner(trade,
69+
() -> {
70+
unlatchTrade();
71+
},
72+
(errorMessage) -> {
73+
log.warn("Error sending PaymentSentMessage on startup: " + errorMessage);
74+
unlatchTrade();
75+
})))
76+
.executeTasks();
77+
awaitTradeLatch();
78+
}
7779
}
78-
}
80+
}, trade.getId());
7981
}
8082

8183
@Override

core/src/main/java/haveno/core/trade/protocol/SellerProtocol.java

+22-20
Original file line numberDiff line numberDiff line change
@@ -51,27 +51,29 @@ protected void onInitialized() {
5151
super.onInitialized();
5252

5353
// re-send payment received message if payout not published
54-
synchronized (trade) {
55-
if (trade.isShutDownStarted()) return;
56-
if (trade.getState().ordinal() >= Trade.State.SELLER_SENT_PAYMENT_RECEIVED_MSG.ordinal() && !trade.isPayoutPublished()) {
57-
latchTrade();
58-
given(anyPhase(Trade.Phase.PAYMENT_RECEIVED)
59-
.with(SellerEvent.STARTUP))
60-
.setup(tasks(
61-
SellerSendPaymentReceivedMessageToBuyer.class,
62-
SellerSendPaymentReceivedMessageToArbitrator.class)
63-
.using(new TradeTaskRunner(trade,
64-
() -> {
65-
unlatchTrade();
66-
},
67-
(errorMessage) -> {
68-
log.warn("Error sending PaymentReceivedMessage on startup: " + errorMessage);
69-
unlatchTrade();
70-
})))
71-
.executeTasks();
72-
awaitTradeLatch();
54+
ThreadUtils.execute(() -> {
55+
synchronized (trade) {
56+
if (trade.isShutDownStarted() || trade.isPayoutPublished()) return;
57+
if (trade.getState().ordinal() >= Trade.State.SELLER_SENT_PAYMENT_RECEIVED_MSG.ordinal() && !trade.isPayoutPublished()) {
58+
latchTrade();
59+
given(anyPhase(Trade.Phase.PAYMENT_RECEIVED)
60+
.with(SellerEvent.STARTUP))
61+
.setup(tasks(
62+
SellerSendPaymentReceivedMessageToBuyer.class,
63+
SellerSendPaymentReceivedMessageToArbitrator.class)
64+
.using(new TradeTaskRunner(trade,
65+
() -> {
66+
unlatchTrade();
67+
},
68+
(errorMessage) -> {
69+
log.warn("Error sending PaymentReceivedMessage on startup: " + errorMessage);
70+
unlatchTrade();
71+
})))
72+
.executeTasks();
73+
awaitTradeLatch();
74+
}
7375
}
74-
}
76+
}, trade.getId());
7577
}
7678

7779
@Override

0 commit comments

Comments
 (0)