mirror of
https://github.com/penpot/penpot.git
synced 2025-05-14 23:46:38 +02:00
✨ Improve rollback handlong on db ns
This commit is contained in:
parent
997441eff3
commit
f73ce6572c
1 changed files with 16 additions and 7 deletions
|
@ -517,9 +517,11 @@
|
||||||
|
|
||||||
(defn rollback!
|
(defn rollback!
|
||||||
([conn]
|
([conn]
|
||||||
|
(if (and (map? conn) (::savepoint conn))
|
||||||
|
(rollback! conn (::savepoint conn))
|
||||||
(let [^Connection conn (get-connection conn)]
|
(let [^Connection conn (get-connection conn)]
|
||||||
(l/trc :hint "explicit rollback requested")
|
(l/trc :hint "explicit rollback requested")
|
||||||
(.rollback conn)))
|
(.rollback conn))))
|
||||||
([conn ^Savepoint sp]
|
([conn ^Savepoint sp]
|
||||||
(let [^Connection conn (get-connection conn)]
|
(let [^Connection conn (get-connection conn)]
|
||||||
(l/trc :hint "explicit rollback requested (savepoint)")
|
(l/trc :hint "explicit rollback requested (savepoint)")
|
||||||
|
@ -538,8 +540,13 @@
|
||||||
(let [conn (::conn system)
|
(let [conn (::conn system)
|
||||||
sp (savepoint conn)]
|
sp (savepoint conn)]
|
||||||
(try
|
(try
|
||||||
(let [result (apply f system params)]
|
(let [system' (-> system
|
||||||
(release! conn sp)
|
(assoc ::savepoint sp)
|
||||||
|
(dissoc ::rollback))
|
||||||
|
result (apply f system' params)]
|
||||||
|
(if (::rollback system)
|
||||||
|
(rollback! conn sp)
|
||||||
|
(release! conn sp))
|
||||||
result)
|
result)
|
||||||
(catch Throwable cause
|
(catch Throwable cause
|
||||||
(.rollback ^Connection conn ^Savepoint sp)
|
(.rollback ^Connection conn ^Savepoint sp)
|
||||||
|
@ -547,8 +554,10 @@
|
||||||
|
|
||||||
(::pool system)
|
(::pool system)
|
||||||
(with-atomic [conn (::pool system)]
|
(with-atomic [conn (::pool system)]
|
||||||
(let [system (assoc system ::conn conn)
|
(let [system' (-> system
|
||||||
result (apply f system params)]
|
(assoc ::conn conn)
|
||||||
|
(dissoc ::rollback))
|
||||||
|
result (apply f system' params)]
|
||||||
(when (::rollback system)
|
(when (::rollback system)
|
||||||
(rollback! conn))
|
(rollback! conn))
|
||||||
result))
|
result))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue