Skip to content

Commit f2641a4

Browse files
committed
Merge pull request #68 from joecaswell/jhc-resumecheck
verify seq_int resume value is not out of bounds
2 parents a6fa6e6 + 5036155 commit f2641a4

1 file changed

Lines changed: 10 additions & 4 deletions

File tree

src/basho_bench_keygen.erl

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ sequential_int_generator(Ref, MaxValue, Id, DisableProgress) ->
150150
%% dictionary to keep track of where we are.
151151
case erlang:get({sigen, Ref}) of
152152
undefined ->
153-
seq_gen_put(Ref, seq_gen_read_resume_value(Id)),
153+
seq_gen_put(Ref, seq_gen_read_resume_value(Id, MaxValue)),
154154
sequential_int_generator(Ref, MaxValue, Id, DisableProgress);
155155
MaxValue ->
156156
throw({stop, empty_keygen});
@@ -186,7 +186,7 @@ seq_gen_write_resume_value(Id, Value) ->
186186
ok = file:rename(OutFileTmp, OutFile)
187187
end.
188188

189-
seq_gen_read_resume_value(Id) ->
189+
seq_gen_read_resume_value(Id, MaxValue) ->
190190
case seq_gen_state_dir(Id) of
191191
"" ->
192192
0;
@@ -195,8 +195,14 @@ seq_gen_read_resume_value(Id) ->
195195
InFile = Path ++ "/" ++ integer_to_list(Id),
196196
{ok, Bin} = file:read_file(InFile),
197197
Value = binary_to_term(Bin),
198-
?DEBUG("Id ~p resuming from value ~p\n", [Id, Value]),
199-
Value
198+
case Value > MaxValue of
199+
true ->
200+
?WARN("Id ~p resume value ~p exceeds maximum value ~p. Restarting from 0",[Id, Value, MaxValue]),
201+
0;
202+
false ->
203+
?DEBUG("Id ~p resuming from value ~p\n", [Id, Value]),
204+
Value
205+
end
200206
catch
201207
error:{badmatch, _} ->
202208
0;

0 commit comments

Comments
 (0)