From 3760d2a2e564c832913c619e96a93b2537d01424 Mon Sep 17 00:00:00 2001 From: Roman Volosovskyi Date: Wed, 25 Mar 2020 17:10:10 +0200 Subject: [PATCH] [#10197] More retries when requesting balances --- src/status_im/ethereum/json_rpc.cljs | 18 ++++++++++++++---- src/status_im/wallet/core.cljs | 4 ++-- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/status_im/ethereum/json_rpc.cljs b/src/status_im/ethereum/json_rpc.cljs index 4b1372b2ff..f2bced4c11 100644 --- a/src/status_im/ethereum/json_rpc.cljs +++ b/src/status_im/ethereum/json_rpc.cljs @@ -7,7 +7,8 @@ [status-im.native-module.core :as status] [status-im.utils.money :as money] [status-im.utils.types :as types] - [taoensso.timbre :as log])) + [taoensso.timbre :as log] + [status-im.utils.utils :as utils])) (def json-rpc-api {"eth_call" {} @@ -171,11 +172,20 @@ "mailservers_getChatRequestRanges" {} "mailservers_deleteChatRequestRange" {}}) -(defn on-error-retry [call-method {:keys [method number-of-retries on-error] :as arg}] +(defn on-error-retry + [call-method {:keys [method number-of-retries delay on-error] :as arg}] (if (pos? number-of-retries) (fn [] - (log/debug "[on-error-retry]" method "number-of-retries" number-of-retries) - (call-method (update arg :number-of-retries dec))) + (let [updated-delay (if delay + (min 2000 (* 2 delay)) + 50)] + (log/debug "[on-error-retry]" method + "number-of-retries" number-of-retries + "delay" delay) + (utils/set-timeout #(call-method (-> arg + (update :number-of-retries dec) + (assoc :delay updated-delay))) + updated-delay))) on-error)) (defn call-ext-method [waku-enabled? method] diff --git a/src/status_im/wallet/core.cljs b/src/status_im/wallet/core.cljs index fe5b222bf6..c46bc64e25 100644 --- a/src/status_im/wallet/core.cljs +++ b/src/status_im/wallet/core.cljs @@ -34,7 +34,7 @@ {:method "eth_getBalance" :params [address "latest"] :on-success on-success - :number-of-retries 4 + :number-of-retries 50 :on-error on-error})) (re-frame/reg-fx @@ -180,7 +180,7 @@ (json-rpc/call {:method "wallet_getTokensBalances" :params [addresses (keys tokens)] - :number-of-retries 4 + :number-of-retries 50 :on-success (fn [results] (when-let [balances (clean-up-results results tokens (if init? nil assets))]