Merge branch 'master' into 0.8.2
diff --git a/src/clj/backtype/storm/scheduler/IsolationScheduler.clj b/src/clj/backtype/storm/scheduler/IsolationScheduler.clj
index ad756a8..8913c1d 100644
--- a/src/clj/backtype/storm/scheduler/IsolationScheduler.clj
+++ b/src/clj/backtype/storm/scheduler/IsolationScheduler.clj
@@ -192,16 +192,17 @@
(.blacklistHost cluster host))
)))
- (doseq [[top-id worker-specs] topology-worker-specs]
- (if-not (empty? worker-specs)
- (log-warn "Unable to isolate topology " top-id)
+ (let [non-iso-topologies (->> topology-worker-specs
+ (mapcat (fn [[top-id worker-specs]]
+ (if-not (empty? worker-specs) [top-id])
+ )))]
+ (if (empty? non-iso-topologies)
+ ;; run default scheduler on non-isolated topologies
+ (-<> topology-worker-specs
+ allocated-topologies
+ (leftover-topologies topologies <>)
+ (DefaultScheduler/default-schedule <> cluster))
+ (log-warn "Unstable to isolate topologies " (pr-str non-iso-topologies) ". Will wait for enough resources for isolated topologies before allocating any other resources.")
))
-
-
- ;; run default scheduler on iso topologies that didn't have enough slot + non-isolated topologies
- (-<> topology-worker-specs
- allocated-topologies
- (leftover-topologies topologies <>)
- (DefaultScheduler/default-schedule <> cluster))
(.setBlacklistedHosts cluster orig-blacklist)
))