From d9b1c0594da30fe74b7610a51f75d4370ad94c85 Mon Sep 17 00:00:00 2001
From: woodser <13068859+woodser@users.noreply.github.com>
Date: Thu, 13 Mar 2025 10:42:54 -0400
Subject: [PATCH] fix error message if arbitrator fails to publish deposit txs

---
 .../main/java/haveno/core/trade/protocol/ProcessModel.java | 1 +
 .../protocol/tasks/ArbitratorProcessDepositRequest.java    | 7 +++----
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/core/src/main/java/haveno/core/trade/protocol/ProcessModel.java b/core/src/main/java/haveno/core/trade/protocol/ProcessModel.java
index 209e28afd5..ae6a27e7f0 100644
--- a/core/src/main/java/haveno/core/trade/protocol/ProcessModel.java
+++ b/core/src/main/java/haveno/core/trade/protocol/ProcessModel.java
@@ -94,6 +94,7 @@ public class ProcessModel implements Model, PersistablePayload {
     transient private ProcessModelServiceProvider provider;
     transient private TradeManager tradeManager;
     transient private Offer offer;
+    transient public Throwable error;
 
     // Added in v1.4.0
     // MessageState of the last message sent from the seller to the buyer in the take offer process.
diff --git a/core/src/main/java/haveno/core/trade/protocol/tasks/ArbitratorProcessDepositRequest.java b/core/src/main/java/haveno/core/trade/protocol/tasks/ArbitratorProcessDepositRequest.java
index be9d528f35..3a7fc7ace9 100644
--- a/core/src/main/java/haveno/core/trade/protocol/tasks/ArbitratorProcessDepositRequest.java
+++ b/core/src/main/java/haveno/core/trade/protocol/tasks/ArbitratorProcessDepositRequest.java
@@ -44,7 +44,6 @@ import java.util.UUID;
 @Slf4j
 public class ArbitratorProcessDepositRequest extends TradeTask {
 
-    private Throwable error;
     private boolean depositResponsesSent;
 
     @SuppressWarnings({"unused"})
@@ -68,7 +67,7 @@ public class ArbitratorProcessDepositRequest extends TradeTask {
             processDepositRequest();
             complete();
         } catch (Throwable t) {
-            this.error = t;
+            trade.getProcessModel().error = t;
             log.error("Error processing deposit request for trade {}: {}\n", trade.getId(), t.getMessage(), t);
             trade.setStateIfValidTransitionTo(Trade.State.PUBLISH_DEPOSIT_TX_REQUEST_FAILED);
             failed(t);
@@ -188,7 +187,7 @@ public class ArbitratorProcessDepositRequest extends TradeTask {
             trade.stateProperty().addListener((obs, oldState, newState) -> {
                 if (oldState == newState) return;
                 if (newState == Trade.State.PUBLISH_DEPOSIT_TX_REQUEST_FAILED) {
-                    sendDepositResponsesOnce(error == null ? "Arbitrator failed to publish deposit txs within timeout for trade " + trade.getId() : error.getMessage());
+                    sendDepositResponsesOnce(trade.getProcessModel().error == null ? "Arbitrator failed to publish deposit txs within timeout for trade " + trade.getId() : trade.getProcessModel().error.getMessage());
                 } else if (newState.ordinal() >= Trade.State.ARBITRATOR_PUBLISHED_DEPOSIT_TXS.ordinal()) {
                     sendDepositResponsesOnce(null);
                 }
@@ -230,7 +229,7 @@ public class ArbitratorProcessDepositRequest extends TradeTask {
     }
 
     private void sendDepositResponse(NodeAddress nodeAddress, PubKeyRing pubKeyRing, DepositResponse response) {
-        log.info("Sending deposit response to trader={}; offerId={}, error={}", nodeAddress, trade.getId(), error);
+        log.info("Sending deposit response to trader={}; offerId={}, error={}", nodeAddress, trade.getId(), trade.getProcessModel().error);
         processModel.getP2PService().sendEncryptedDirectMessage(nodeAddress, pubKeyRing, response, new SendDirectMessageListener() {
             @Override
             public void onArrived() {