save dispute closed message for reprocessing immediately

This commit is contained in:
woodser 2025-09-21 18:07:31 -04:00 committed by woodser
parent ca6ef3dc9a
commit fee4bd0202

View file

@ -146,18 +146,15 @@ public final class ArbitrationManager extends DisputeManager<ArbitrationDisputeL
if (canProcessMessage(message)) {
log.info("Received {} from {} with tradeId {} and uid {}",
message.getClass().getSimpleName(), message.getSenderNodeAddress(), message.getTradeId(), message.getUid());
ThreadUtils.execute(() -> {
if (message instanceof DisputeOpenedMessage) {
handle((DisputeOpenedMessage) message);
} else if (message instanceof ChatMessage) {
handle((ChatMessage) message);
} else if (message instanceof DisputeClosedMessage) {
handle((DisputeClosedMessage) message);
} else {
log.warn("Unsupported message at dispatchMessage. message={}", message);
}
}, message.getTradeId());
if (message instanceof DisputeOpenedMessage) {
handle((DisputeOpenedMessage) message);
} else if (message instanceof ChatMessage) {
handle((ChatMessage) message);
} else if (message instanceof DisputeClosedMessage) {
handle((DisputeClosedMessage) message);
} else {
log.warn("Unsupported message at dispatchMessage. message={}", message);
}
}
}
@ -272,6 +269,10 @@ public final class ArbitrationManager extends DisputeManager<ArbitrationDisputeL
return;
}
// save dispute closed message for reprocessing
trade.getArbitrator().setDisputeClosedMessage(disputeClosedMessage);
persistNow(null);
// try to process dispute closed message
ThreadUtils.execute(() -> {
ChatMessage chatMessage = null;
@ -310,10 +311,6 @@ public final class ArbitrationManager extends DisputeManager<ArbitrationDisputeL
if (dispute != null) DisputeSummaryVerification.verifySignature(summaryText, dispute.getAgentPubKeyRing()); // use dispute's arbitrator pub key ring
else DisputeSummaryVerification.verifySignature(summaryText, arbitratorManager); // verify using registered arbitrator (will fail if arbitrator is unregistered)
// save dispute closed message for reprocessing
trade.getArbitrator().setDisputeClosedMessage(disputeClosedMessage);
requestPersistence(trade);
// verify arbitrator does not receive DisputeClosedMessage
if (keyRing.getPubKeyRing().equals(dispute.getAgentPubKeyRing())) {
log.error("Arbitrator received disputeResultMessage. That should never happen.");