From 94a74ed09f254a97d842049900bbbd82d67532da Mon Sep 17 00:00:00 2001 From: yito88 Date: Sun, 23 Jun 2024 21:31:47 +0200 Subject: [PATCH] fix to catch exceptions --- scalardb/src/scalardb/transfer.clj | 38 +++++++++++------------ scalardb/src/scalardb/transfer_append.clj | 33 ++++++++++---------- 2 files changed, 34 insertions(+), 37 deletions(-) diff --git a/scalardb/src/scalardb/transfer.clj b/scalardb/src/scalardb/transfer.clj index 03b9819..50b63ff 100644 --- a/scalardb/src/scalardb/transfer.clj +++ b/scalardb/src/scalardb/transfer.clj @@ -127,19 +127,16 @@ (assoc op :type :fail :error {:results results}))))) (defn- read-record - "Read a record with a transaction. If read fails, this function returns nil." + "Read a record with a transaction. If read fails, an exception is thrown." [tx storage i] - (try - ;; Need Storage API to read the transaction metadata - (let [tx-result (.get tx (prepare-get i)) - result (.get storage (prepare-get i))] - ;; Put the same balance to check conflicts with in-flight transactions - (->> (calc-new-balance tx-result 0) - (prepare-put i) - (.put tx)) - result) - (catch CrudException _ nil) - (catch ExecutionException _ nil))) + ;; Need Storage API to read the transaction metadata + (let [tx-result (.get tx (prepare-get i)) + result (.get storage (prepare-get i))] + ;; Put the same balance to check conflicts with in-flight transactions + (->> (calc-new-balance tx-result 0) + (prepare-put i) + (.put tx)) + result)) (defn read-all-with-retry [test n] @@ -150,15 +147,16 @@ (scalar/prepare-transaction-service! test) (scalar/prepare-storage-service! test)) test - (let [tx (scalar/start-transaction test) - results (doall (map #(read-record tx @(:storage test) %) (range n)))] - (try + (try + (let [tx (scalar/start-transaction test) + results (doall (map #(read-record tx @(:storage test) %) + (range n)))] (.commit tx) - (if (some nil? results) nil results) - (catch Exception e - ;; The transaction conflicted - (warn (.getMessage e)) - nil))))) + results) + (catch Exception e + ;; The transaction conflicted + (warn (.getMessage e)) + nil)))) (defrecord TransferClient [initialized? n initial-balance max-txs] client/Client diff --git a/scalardb/src/scalardb/transfer_append.clj b/scalardb/src/scalardb/transfer_append.clj index 4de723d..bfa169b 100644 --- a/scalardb/src/scalardb/transfer_append.clj +++ b/scalardb/src/scalardb/transfer_append.clj @@ -129,30 +129,29 @@ :start-fail)) (defn- scan-records + "Scan records with a transaction. If the scan fails, an exception is thrown." [tx id] - (try - (let [results (.scan tx (prepare-scan id))] - ;; Put the same balance to check conflicts with in-flight transactions - (->> (prepare-put id - (-> results first calc-new-age) - (-> results first (calc-new-balance 0))) - (.put tx)) - results) - (catch CrudException _ nil))) + (let [results (.scan tx (prepare-scan id))] + ;; Put the same balance to check conflicts with in-flight transactions + (->> (prepare-put id + (-> results first calc-new-age) + (-> results first (calc-new-balance 0))) + (.put tx)) + results)) (defn scan-all-records-with-retry [test n] (scalar/check-transaction-connection! test) (scalar/with-retry scalar/prepare-transaction-service! test - (let [tx (scalar/start-transaction test) - results (doall (map #(scan-records tx %) (range n)))] - (try + (try + (let [tx (scalar/start-transaction test) + results (doall (map #(scan-records tx %) (range n)))] (.commit tx) - (if (some nil? results) nil results) - (catch Exception e - ;; The transaction conflicted - (warn (.getMessage e)) - nil))))) + results) + (catch Exception e + ;; The transaction conflicted + (warn (.getMessage e)) + nil)))) (defrecord TransferClient [initialized? n initial-balance max-txs] client/Client