Skip to content

Commit dd7eeff

Browse files
committed
have all items in bookie status map at outset
1 parent ddf15c4 commit dd7eeff

3 files changed

Lines changed: 82 additions & 56 deletions

File tree

src/leveled_bookie.erl

Lines changed: 1 addition & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3082,30 +3082,7 @@ maybelog_snap_timing(_Monitor, _, _) ->
30823082
status(#state{monitor = {no_monitor, 0}}) ->
30833083
#{};
30843084
status(#state{monitor = {Monitor, _}}) ->
3085-
AllZeros =
3086-
#{
3087-
ledger_cache_size => undefined,
3088-
n_active_journal_files => undefined,
3089-
avg_compaction_score => undefined,
3090-
level_files_count => undefined,
3091-
penciller_inmem_cache_size => undefined,
3092-
penciller_work_backlog_status => undefined,
3093-
penciller_last_merge_time => undefined,
3094-
journal_last_compaction_time => undefined,
3095-
journal_last_compaction_result => undefined,
3096-
get_sample_count => undefined,
3097-
get_body_time => undefined,
3098-
head_sample_count => undefined,
3099-
head_rsp_time => undefined,
3100-
put_sample_count => undefined,
3101-
put_prep_time => undefined,
3102-
put_ink_time => undefined,
3103-
put_mem_time => undefined,
3104-
fetch_count_by_level => undefined
3105-
},
3106-
maps:merge(
3107-
AllZeros, leveled_monitor:get_bookie_status(Monitor)
3108-
).
3085+
leveled_monitor:get_bookie_status(Monitor).
31093086

31103087
%%%============================================================================
31113088
%%% Test

src/leveled_monitor.erl

Lines changed: 50 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,38 @@
5555
]).
5656
-define(LOG_FREQUENCY_SECONDS, 30).
5757

58+
-define(INITIAL_BOOKIE_STATUS, #{
59+
avg_compaction_score => undefined,
60+
avg_compaction_score_sample => [],
61+
fetch_count_by_level =>
62+
#{
63+
not_found => #{count => 0, time => 0},
64+
mem => #{count => 0, time => 0},
65+
lower => #{count => 0, time => 0},
66+
'0' => #{count => 0, time => 0},
67+
'1' => #{count => 0, time => 0},
68+
'2' => #{count => 0, time => 0},
69+
'3' => #{count => 0, time => 0}
70+
},
71+
get_body_time => 0,
72+
get_sample_count => 0,
73+
head_rsp_time => 0,
74+
head_sample_count => 0,
75+
journal_last_compaction_result => undefined,
76+
journal_last_compaction_time => undefined,
77+
ledger_cache_size => undefined,
78+
level_files_count => #{},
79+
n_active_journal_files => 0,
80+
penciller_inmem_cache_size => undefined,
81+
penciller_last_merge_time => undefined,
82+
penciller_work_backlog_status => undefined,
83+
put_ink_time => 0,
84+
put_mem_time => 0,
85+
put_prep_time => 0,
86+
put_sample_count => 0,
87+
recent_putgethead_counts => undefined
88+
}).
89+
5890
-record(bookie_get_timings, {
5991
sample_count = 0 :: non_neg_integer(),
6092
head_time = 0 :: non_neg_integer(),
@@ -133,9 +165,10 @@
133165

134166
-type bookie_status() :: #{
135167
ledger_cache_size => undefined | non_neg_integer(),
136-
n_active_journal_files => undefined | pos_integer(),
137-
avg_compaction_score_sample => undefined | [float()],
138-
level_files_count => undefined | #{non_neg_integer() => non_neg_integer()},
168+
n_active_journal_files => non_neg_integer(),
169+
avg_compaction_score => undefined | float(),
170+
avg_compaction_score_sample => [float()],
171+
level_files_count => #{non_neg_integer() => non_neg_integer()},
139172
penciller_inmem_cache_size => undefined | pos_integer(),
140173
penciller_work_backlog_status =>
141174
undefined | {non_neg_integer(), boolean(), boolean()},
@@ -154,7 +187,15 @@
154187
count => non_neg_integer(),
155188
time => non_neg_integer()
156189
}
157-
}
190+
},
191+
get_body_time => undefined | non_neg_integer(),
192+
get_sample_count => non_neg_integer(),
193+
head_rsp_time => undefined | non_neg_integer(),
194+
head_sample_count => non_neg_integer(),
195+
put_ink_time => undefined | non_neg_integer(),
196+
put_mem_time => undefined | non_neg_integer(),
197+
put_prep_time => undefined | non_neg_integer(),
198+
put_sample_count => non_neg_integer()
158199
}.
159200
-type reporting_fetch_level() ::
160201
not_found | mem | '0' | '1' | '2' | '3' | lower.
@@ -171,7 +212,7 @@
171212
cdb_get_timings = #cdb_get_timings{} :: cdb_get_timings(),
172213
log_frequency = ?LOG_FREQUENCY_SECONDS :: pos_integer(),
173214
log_order = [] :: list(log_type()),
174-
bookie_status = #{} :: bookie_status()
215+
bookie_status :: bookie_status()
175216
}).
176217

177218
-type bookie_get_timings() :: #bookie_get_timings{}.
@@ -328,7 +369,7 @@ init([LogOpts, LogFrequency, LogOrder]) ->
328369
{ok, #state{
329370
log_frequency = LogFrequency,
330371
log_order = RandomLogOrder,
331-
bookie_status = #{}
372+
bookie_status = ?INITIAL_BOOKIE_STATUS
332373
}}.
333374

334375
handle_call(
@@ -750,21 +791,13 @@ handle_cast({ledger_cache_size_update, A}, State = #state{bookie_status = BS}) -
750791
handle_cast(
751792
{n_active_journal_files_update, Delta}, State = #state{bookie_status = BS0}
752793
) ->
753-
A =
754-
case maps:get(n_active_journal_files, BS0, undefined) of
755-
undefined -> 0;
756-
Defined -> Defined
757-
end,
794+
A = maps:get(n_active_journal_files, BS0),
758795
BS = maps:put(n_active_journal_files, A + Delta, BS0),
759796
{noreply, State#state{bookie_status = BS}};
760797
handle_cast(
761798
{avg_compaction_score_update, A}, State = #state{bookie_status = BS}
762799
) ->
763-
OldSample =
764-
case maps:get(avg_compaction_score_sample, BS, undefined) of
765-
undefined -> [];
766-
Defined -> Defined
767-
end,
800+
OldSample = maps:get(avg_compaction_score_sample, BS),
768801
NewSample =
769802
case [A | OldSample] of
770803
L when length(L) > ?AVG_COMPACTION_SCORE_OVER_MAX ->
@@ -778,11 +811,7 @@ handle_cast(
778811
handle_cast(
779812
{level_files_count_update, U, TS}, State = #state{bookie_status = BS0}
780813
) ->
781-
A =
782-
case maps:get(level_files_count, BS0, undefined) of
783-
undefined -> #{};
784-
Defined -> Defined
785-
end,
814+
A = maps:get(level_files_count, BS0, undefined),
786815
BS1 = maps:put(level_files_count, maps:merge(A, U), BS0),
787816
BS2 = maps:put(penciller_last_merge_time, TS, BS1),
788817
{noreply, State#state{bookie_status = BS2}};

test/end_to_end/basic_SUITE.erl

Lines changed: 31 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -62,12 +62,13 @@ bookie_status_report(_Config) ->
6262
{forced_logs, []}
6363
],
6464
{ok, Bookie} = leveled_bookie:book_start(StartOpts),
65+
{FF10, FF10} = list_journal_files(RootPath),
6566

6667
InitialReport =
6768
#{
6869
ledger_cache_size => undefined,
69-
n_active_journal_files => undefined,
70-
level_files_count => undefined,
70+
n_active_journal_files => 0,
71+
level_files_count => #{},
7172
penciller_inmem_cache_size => undefined,
7273
penciller_work_backlog_status => undefined,
7374
penciller_last_merge_time => undefined,
@@ -91,10 +92,19 @@ bookie_status_report(_Config) ->
9192
put_prep_time => 0,
9293
put_ink_time => 0,
9394
put_mem_time => 0,
94-
avg_compaction_score => undefined
95+
avg_compaction_score => undefined,
96+
avg_compaction_score_sample => []
9597
},
9698
InitialReport = leveled_bookie:book_status(Bookie),
99+
{FF0a, FF0b} = list_journal_files(RootPath),
97100
io:format(user, "\nInitial report, before any IO\n~p\n", [InitialReport]),
101+
io:format(
102+
user, "journal files: ~b (reported: ~b), in post_compact: ~b\n", [
103+
length(FF0a),
104+
maps:get(n_active_journal_files, InitialReport),
105+
length(FF0b)
106+
]
107+
),
98108

99109
{TObj, TSpec} = testutil:generate_testobject(),
100110
ok = testutil:book_riakput(Bookie, TObj, TSpec),
@@ -108,7 +118,7 @@ bookie_status_report(_Config) ->
108118
within_range(1, GoodPutPrepTime, maps:get(put_prep_time, Rep1)),
109119
within_range(1, GoodPutInkTime, maps:get(put_ink_time, Rep1)),
110120
within_range(1, GoodPutMemTime, maps:get(put_mem_time, Rep1)),
111-
undefined = maps:get(level_files_count, Rep1),
121+
#{} = maps:get(level_files_count, Rep1),
112122

113123
{r_object, TBkt, TKey, _, _, _, _} = TObj,
114124
{ok, _} = testutil:book_riakget(Bookie, TBkt, TKey),
@@ -117,7 +127,7 @@ bookie_status_report(_Config) ->
117127
1 = maps:get(get_sample_count, Rep2),
118128
GoodGetBodyTime = 500,
119129
within_range(1, GoodGetBodyTime, maps:get(get_body_time, Rep2)),
120-
undefined = maps:get(level_files_count, Rep2),
130+
#{} = maps:get(level_files_count, Rep2),
121131

122132
io:format("Prompt journal compaction~n"),
123133
CompactionStarted1 = os:system_time(millisecond),
@@ -132,7 +142,7 @@ bookie_status_report(_Config) ->
132142
os:system_time(millisecond),
133143
maps:get(journal_last_compaction_time, Rep3)
134144
),
135-
undefined = maps:get(level_files_count, Rep3),
145+
#{} = maps:get(level_files_count, Rep3),
136146
undefined = maps:get(penciller_inmem_cache_size, Rep3),
137147
undefined = maps:get(penciller_last_merge_time, Rep3),
138148

@@ -203,14 +213,24 @@ bookie_status_report(_Config) ->
203213
{FF2a, FF2b} = list_journal_files(RootPath),
204214
io:format(
205215
user,
206-
"after cleaning up, journal files: ~b (reported: ~b), in post_compact: ~b\n",
207-
[
208-
length(FF2a), NAJF2, length(FF2b)
209-
]
216+
"after cleaning up, journal files: "
217+
"~b (reported: ~b), in post_compact: ~b\n",
218+
[length(FF2a), NAJF2, length(FF2b)]
210219
),
211220
NAJF2 = length(FF2a),
212221

213-
ok = leveled_bookie:book_destroy(Bookie).
222+
io:format(user, "\nClosing book and reopening\n", []),
223+
ok = leveled_bookie:book_close(Bookie),
224+
{ok, Bookie2} = leveled_bookie:book_start(StartOpts),
225+
Rep7 = leveled_bookie:book_status(Bookie2),
226+
{FF3a, _} = list_journal_files(RootPath),
227+
io:format(
228+
user,
229+
"\nAfter reopening store, ~p files reported, ~b found on disk\n",
230+
[maps:get(n_active_journal_files, Rep7), length(FF3a)]
231+
),
232+
233+
ok = leveled_bookie:book_destroy(Bookie2).
214234

215235
within_range(Min, Max, V) ->
216236
true = Min =< V,

0 commit comments

Comments
 (0)