adds detailed tracing for ledger loads.

This commit is contained in:
2023-03-10 15:55:32 -08:00
parent cdf9aa571f
commit 130a8f005f

View File

@@ -19,6 +19,7 @@
[com.walmartlabs.lacinia.util :refer [attach-resolvers]] [com.walmartlabs.lacinia.util :refer [attach-resolvers]]
[datomic.api :as d] [datomic.api :as d]
[mount.core :as mount] [mount.core :as mount]
[com.brunobonacci.mulog :as mu]
[unilog.context :as lc] [unilog.context :as lc]
[yang.scheduler :as scheduler] [yang.scheduler :as scheduler]
[auto-ap.graphql.utils :refer [attach-tracing-resolvers]]) [auto-ap.graphql.utils :refer [attach-tracing-resolvers]])
@@ -291,13 +292,14 @@
(defn import-ledger [context args _] (defn import-ledger [context args _]
(assert-admin (:id context)) (assert-admin (:id context))
(lc/with-context {:area "import ledger"} (let [all-vendors (mu/trace ::get-all-vendors
(let [all-vendors (->> (d/q '[:find [?e ...] []
(->> (d/q '[:find [?e ...]
:in $ :in $
:where [?e :vendor/name]] :where [?e :vendor/name]]
(d/db conn)) (d/db conn))
(d/pull-many (d/db conn) d-vendors/default-read) (d/pull-many (d/db conn) d-vendors/default-read)
(by :vendor/name)) (by :vendor/name)))
all-clients (by :client/code (d-clients/get-all )) all-clients (by :client/code (d-clients/get-all ))
all-client-bank-accounts (reduce all-client-bank-accounts (reduce
(fn [acc client] (fn [acc client]
@@ -326,7 +328,9 @@
:db/id vendor_name}))) :db/id vendor_name})))
{} {}
(:entries args)) (:entries args))
_ (audit-transact-batch (vec (vals new-hidden-vendors)) (:id context)) _ (mu/trace ::upsert-new-vendors
[]
(audit-transact-batch (vec (vals new-hidden-vendors)) (:id context)))
all-vendors (->> (d/q '[:find [?e ...] all-vendors (->> (d/q '[:find [?e ...]
:in $ :in $
:where [?e :vendor/name]] :where [?e :vendor/name]]
@@ -334,7 +338,9 @@
(d/pull-many (d/db conn) d-vendors/default-read) (d/pull-many (d/db conn) d-vendors/default-read)
(by :vendor/name)) (by :vendor/name))
all-accounts (transduce (map (comp str :account/numeric-code)) conj #{} (a/get-accounts)) all-accounts (transduce (map (comp str :account/numeric-code)) conj #{} (a/get-accounts))
transaction (doall (map transaction (mu/trace ::build-transaction
[:count (count (:entries args))]
(doall (map
(assoc-error (fn [entry] (assoc-error (fn [entry]
(let [vendor (all-vendors (:vendor_name entry))] (let [vendor (all-vendors (:vendor_name entry))]
(when-not (all-clients (:client_code entry)) (when-not (all-clients (:client_code entry))
@@ -429,7 +435,7 @@
(:line_items entry)) (:line_items entry))
:journal-entry/cleared true}))))) :journal-entry/cleared true})))))
(:entries args))) (:entries args))))
errors (filter #(= (:status %) :error) transaction) errors (filter #(= (:status %) :error) transaction)
ignored (filter #(= (:status %) :ignored) transaction) ignored (filter #(= (:status %) :ignored) transaction)
success (filter #(= (:status %) :success) transaction) success (filter #(= (:status %) :success) transaction)
@@ -447,11 +453,17 @@
(log/info errors) (log/info errors)
(audit-transact-batch retraction (:id context)) (mu/trace ::retraction-tx
[:count (count retraction)]
(audit-transact-batch retraction (:id context)))
(mu/trace ::ignore-retraction-tx
[:count (count ignore-retraction)]
(when (seq ignore-retraction) (when (seq ignore-retraction)
(audit-transact-batch ignore-retraction (:id context))) (audit-transact-batch ignore-retraction (:id context))))
#_(log/info (map :tx success)) #_(log/info (map :tx success))
(audit-transact-batch (map :tx success) (:id context)) (mu/trace ::success-tx
[:count (count success)]
(audit-transact-batch (map :tx success) (:id context)))
{:successful (map (fn [x] {:external_id (:external_id x)}) success) {:successful (map (fn [x] {:external_id (:external_id x)}) success)
:ignored (map (fn [x] :ignored (map (fn [x]
@@ -459,7 +471,7 @@
ignored) ignored)
:existing [] :existing []
:errors (map (fn [x] {:external_id (:external_id x) :errors (map (fn [x] {:external_id (:external_id x)
:error (:error x)}) errors)}))) :error (:error x)}) errors)}))
(defn build-running-balance (defn build-running-balance
([lookup-account all-ledger-entries] ([lookup-account all-ledger-entries]