           ucts (add-increasing-space ucs (int (/ time-to-spread (count ucs))))]
       (check-channel-size users connectors)
       (doseq [[u c t] ucts]
-        (if-not (@busy [(get-name u) c])
+        (if (busy? u c)
+          (log/log-info context ": avoiding inserting on " (user-connector u c) " being in a process.")       
           (go
             (<! (timeout t))
-            (log/log-info "Inserting collect request for " (user-connector u c) " after timeout " t)
-            (>! chan [u c]))
-          (log/log-info "Avoiding working on " (user-connector u c) " being in a process." ))))
-    (log/log-info "No users to collect for " context)))
+            (if-not (busy? u c)
+              (do
+                (busy! u c)
+                (>! chan [u c])
+                (log/log-info context ": Inserted collect request for " (user-connector u c) " after timeout " t))
+              (log/log-info context ": Avoiding working on " (user-connector u c) " being in a process.")))))
+    (log/log-info context ": No users to collect"))))
 
 ; Start collector writers
 (defn collect-writers

(defn online-users
  []
  (filter online? (users)))

(defn get-name
  [user]
  (.getName user))

; This is the channel for queuing the online user requests
(def online-collector-chan (chan (sliding-buffer collector-chan-size)))

    (go
      (while true
        (let [[[user connector] ch] (alts! [chan (timeout timeout-processing-loop)])]
          (when (not-nil? user)            
            (try
              (log/log-info (str "executing collect request for " (get-name user) " and " (.getConnectorInstanceName connector)))
              (collect! user connector)
