From 9dc6023f3f671063125e3b6c5e632dfbca4af4aa Mon Sep 17 00:00:00 2001 From: Iustin Pop <iustin@google.com> Date: Sun, 15 Feb 2009 14:48:39 +0100 Subject: [PATCH] Simplify the checkInstanceMove function This patch flattens the two folds into one, by simply building the whole list of moves instead of the double recursion (nodes and the each node's moves). This has no functional change, but it's much cleaner. --- src/Cluster.hs | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/src/Cluster.hs b/src/Cluster.hs index be811db1e..1cf515348 100644 --- a/src/Cluster.hs +++ b/src/Cluster.hs @@ -397,20 +397,13 @@ checkInstanceMove nodes_idx ini_tbl target = let opdx = Instance.pnode target osdx = Instance.snode target - nodes = filter (\idx -> idx /= opdx && idx /= osdx) - nodes_idx + nodes = filter (\idx -> idx /= opdx && idx /= osdx) nodes_idx aft_failover = checkSingleStep ini_tbl target ini_tbl Failover + all_moves = concatMap (\idx -> [ReplacePrimary idx, + ReplaceSecondary idx]) nodes in -- iterate over the possible nodes for this instance - foldl' - (\ accu_p new_idx -> - let - pmoves = [ReplacePrimary new_idx, - ReplaceSecondary new_idx] - in - foldl' -- while doing both possible moves - (checkSingleStep ini_tbl target) accu_p pmoves - ) aft_failover nodes + foldl' (checkSingleStep ini_tbl target) aft_failover all_moves -- | Compute the best next move. checkMove :: [Int] -- ^ Allowed target node indices -- GitLab