From b69167587f0d9df907e52412071857e1b3e36078 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20W=C5=82adyka?= Date: Fri, 9 Dec 2022 21:54:46 +0100 Subject: [PATCH 1/4] bump ver --- lib_version.clj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib_version.clj b/lib_version.clj index 799e932..1545519 100644 --- a/lib_version.clj +++ b/lib_version.clj @@ -1,4 +1,4 @@ (ns lib-version) (def lib 'district0x/district-server-smart-contracts) ; ends up as / in pom.xml -(def version "1.4.2-SNAPSHOT") +(def version "1.5.0-SNAPSHOT") From a4225cb92f1508c5bd28e7fe25c3a2d31063bc56 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20W=C5=82adyka?= Date: Fri, 9 Dec 2022 22:12:49 +0100 Subject: [PATCH 2/4] fix error log for callback --- src/district/server/smart_contracts.cljs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/district/server/smart_contracts.cljs b/src/district/server/smart_contracts.cljs index ed4d226..649ef7b 100644 --- a/src/district/server/smart_contracts.cljs +++ b/src/district/server/smart_contracts.cljs @@ -328,8 +328,8 @@ (when (fn? callback) (doseq [log chunk-logs] (doseq [res (try - (if-let [?error (:error? (meta log))] - (callback ?error nil) + (if (:error? (meta log)) + (callback log nil) (callback nil log)) (catch js/Error e (when crash-on-event-fail? From 845eedce4e42fa8dd27ac0e800427248b50956c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20W=C5=82adyka?= Date: Fri, 9 Dec 2022 22:23:28 +0100 Subject: [PATCH 3/4] add re-try --- src/district/server/smart_contracts.cljs | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/district/server/smart_contracts.cljs b/src/district/server/smart_contracts.cljs index 649ef7b..e05321e 100644 --- a/src/district/server/smart_contracts.cljs +++ b/src/district/server/smart_contracts.cljs @@ -261,7 +261,7 @@ identity)] (transform-fn (remove-log-indexes sorted-logs)))) -(defn chunk->logs [transform-fn from-block skip-log-indexes events ignore-forward? [from to] ch-output] +(defn chunk->logs [transform-fn from-block skip-log-indexes events ignore-forward? re-try [from to] ch-output] ">! to ch-output for chunk [from to]: final sorted, skipped and transformed logs as async/ch." (let [sort-and-skip-logs' (partial sort-and-skip-logs transform-fn from-block skip-log-indexes) ch-logs (async/chan 1) @@ -274,12 +274,21 @@ (fn [error events] (let [logs (map (partial enrich-event-log contract contract-instance) (web3-helpers/js->cljkk events))] - (async/put! ch-logs-output (or logs [(with-meta {:err error} {:error? true})])))))))] + (async/put! ch-logs-output (or logs [(with-meta {:err error} {:error? true})]))))))) + re-try-event->logs (fn [event ch-output] + (let [buf (async/chan 1)] + (go-loop [re-try-iteration re-try] + (event->logs event buf) + (let [log (! ch-output log))))))] (go-loop [all-logs [] [event & rest-events] events] (if event (do - (event->logs event ch-logs) + (re-try-event->logs event ch-logs) (recur (into all-logs (logs' (partial chunk->logs transform-fn from-block skip-log-indexes events ignore-forward?) + chunk->logs' (partial chunk->logs transform-fn from-block skip-log-indexes events ignore-forward? re-try) chs-await-for-workers (for [n (range chunks-parallelism)] (async/chan 1)) workers (dotimes [n chunks-parallelism] From efa0d8ee3c099835aa8517b4348ea19a3dfd09e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Krzysztof=20W=C5=82adyka?= Date: Sun, 11 Dec 2022 12:00:06 +0100 Subject: [PATCH 4/4] add timeout delay between re-try --- src/district/server/smart_contracts.cljs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/district/server/smart_contracts.cljs b/src/district/server/smart_contracts.cljs index e05321e..41956f5 100644 --- a/src/district/server/smart_contracts.cljs +++ b/src/district/server/smart_contracts.cljs @@ -282,7 +282,8 @@ (let [log (! ch-output log))))))] (go-loop [all-logs [] [event & rest-events] events]