             (update-in [:allocations job task] conj (:id args))
             (update-in [:allocations job task] vec)
             (assoc-in [:peer-state (:id args)] :warming-up)
-            (offer-acker job args)))
+            (offer-acker job task args)))
       replica)))
 
 (defmethod select-job :onyx.job-scheduler/round-robin

            (update-in [:allocations job task] conj (:id args))
            (update-in [:allocations job task] vec)
            (assoc-in [:peer-state (:id args)] :warming-up)
            (offer-acker job args)))
      replica)))

(defmethod select-job :default

       (common/alive-jobs replica)
       (common/jobs-with-available-tasks replica)))

(defn allowed-to-be-acker? [replica job task args]
  (or (some #{task} (:acker-exempt-tasks replica))
      (some #{task} (get-in replica [:input-tasks job]))
      (some #{task} (get-in replica [:output-tasks job]))))

(defn offer-acker [replica job task args]
  (let [peers (count (apply concat (vals (get-in replica [:allocations job]))))
        ackers (count (get-in replica [:ackers job]))
        pct (get-in replica [:acker-percentage job])
        current-pct (int (Math/ceil (* 10 (double (/ ackers peers)))))]
    (if (and (< current-pct pct) (allowed-to-be-acker? replica job task args))
      (-> replica
          (update-in [:ackers job] conj (:id args))
          (update-in [:ackers job] vec))
