Skip to content

Commit 0113d57

Browse files
committed
Changing file name and record field names ...
... in order to extend rebalance progress to per stage rebalance information. Change-Id: I3c3a27468632c2cc0f21397f589d57a49b34137a Reviewed-on: http://review.couchbase.org/101817 Reviewed-by: Aliaksey Artamonau <[email protected]> Tested-by: Abhijeeth Nuthan <[email protected]>
1 parent c845c11 commit 0113d57

File tree

2 files changed

+44
-42
lines changed

2 files changed

+44
-42
lines changed

src/ns_rebalance_observer.erl

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -44,16 +44,16 @@
4444
-record(state, {bucket :: bucket_name() | undefined,
4545
buckets_count :: pos_integer(),
4646
bucket_number :: non_neg_integer(),
47-
progress :: rebalance_progress:progress(),
47+
stage_info :: rebalance_progress:stage_info(),
4848
nodes_info :: [{atom(), [node()]}],
4949
type :: atom(),
5050
done_moves :: [#move_state{}],
5151
current_moves :: [#move_state{}],
5252
pending_moves :: [#move_state{}]
5353
}).
5454

55-
start_link(Services, NodesInfo, Type) ->
56-
gen_server:start_link(?SERVER, ?MODULE, {Services, NodesInfo, Type}, []).
55+
start_link(Stages, NodesInfo, Type) ->
56+
gen_server:start_link(?SERVER, ?MODULE, {Stages, NodesInfo, Type}, []).
5757

5858
generic_get_call(Call) ->
5959
generic_get_call(Call, 10000).
@@ -71,8 +71,8 @@ get_detailed_progress() ->
7171
get_aggregated_progress(Timeout) ->
7272
generic_get_call(get_aggregated_progress, Timeout).
7373

74-
update_progress(Service, ServiceProgress) ->
75-
gen_server:cast(?SERVER, {update_progress, Service, ServiceProgress}).
74+
update_progress(Stage, StageProgress) ->
75+
gen_server:cast(?SERVER, {update_progress, Stage, StageProgress}).
7676

7777
is_interesting_master_event({_, bucket_rebalance_started, _Bucket, _Pid}) ->
7878
fun handle_bucket_rebalance_started/2;
@@ -85,7 +85,7 @@ is_interesting_master_event({_, vbucket_move_done, _BucketName, _VBucketId}) ->
8585
is_interesting_master_event(_) ->
8686
undefined.
8787

88-
init({Services, NodesInfo, Type}) ->
88+
init({Stages, NodesInfo, Type}) ->
8989
Self = self(),
9090
ns_pubsub:subscribe_link(master_activity_events,
9191
fun (Event, _Ignored) ->
@@ -98,14 +98,14 @@ init({Services, NodesInfo, Type}) ->
9898
end, []),
9999

100100
{active_nodes, ActiveNodes} = lists:keyfind(active_nodes, 1, NodesInfo),
101-
Progress = rebalance_progress:init(ActiveNodes, Services),
101+
StageInfo = rebalance_stage_info:init(ActiveNodes, Stages),
102102
BucketsCount = length(ns_bucket:get_buckets()),
103103
proc_lib:spawn_link(erlang, apply, [fun docs_left_updater_init/1, [Self]]),
104104

105105
{ok, #state{bucket = undefined,
106106
buckets_count = BucketsCount,
107107
bucket_number = 0,
108-
progress = Progress,
108+
stage_info = StageInfo,
109109
nodes_info = NodesInfo,
110110
type = Type,
111111
done_moves = [],
@@ -117,8 +117,8 @@ handle_call(get, _From, State) ->
117117
handle_call(get_detailed_progress, _From, State) ->
118118
{reply, do_get_detailed_progress(State), State};
119119
handle_call(get_aggregated_progress, _From,
120-
#state{progress = Progress} = State) ->
121-
{reply, dict:to_list(rebalance_progress:get_progress(Progress)), State};
120+
#state{stage_info = StageInfo} = State) ->
121+
{reply, dict:to_list(rebalance_stage_info:get_progress(StageInfo)), State};
122122
handle_call(Req, From, State) ->
123123
?log_error("Got unknown request: ~p from ~p", [Req, From]),
124124
{reply, unknown_request, State}.
@@ -172,10 +172,11 @@ handle_cast({update_stats, VBucket, NodeToDocsLeft}, State) ->
172172
Move#move_state{stats = NewStats}
173173
end)};
174174

175-
handle_cast({update_progress, Service, ServiceProgress},
176-
#state{progress = Old} = State) ->
177-
NewProgress = rebalance_progress:update(Service, ServiceProgress, Old),
178-
{noreply, State#state{progress = NewProgress}};
175+
handle_cast({update_progress, Stage, StageProgress},
176+
#state{stage_info = Old} = State) ->
177+
NewStageInfo = rebalance_stage_info:update_progress(
178+
Stage, StageProgress, Old),
179+
{noreply, State#state{stage_info = NewStageInfo}};
179180

180181
handle_cast(Req, _State) ->
181182
?log_error("Got unknown cast: ~p", [Req]),

src/rebalance_progress.erl renamed to src/rebalance_stage_info.erl

Lines changed: 29 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -13,64 +13,65 @@
1313
%% See the License for the specific language governing permissions and
1414
%% limitations under the License.
1515
%%
16-
-module(rebalance_progress).
16+
-module(rebalance_stage_info).
1717

18-
-export([init/2, get_progress/1, update/3]).
19-
-export_type([progress/0]).
18+
-export([init/2, get_progress/1, update_progress/3]).
19+
-export_type([stage_info/0]).
2020

21-
-record(progress, {
22-
per_service :: dict:dict(),
21+
-record(stage_info, {
22+
per_stage_progress :: dict:dict(),
2323
aggregated :: dict:dict()
2424
}).
2525

26-
-type progress() :: #progress{}.
26+
-type stage_info() :: #stage_info{}.
2727

28-
init(LiveNodes, Services) ->
28+
init(LiveNodes, Stages) ->
2929
do_init([{S, ns_cluster_membership:service_nodes(LiveNodes, S)} ||
30-
S <- Services]).
30+
S <- Stages]).
3131

32-
do_init(Services) ->
33-
aggregate(init_per_service(Services)).
32+
do_init(Stages) ->
33+
aggregate(init_per_stage(Stages)).
3434

35-
init_per_service(Services) ->
36-
dict:from_list([{Service, init_service(Nodes)} ||
37-
{Service, Nodes} <- Services]).
35+
init_per_stage(Stages) ->
36+
dict:from_list([{Stage, init_stage(Nodes)} ||
37+
{Stage, Nodes} <- Stages]).
3838

39-
init_service(Nodes) ->
39+
init_stage(Nodes) ->
4040
dict:from_list([{N, 0} || N <- Nodes]).
4141

42-
get_progress(#progress{aggregated = Aggregated}) ->
42+
get_progress(#stage_info{aggregated = Aggregated}) ->
4343
Aggregated.
4444

45-
update(Service, ServiceProgress, #progress{per_service = PerService}) ->
46-
aggregate(do_update(Service, ServiceProgress, PerService)).
45+
update_progress(Stage, StageProgress,
46+
#stage_info{per_stage_progress = PerStage}) ->
47+
aggregate(do_update_progress(Stage, StageProgress, PerStage)).
4748

48-
do_update(Service, ServiceProgress, PerService) ->
49-
dict:update(Service,
50-
fun (OldServiceProgress) ->
49+
do_update_progress(Stage, StageProgress, PerStage) ->
50+
dict:update(Stage,
51+
fun (OldStageProgress) ->
5152
dict:merge(fun (_, _, New) ->
5253
New
53-
end, OldServiceProgress, ServiceProgress)
54-
end, PerService).
54+
end, OldStageProgress, StageProgress)
55+
end, PerStage).
5556

56-
aggregate(PerService) ->
57+
aggregate(PerStage) ->
5758
Aggregated0 =
5859
dict:fold(
59-
fun (_, ServiceProgress, AggAcc) ->
60+
fun (_, StageProgress, AggAcc) ->
6061
dict:fold(
6162
fun (Node, NodeProgress, Acc) ->
6263
misc:dict_update(
6364
Node,
6465
fun ({Count, Sum}) ->
6566
{Count + 1, Sum + NodeProgress}
6667
end, {0, 0}, Acc)
67-
end, AggAcc, ServiceProgress)
68-
end, dict:new(), PerService),
68+
end, AggAcc, StageProgress)
69+
end, dict:new(), PerStage),
6970

7071
Aggregated =
7172
dict:map(fun (_, {Count, Sum}) ->
7273
Sum / Count
7374
end, Aggregated0),
7475

75-
#progress{per_service = PerService,
76-
aggregated = Aggregated}.
76+
#stage_info{per_stage_progress = PerStage,
77+
aggregated = Aggregated}.

0 commit comments

Comments
 (0)