Fixing pacemaker delete-path bug.
Project: http://git-wip-us.apache.org/repos/asf/storm/repo Commit: http://git-wip-us.apache.org/repos/asf/storm/commit/a6b9668c Tree: http://git-wip-us.apache.org/repos/asf/storm/tree/a6b9668c Diff: http://git-wip-us.apache.org/repos/asf/storm/diff/a6b9668c Branch: refs/heads/1.0.x-branch Commit: a6b9668c98b46a7acfb9d4f39c6e90342b2f41f7 Parents: 07410fe Author: Kyle Nusbaum <[email protected]> Authored: Tue Feb 21 14:18:31 2017 -0600 Committer: Kyle Nusbaum <[email protected]> Committed: Tue Feb 21 16:06:24 2017 -0600 ---------------------------------------------------------------------- .../org/apache/storm/pacemaker/pacemaker.clj | 2 +- .../storm/pacemaker/pacemaker_state_factory.clj | 24 ++++++++++++-------- 2 files changed, 16 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/storm/blob/a6b9668c/storm-core/src/clj/org/apache/storm/pacemaker/pacemaker.clj ---------------------------------------------------------------------- diff --git a/storm-core/src/clj/org/apache/storm/pacemaker/pacemaker.clj b/storm-core/src/clj/org/apache/storm/pacemaker/pacemaker.clj index 70313e4..2b26a8a 100644 --- a/storm-core/src/clj/org/apache/storm/pacemaker/pacemaker.clj +++ b/storm-core/src/clj/org/apache/storm/pacemaker/pacemaker.clj @@ -160,7 +160,7 @@ (defn delete-path [^String path heartbeats] (let [prefix (if (= \/ (last path)) path (str path "/"))] (doseq [k (.keySet heartbeats) - :when (= (.indexOf k prefix) 0)] + :when (= (.indexOf (str k "/") prefix) 0)] (delete-pulse-id k heartbeats))) (HBMessage. HBServerMessageType/DELETE_PATH_RESPONSE nil)) http://git-wip-us.apache.org/repos/asf/storm/blob/a6b9668c/storm-core/src/clj/org/apache/storm/pacemaker/pacemaker_state_factory.clj ---------------------------------------------------------------------- diff --git a/storm-core/src/clj/org/apache/storm/pacemaker/pacemaker_state_factory.clj b/storm-core/src/clj/org/apache/storm/pacemaker/pacemaker_state_factory.clj index 80d4de5..21f3ee1 100644 --- a/storm-core/src/clj/org/apache/storm/pacemaker/pacemaker_state_factory.clj +++ b/storm-core/src/clj/org/apache/storm/pacemaker/pacemaker_state_factory.clj @@ -86,15 +86,21 @@ (delete_worker_hb [this path] (util/retry-on-exception max-retries - "delete_worker_hb" - #(let [response - (.send pacemaker-client - (HBMessage. HBServerMessageType/DELETE_PATH - (HBMessageData/path path)))] - (if (= (.get_type response) HBServerMessageType/DELETE_PATH_RESPONSE) - :ok - (throw (HBExecutionException. "Invalid Response Type")))))) - + "delete-worker-hb" + #(let [pacemaker-client-pool (makeClientPool conf pacemaker-client-pool servers) + results (map (fn [[host client]] + (try + (if (is-connection-ready client) + (delete-worker-hb path client) + :error) + (catch Exception e + :error))) + @pacemaker-client-pool)] + (when (every? (fn [result] (= :error result)) results) + (throw (HBExecutionException. "Cannot connect to any pacemaker servers")))) + nil)) + + ;; aggregating worker heartbeat details (get_worker_hb [this path watch?] (util/retry-on-exception max-retries
