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,8 +146,6 @@ public final class ArbitrationManager extends DisputeManager<ArbitrationDisputeL
if (canProcessMessage(message)) { if (canProcessMessage(message)) {
log.info("Received {} from {} with tradeId {} and uid {}", log.info("Received {} from {} with tradeId {} and uid {}",
message.getClass().getSimpleName(), message.getSenderNodeAddress(), message.getTradeId(), message.getUid()); message.getClass().getSimpleName(), message.getSenderNodeAddress(), message.getTradeId(), message.getUid());
ThreadUtils.execute(() -> {
if (message instanceof DisputeOpenedMessage) { if (message instanceof DisputeOpenedMessage) {
handle((DisputeOpenedMessage) message); handle((DisputeOpenedMessage) message);
} else if (message instanceof ChatMessage) { } else if (message instanceof ChatMessage) {
@ -157,7 +155,6 @@ public final class ArbitrationManager extends DisputeManager<ArbitrationDisputeL
} else { } else {
log.warn("Unsupported message at dispatchMessage. message={}", message); log.warn("Unsupported message at dispatchMessage. message={}", message);
} }
}, message.getTradeId());
} }
} }
@ -272,6 +269,10 @@ public final class ArbitrationManager extends DisputeManager<ArbitrationDisputeL
return; return;
} }
// save dispute closed message for reprocessing
trade.getArbitrator().setDisputeClosedMessage(disputeClosedMessage);
persistNow(null);
// try to process dispute closed message // try to process dispute closed message
ThreadUtils.execute(() -> { ThreadUtils.execute(() -> {
ChatMessage chatMessage = null; 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 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) 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 // verify arbitrator does not receive DisputeClosedMessage
if (keyRing.getPubKeyRing().equals(dispute.getAgentPubKeyRing())) { if (keyRing.getPubKeyRing().equals(dispute.getAgentPubKeyRing())) {
log.error("Arbitrator received disputeResultMessage. That should never happen."); log.error("Arbitrator received disputeResultMessage. That should never happen.");