                {:instance (str (count (:job/instance job-ent)))})
              "UTF-8")
      executor-key executor-value}))
+
+(defn rescind-offer!
+  [rescinded-offer-id-cache offer-id]
+  (log/info "Rescinding offer" offer-id)
+  (swap! rescinded-offer-id-cache (fn [c]
+                                    (if (cache/has? c offer-id)
+                                      (cache/hit c offer-id)
+                                      (cache/miss c offer-id offer-id)))))
 
 (timers/deftimer [cook-mesos scheduler handle-status-update-duration])
 (meters/defmeter [cook-mesos scheduler tasks-killed-in-status-update])

      (resourceOffers [driver offers]
                      (case
                          (async/alt!!
                           [[offer-chan [offers driver @fid]]] (log/debug "Passed " (count offers) " to incubator")
                           :default :back-pressure
                           :priority true)
                        :back-pressure (do
                                         (log/warn "Back pressure on offer-incubator. Declining " (count offers) "offers")
                                         (meters/mark! offer-back-pressure)
                                         (decline-offers driver (map :id offers)))
                        nil))

        (log/debug "Preparing to pull offer (offer-matcher)")
        (let [offer (async/<!! matcher-chan)
              fid (:fid offer)
              offer-ids (:ids offer)
              driver (:driver offer)]
          (log/debug "(offer-matcher) Offer taken " offer)
          (if-let [invalid-offer-id (some #(cache/lookup @rescinded-offer-id-cache %) offer-ids)]
            (log/info "Received rescinded offer" invalid-offer-id "in offer matcher")
            (handle-resource-offer! conn driver fid pending-jobs-atom offer)))
        (log/debug "(offer matcher) Handled resource offer")
        (recur))
      (catch Exception e
