   [{:keys [conn] :as system} job-handlers job]
   (let [job-id (:job/id job)
         job-handler (get job-handlers (:job/type job))
-        exit-status (try-thunk (->job-exception-handler system)
-                               #(job-handler system job))
+        exit-status (try-thunk (->job-exception-handler system job)
+                               (fn []
+                                 (job-handler system job)
+                                 :finished))
         txns (core/update-job-status-txns (d/db conn) job-id exit-status)]
-    (timbre/info "Exited job" job-id "with status" exit-status)
-    (when (= exit-status :aborted)
+    (timbre/info "Job" job-id "exited with status" exit-status)
+    (if (= exit-status :aborted)
       (timbre/info "Found :aborted job; aborting all dependents of" job-id))
-    (d/transact conn txns)))
+    @(d/transact conn txns)))
 
 (defn ->job-executor
   "Construct a function that will reserve a job off the queue and execute it,

  "Exception handler for job thunks; invokes the default handler,
   then returns a status keyword. Attempts to parse special signal
   status out of ex, else defaults to :failed"
  [system ex]
  (fn [ex]
    (let [default-handler (->default-exception-handler system)]
      (default-handler ex)
      (or (get (ex-data ex) :overseer/status)
          :failed))))

(defn select-and-reserve
  "Attempt to select a ready job to run and reserve it, returning
   nil on failure"
  [{:keys [conn] :as system} jobs conn]
  (let [job (core/->job-entity (d/db conn) (rand-nth jobs))
        ex-handler (->default-exception-handler system)]
    (when (reserve-job ex-handler conn job)
      job)))

       (map (partial core/->job-entity db))
       (filter (comp job-handlers :job/type))))

(defn sentry-capture [dsn ex]
  (let [extra (or (ex-data ex) {})
        ex-map
