Makes new square loading much faster, parallel.

This commit is contained in:
2023-01-08 08:27:48 -08:00
parent ff48e1fab4
commit 553330297a
4 changed files with 58 additions and 55 deletions

View File

@@ -42,7 +42,9 @@
{:container (:DockerId container-data)
:ip (-> container-data :Networks first :IPv4Addresses first)
:env (:dd-env env)
:service (:dd-service env)})))
:service (or
(System/getenv "INTEGREAT_JOB")
(:dd-service env))})))
(defn stop-logging-context []
(when (seq container-data)

View File

@@ -10,7 +10,8 @@
(defn execute [name f]
(try
(lc/with-context {:background-job name}
(mu/with-context {:background-job name}
(mu/with-context {:background-job name
:service name}
(mount/start (mount/only #{#'conn #'metrics-setup #'container-tags #'logging-context #'container-data}))
((heartbeat f name))
(log/info "Stopping " name)

View File

@@ -2,8 +2,8 @@
(:gen-class)
(:require
[auto-ap.jobs.core :refer [execute]]
[auto-ap.square.core2 :as square2]))
[auto-ap.square.core3 :as square3]))
(defn -main [& _]
(execute "square2-loading" square2/upsert-all))
(execute "square3-loading" square3/do-upsert-all))

View File

@@ -637,59 +637,59 @@
(defn upsert-all [ & clients]
(capture-context->lc
(->> (apply get-square-clients clients)
(s/->source)
(s/filter (fn [client]
(seq (filter :square-location/client-location (:client/square-locations client)))))
(s/map (fn [client]
(with-context-as (merge lc {:client (:client/code client)}) lc
(log/info ::import-started)
(mark-integration-status client {:integration-status/last-attempt (coerce/to-date (time/now))})
(log/info ::starting-upsert)
(->> (apply get-square-clients clients)
(s/->source)
(s/filter (fn [client]
(seq (filter :square-location/client-location (:client/square-locations client)))))
(s/map (fn [client]
(with-context-as (merge lc {:client (:client/code client)}) lc
(log/info ::import-started)
(mark-integration-status client {:integration-status/last-attempt (coerce/to-date (time/now))})
(->
(de/chain (upsert-locations client)
(fn [_]
(mu/with-context lc
(log/info ::upsert-orders-started)
(upsert client)))
(fn [_]
(mu/with-context lc
(log/info ::upsert-settlements-started)
(upsert-settlements client)))
(fn [_]
(mu/with-context lc
(log/info ::upsert-refunds-started)
(upsert-refunds client)))
(fn [_]
(mu/with-context lc
(log/info ::upsert-done))
(mark-integration-status client {:integration-status/state :integration-state/success
:integration-status/last-updated (coerce/to-date (time/now))})))
(de/catch (fn [e]
(mu/with-context lc
(let [data (ex-data e)]
(log/info ::upsert-all-failed
:severity :warn
:exception e)
(cond (= (:status data) 401)
(mark-integration-status client {:integration-status/state :integration-state/unauthorized
:integration-status/message (-> data :body str)})
(->
(de/chain (upsert-locations client)
(fn [_]
(mu/with-context lc
(log/info ::upsert-orders-started)
(upsert client)))
(fn [_]
(mu/with-context lc
(log/info ::upsert-settlements-started)
(upsert-settlements client)))
(fn [_]
(mu/with-context lc
(log/info ::upsert-refunds-started)
(upsert-refunds client)))
(fn [_]
(mu/with-context lc
(log/info ::upsert-done))
(mark-integration-status client {:integration-status/state :integration-state/success
:integration-status/last-updated (coerce/to-date (time/now))})))
(de/catch (fn [e]
(mu/with-context lc
(let [data (ex-data e)]
(log/info ::upsert-all-failed
:severity :warn
:exception e)
(cond (= (:status data) 401)
(mark-integration-status client {:integration-status/state :integration-state/unauthorized
:integration-status/message (-> data :body str)})
(= (:status data) 503)
(mark-integration-status client {:integration-status/state :integration-state/failed
:integration-status/message (-> data :body str)})
:else
(mark-integration-status client {:integration-status/state :integration-state/failed
:integration-status/message (or (ex-message e)
(str e))}))))))))))
(s/buffer 5)
(s/realize-each)
(s/reduce conj []))))
(= (:status data) 503)
(mark-integration-status client {:integration-status/state :integration-state/failed
:integration-status/message (-> data :body str)})
:else
(mark-integration-status client {:integration-status/state :integration-state/failed
:integration-status/message (or (ex-message e)
(str e))}))))))))))
(s/buffer 5)
(s/realize-each)
(s/reduce conj []))))
(defn do-upsert-all [& clients]
(mu/with-context {:background-job "Square 3"}
(mu/trace
::upsert-all
[:clients clients]
@(apply upsert-all clients))))
(mu/trace
::upsert-all
[:clients clients]
@(apply upsert-all clients)))