You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by rn...@apache.org on 2014/08/01 11:11:28 UTC

[42/48] mem3 commit: updated refs/heads/windsor-merge to ff02b9a

Write plan to /tmp/rebalance_plan.txt

Was a request by @mattwhite to help with automation.  I was fairly
sloppy in the implementation here, could leave this off and do a better
job next time.


Project: http://git-wip-us.apache.org/repos/asf/couchdb-mem3/repo
Commit: http://git-wip-us.apache.org/repos/asf/couchdb-mem3/commit/e147621c
Tree: http://git-wip-us.apache.org/repos/asf/couchdb-mem3/tree/e147621c
Diff: http://git-wip-us.apache.org/repos/asf/couchdb-mem3/diff/e147621c

Branch: refs/heads/windsor-merge
Commit: e147621ce9b4703228fc548280503a64eb65750b
Parents: c63fc05
Author: Adam Kocoloski <ad...@cloudant.com>
Authored: Thu Oct 31 12:23:49 2013 -0400
Committer: Robert Newson <rn...@apache.org>
Committed: Wed Jul 23 18:51:01 2014 +0100

----------------------------------------------------------------------
 src/mem3_rebalance.erl | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/couchdb-mem3/blob/e147621c/src/mem3_rebalance.erl
----------------------------------------------------------------------
diff --git a/src/mem3_rebalance.erl b/src/mem3_rebalance.erl
index d85e8c2..54dcd1c 100644
--- a/src/mem3_rebalance.erl
+++ b/src/mem3_rebalance.erl
@@ -51,10 +51,14 @@ expand() ->
 %% @doc Expands a cluster without requiring each DB to be optimally balanced.
 -spec expand(integer() | global) -> [{atom(), #shard{}, node()}].
 expand(global) ->
+    {ok, FD} = file:open("/tmp/rebalance_plan.txt", [write]),
+    erlang:put(fd, FD),
     global_expand(surviving_nodes(), [], 1000);
 
 %% @doc Expands all databases in the cluster, stopping at Limit operations.
 expand(Limit) when is_integer(Limit), Limit > 0 ->
+    {ok, FD} = file:open("/tmp/rebalance_plan.txt", [write]),
+    erlang:put(fd, FD),
     TargetNodes = surviving_nodes(),
     LocalBalanceFun = fun(Db, Moves) -> expand(Db, TargetNodes, Moves) end,
     LocalBalanceOps = apply_to_cluster(LocalBalanceFun, Limit),
@@ -85,6 +89,8 @@ contract() ->
 %% @doc Computes a plan to remove up to Limit shards from nodes in "decom" zone.
 -spec contract(integer()) -> [{atom(), #shard{}, node()}].
 contract(Limit) when is_integer(Limit), Limit > 0 ->
+    {ok, FD} = file:open("/tmp/rebalance_plan.txt", [write]),
+    erlang:put(fd, FD),
     TargetNodes = surviving_nodes(),
     apply_to_cluster(fun(Db, Moves) -> contract(Db, TargetNodes, Moves) end, Limit);
 
@@ -111,6 +117,8 @@ fix_zoning() ->
 %%      levels and improper zoning.
 -spec fix_zoning(integer()) -> [{atom(), #shard{}, node()}].
 fix_zoning(Limit) when is_integer(Limit), Limit > 0 ->
+    {ok, FD} = file:open("/tmp/rebalance_plan.txt", [write]),
+    erlang:put(fd, FD),
     apply_to_cluster(fun fix_zoning/2, Limit);
 
 fix_zoning(DbName) when is_binary(DbName); is_list(DbName) ->
@@ -485,8 +493,14 @@ print({Op, Shard, TargetNode} = Operation) ->
         [{capture, all_but_first, binary}]
     ),
     OpName = case Op of move -> move2; _ -> Op end,
-    io:format("clou shard ~s ~s ~s ~s ~s ~s ~s~n", [OpName, Cluster, Account, DbName,
-         Range, SourceId, TargetId]),
+    case get(fd) of
+        undefined ->
+            io:format("clou shard ~s ~s ~s ~s ~s ~s ~s~n", [OpName,
+                 Cluster, Account, DbName, Range, SourceId, TargetId]);
+        FD ->
+            io:format(FD, "clou shard ~s ~s ~s ~s ~s ~s ~s~n", [OpName,
+                 Cluster, Account, DbName, Range, SourceId, TargetId])
+    end,
     Operation;
 
 print(Operations) when is_list(Operations) ->