diff --git a/.gitignore b/.gitignore index d30d164..d779429 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,4 @@ /basho-riak_kv-1.3.1-0-geb24ff9.tar.gz /riak_kv-1.3.2.tar.gz /riak_kv-2.1.2.tar.gz +/riak_kv-2.1.8.tar.gz diff --git a/erlang-riak_kv-0001-Don-t-use-obsolete-erlang-now-0.patch b/erlang-riak_kv-0001-Don-t-use-obsolete-erlang-now-0.patch index 91cb645..204d26d 100644 --- a/erlang-riak_kv-0001-Don-t-use-obsolete-erlang-now-0.patch +++ b/erlang-riak_kv-0001-Don-t-use-obsolete-erlang-now-0.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Don't use obsolete erlang:now/0 Signed-off-by: Peter Lemenkov diff --git a/priv/tracers/tracer_accumulating_time.erl b/priv/tracers/tracer_accumulating_time.erl -index 9607b0c..08ecfcd 100644 +index 9607b0cb..08ecfcdb 100644 --- a/priv/tracers/tracer_accumulating_time.erl +++ b/priv/tracers/tracer_accumulating_time.erl @@ -46,7 +46,7 @@ trace({trace_ts, Pid, return_from, {Mod, Func, Arity}, _Res, TS}, {Dict}) -> @@ -18,7 +18,7 @@ index 9607b0c..08ecfcd 100644 Elapsed = timer:now_diff(TS, Start), SumKey = {sum, MFA}, diff --git a/priv/tracers/tracer_backend_latency.erl b/priv/tracers/tracer_backend_latency.erl -index 4a58f86..1ce93e5 100644 +index 4a58f86f..1ce93e56 100644 --- a/priv/tracers/tracer_backend_latency.erl +++ b/priv/tracers/tracer_backend_latency.erl @@ -136,7 +136,7 @@ trace({trace_ts, Pid, call, {riak_kv_put_fsm, init, _}, TS}, {Dict, LMS}) -> @@ -49,7 +49,7 @@ index 4a58f86..1ce93e5 100644 case timer:now_diff(TS, Start) div 1000 of Elapsed when Elapsed > LatencyMS -> diff --git a/priv/tracers/tracer_latency_histogram.erl b/priv/tracers/tracer_latency_histogram.erl -index 79ea25c..ff2b62d 100644 +index 79ea25c5..ff2b62d9 100644 --- a/priv/tracers/tracer_latency_histogram.erl +++ b/priv/tracers/tracer_latency_histogram.erl @@ -105,7 +105,7 @@ trace({trace_ts, Pid, return_from, {_, _, _}, _Res, TS}, {Dict, LatencyMS}) -> @@ -62,7 +62,7 @@ index 79ea25c..ff2b62d 100644 Elapsed = timer:now_diff(TS, Start) div 1000, folsom_metrics_histogram:update(foo, Elapsed), diff --git a/priv/tracers/tracer_timeit.erl b/priv/tracers/tracer_timeit.erl -index b9b6456..ef2cff4 100644 +index b9b6456c..ef2cff4a 100644 --- a/priv/tracers/tracer_timeit.erl +++ b/priv/tracers/tracer_timeit.erl @@ -43,21 +43,21 @@ timeit(Mod, Fun, Arity, Type) -> @@ -118,7 +118,7 @@ index b9b6456..ef2cff4 100644 if ElapsedMs > Millis -> Over2 = Over+1, diff --git a/src/riak_index.erl b/src/riak_index.erl -index e80d9e7..4e02da8 100644 +index e80d9e76..4e02da8f 100644 --- a/src/riak_index.erl +++ b/src/riak_index.erl @@ -235,7 +235,7 @@ format_failure_reason(FailureReason) -> @@ -131,7 +131,7 @@ index e80d9e7..4e02da8 100644 {MegaSeconds,Seconds,MilliSeconds}=os:timestamp(), (MegaSeconds * 1000000000000) + (Seconds * 1000000) + MilliSeconds. diff --git a/src/riak_kv_2i_aae.erl b/src/riak_kv_2i_aae.erl -index a3e46f9..71be716 100644 +index a3e46f94..71be716e 100644 --- a/src/riak_kv_2i_aae.erl +++ b/src/riak_kv_2i_aae.erl @@ -363,7 +363,7 @@ create_index_data_db(Partition, DutyCycle, DBDir, DBRef) -> @@ -180,7 +180,7 @@ index a3e46f9..71be716 100644 "with ~p entries", [Count]), diff --git a/src/riak_kv_bitcask_backend.erl b/src/riak_kv_bitcask_backend.erl -index 8b935b5..ed9689a 100644 +index 3d922c78..6a0fb20f 100644 --- a/src/riak_kv_bitcask_backend.erl +++ b/src/riak_kv_bitcask_backend.erl @@ -136,7 +136,7 @@ make_bk(1, Bucket, Key) -> @@ -193,10 +193,10 @@ index 8b935b5..ed9689a 100644 case app_helper:get_prop_or_env(small_keys, Config0, bitcask) of false -> diff --git a/src/riak_kv_delete.erl b/src/riak_kv_delete.erl -index 99618a1..d76f0e0 100644 +index fff2388d..15eca5be 100644 --- a/src/riak_kv_delete.erl +++ b/src/riak_kv_delete.erl -@@ -216,7 +216,7 @@ delete_test_() -> +@@ -274,7 +274,7 @@ delete_test_() -> invalid_rw_delete() -> RW = <<"abc">>, %% Start the gen_fsm process @@ -205,7 +205,7 @@ index 99618a1..d76f0e0 100644 Bucket = <<"testbucket">>, Key = <<"testkey">>, Timeout = 60000, -@@ -233,7 +233,7 @@ invalid_rw_delete() -> +@@ -291,7 +291,7 @@ invalid_rw_delete() -> invalid_r_delete() -> R = <<"abc">>, %% Start the gen_fsm process @@ -214,7 +214,7 @@ index 99618a1..d76f0e0 100644 Bucket = <<"testbucket">>, Key = <<"testkey">>, Timeout = 60000, -@@ -250,7 +250,7 @@ invalid_r_delete() -> +@@ -308,7 +308,7 @@ invalid_r_delete() -> invalid_w_delete() -> W = <<"abc">>, %% Start the gen_fsm process @@ -223,7 +223,7 @@ index 99618a1..d76f0e0 100644 Bucket = <<"testbucket">>, Key = <<"testkey">>, Timeout = 60000, -@@ -268,7 +268,7 @@ invalid_w_delete() -> +@@ -326,7 +326,7 @@ invalid_w_delete() -> invalid_pr_delete() -> PR = <<"abc">>, %% Start the gen_fsm process @@ -232,7 +232,7 @@ index 99618a1..d76f0e0 100644 Bucket = <<"testbucket">>, Key = <<"testkey">>, Timeout = 60000, -@@ -285,7 +285,7 @@ invalid_pr_delete() -> +@@ -343,7 +343,7 @@ invalid_pr_delete() -> invalid_pw_delete() -> PW = <<"abc">>, %% Start the gen_fsm process @@ -242,10 +242,10 @@ index 99618a1..d76f0e0 100644 Key = <<"testkey">>, Timeout = 60000, diff --git a/src/riak_kv_eleveldb_backend.erl b/src/riak_kv_eleveldb_backend.erl -index 9049ad9..14e0866 100644 +index 130c172f..e478126a 100644 --- a/src/riak_kv_eleveldb_backend.erl +++ b/src/riak_kv_eleveldb_backend.erl -@@ -103,7 +103,7 @@ capabilities(_, _) -> +@@ -96,7 +96,7 @@ capabilities(_, _) -> -spec start(integer(), config()) -> {ok, state()} | {error, term()}. start(Partition, Config) -> %% Initialize random seed @@ -255,7 +255,7 @@ index 9049ad9..14e0866 100644 %% Get the data root directory DataDir = filename:join(app_helper:get_prop_or_env(data_root, Config, eleveldb), diff --git a/src/riak_kv_exchange_fsm.erl b/src/riak_kv_exchange_fsm.erl -index 00551ed..7e0a325 100644 +index fc8573e1..b0697fca 100644 --- a/src/riak_kv_exchange_fsm.erl +++ b/src/riak_kv_exchange_fsm.erl @@ -180,7 +180,7 @@ key_exchange(timeout, State=#state{local=LocalVN, @@ -280,7 +280,7 @@ index 00551ed..7e0a325 100644 {ok, ReadLog} = open_disk_log(Now, LogFile2, read_only), FoldRes = fold_disk_log(fun(Diff, Acc) -> -@@ -361,9 +361,9 @@ open_disk_log(Name, Path, RWorRO, OtherOpts) -> +@@ -362,9 +362,9 @@ open_disk_log(Name, Path, RWorRO, OtherOpts) -> disk_log:open([{name, Name}, {file, Path}, {mode, RWorRO}|OtherOpts]). sort_disk_log(InputFile, OutputFile) -> @@ -293,7 +293,7 @@ index 00551ed..7e0a325 100644 Output = sort_disk_log_output(WriteLog), try diff --git a/src/riak_kv_fsm_timing.erl b/src/riak_kv_fsm_timing.erl -index 263edc0..2037fb7 100644 +index 263edc0a..2037fb79 100644 --- a/src/riak_kv_fsm_timing.erl +++ b/src/riak_kv_fsm_timing.erl @@ -33,7 +33,7 @@ @@ -306,10 +306,10 @@ index 263edc0..2037fb7 100644 -spec add_timing(atom(), timings()) -> timings(). add_timing(State, Timings) when is_list(Timings) -> diff --git a/src/riak_kv_get_fsm.erl b/src/riak_kv_get_fsm.erl -index d994ce3..96d2a34 100644 +index df5b2d18..7f3e2ea5 100644 --- a/src/riak_kv_get_fsm.erl +++ b/src/riak_kv_get_fsm.erl -@@ -698,7 +698,7 @@ happy_path_case() -> +@@ -695,7 +695,7 @@ happy_path_case() -> %% Start the FSM to issue a get and check notfound @@ -318,7 +318,7 @@ index d994ce3..96d2a34 100644 R = 2, Timeout = 1000, {ok, _FsmPid1} = test_link(ReqId1, Bucket, Key, R, Timeout, self(), -@@ -737,7 +737,7 @@ happy_path_case() -> +@@ -734,7 +734,7 @@ happy_path_case() -> n_val_violation_case() -> @@ -328,10 +328,10 @@ index d994ce3..96d2a34 100644 Key = <<"badnvalkey">>, Nval = 3, diff --git a/src/riak_kv_mrc_pipe.erl b/src/riak_kv_mrc_pipe.erl -index 1e79f4b..77c5ae5 100644 +index 570a83cf..7485636a 100644 --- a/src/riak_kv_mrc_pipe.erl +++ b/src/riak_kv_mrc_pipe.erl -@@ -1127,7 +1127,7 @@ compat_fun(_, _, _) -> +@@ -1110,7 +1110,7 @@ compat_fun(_, _, _) -> random_constant_hash()-> %% using now/0 as a randomizer, so that we don't overload just one %% riak node with reduce work @@ -340,11 +340,24 @@ index 1e79f4b..77c5ae5 100644 %% the trick here: generate a random hash, then find the first %% vnode alive in its preflist, then re-generate a hash that puts +diff --git a/src/riak_kv_sweeper.erl b/src/riak_kv_sweeper.erl +index 79f2cbd7..e6cf74be 100644 +--- a/src/riak_kv_sweeper.erl ++++ b/src/riak_kv_sweeper.erl +@@ -204,7 +204,7 @@ timestamp() -> + %% ==================================================================== + init([]) -> + process_flag(trap_exit, true), +- random:seed(erlang:now()), ++ random:seed(os:timestamp()), + schedule_initial_sweep_tick(), + State = riak_kv_sweeper_state:new(), + {ok, State}. diff --git a/src/riak_kv_util.erl b/src/riak_kv_util.erl -index c9f5d00..188fafd 100644 +index b677422f..22c315b2 100644 --- a/src/riak_kv_util.erl +++ b/src/riak_kv_util.erl -@@ -486,7 +486,7 @@ deleted_test() -> +@@ -442,7 +442,7 @@ non_ttl_bucket_test() -> make_vtag_test() -> crypto:start(), @@ -355,19 +368,19 @@ index c9f5d00..188fafd 100644 -endif. diff --git a/src/riak_kv_vnode.erl b/src/riak_kv_vnode.erl -index 30108f4..c3c1886 100644 +index bb8243e4..86431feb 100644 --- a/src/riak_kv_vnode.erl +++ b/src/riak_kv_vnode.erl -@@ -291,7 +291,7 @@ local_put(Index, Obj) -> +@@ -285,7 +285,7 @@ local_put(Index, Obj) -> + local_put(Index, Obj, Options) -> BKey = {riak_object:bucket(Obj), riak_object:key(Obj)}, - Ref = make_ref(), - ReqId = erlang:phash2(erlang:now()), + ReqId = erlang:phash2(os:timestamp()), StartTime = riak_core_util:moment(), - Sender = {raw, Ref, self()}, - put({Index, node()}, BKey, Obj, ReqId, StartTime, Options, Sender), -@@ -302,7 +302,7 @@ local_put(Index, Obj, Options) -> + put({Index, node()}, BKey, Obj, ReqId, StartTime, Options, ignore). + +@@ -300,7 +300,7 @@ local_reap(Index, BKey, RObj) -> local_get(Index, BKey) -> Ref = make_ref(), @@ -377,7 +390,7 @@ index 30108f4..c3c1886 100644 get({Index,node()}, BKey, ReqId, Sender), receive diff --git a/src/riak_kv_vnode_status_mgr.erl b/src/riak_kv_vnode_status_mgr.erl -index 1c27ce0..ea01aa4 100644 +index 1c27ce08..ea01aa4e 100644 --- a/src/riak_kv_vnode_status_mgr.erl +++ b/src/riak_kv_vnode_status_mgr.erl @@ -237,7 +237,7 @@ code_change(_OldVsn, State, _Extra) -> @@ -399,7 +412,7 @@ index 1c27ce0..ea01aa4 100644 Status), {0, LeaseSize, VnodeId, orddict:store(counter, LeaseSize, Status2)}. diff --git a/test/backend_eqc.erl b/test/backend_eqc.erl -index 745bd71..fa32a2e 100644 +index 745bd710..fa32a2e1 100644 --- a/test/backend_eqc.erl +++ b/test/backend_eqc.erl @@ -257,7 +257,7 @@ fold_objects_fun() -> @@ -412,7 +425,7 @@ index 745bd71..fa32a2e 100644 integer_to_list(Secs) ++ integer_to_list(MicroSecs), diff --git a/test/fsm_eqc_util.erl b/test/fsm_eqc_util.erl -index d06be01..9044ea3 100644 +index 3d6b400a..a6871667 100644 --- a/test/fsm_eqc_util.erl +++ b/test/fsm_eqc_util.erl @@ -149,7 +149,7 @@ build_riak_obj(B,K,Vc,Val,notombstone) -> @@ -425,7 +438,7 @@ index d06be01..9044ea3 100644 Obj = build_riak_obj(B,K,Vc,Val,notombstone), add_tombstone(Obj). diff --git a/test/put_fsm_eqc.erl b/test/put_fsm_eqc.erl -index 7f0c7ba..a6d8707 100644 +index 6d7f6a4b..abd322a0 100644 --- a/test/put_fsm_eqc.erl +++ b/test/put_fsm_eqc.erl @@ -97,7 +97,7 @@ setup() -> diff --git a/erlang-riak_kv-0002-Disable-fancy-eunit-output.patch b/erlang-riak_kv-0002-Disable-fancy-eunit-output.patch index 8da34e4..d52b17d 100644 --- a/erlang-riak_kv-0002-Disable-fancy-eunit-output.patch +++ b/erlang-riak_kv-0002-Disable-fancy-eunit-output.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable fancy eunit output Signed-off-by: Peter Lemenkov diff --git a/rebar.config b/rebar.config -index c69b938..355ca4b 100644 +index 4e5fe42e..5d92cc59 100644 --- a/rebar.config +++ b/rebar.config -@@ -9,12 +9,6 @@ +@@ -11,12 +11,6 @@ {platform_define, "^R15", "old_hash"}, {d, 'TEST_FS2_BACKEND_IN_RIAK_KV'}]}. @@ -21,11 +21,3 @@ index c69b938..355ca4b 100644 {xref_checks, []}. %% XXX yz_kv is here becase Ryan has not yet made a generic hook interface for object modification %% XXX yz_stat is here for similar reasons -- we do not yet support dynamic stat hooks -@@ -32,6 +26,5 @@ - {sext, ".*", {git, "git://github.com/basho/sext.git", {tag, "1.1p3"}}}, - {riak_pipe, ".*", {git, "git://github.com/basho/riak_pipe.git", {branch, "2.1"}}}, - {riak_api, ".*", {git, "git://github.com/basho/riak_api.git", {branch, "2.1"}}}, -- {riak_dt, ".*", {git, "git://github.com/basho/riak_dt.git", {branch, "2.1"}}}, -- {eunit_formatters, ".*", {git, "git://github.com/seancribbs/eunit_formatters", {tag, "0.1.2"}}} -+ {riak_dt, ".*", {git, "git://github.com/basho/riak_dt.git", {branch, "2.1"}}} - ]}. diff --git a/erlang-riak_kv-0003-New-lager-API.patch b/erlang-riak_kv-0003-New-lager-API.patch index 4e96c4c..6eb62e3 100644 --- a/erlang-riak_kv-0003-New-lager-API.patch +++ b/erlang-riak_kv-0003-New-lager-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] New lager API Signed-off-by: Peter Lemenkov diff --git a/src/riak_kv_test_util.erl b/src/riak_kv_test_util.erl -index d46c0f7..f3945af 100644 +index dd60a133..28b3aa14 100644 --- a/src/riak_kv_test_util.erl +++ b/src/riak_kv_test_util.erl @@ -270,7 +270,7 @@ dep_apps(Test, Extra) -> @@ -18,7 +18,7 @@ index d46c0f7..f3945af 100644 (stop) -> ok; (_) -> ok diff --git a/test/put_fsm_eqc.erl b/test/put_fsm_eqc.erl -index a6d8707..a590c2c 100644 +index abd322a0..2a07fd77 100644 --- a/test/put_fsm_eqc.erl +++ b/test/put_fsm_eqc.erl @@ -115,7 +115,7 @@ setup() -> diff --git a/erlang-riak_kv-0004-Proper-place-for-schemas.patch b/erlang-riak_kv-0004-Proper-place-for-schemas.patch index 41395a0..53a0c08 100644 --- a/erlang-riak_kv-0004-Proper-place-for-schemas.patch +++ b/erlang-riak_kv-0004-Proper-place-for-schemas.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Proper place for schemas Signed-off-by: Peter Lemenkov diff --git a/test/riak_kv_schema_tests.erl b/test/riak_kv_schema_tests.erl -index f65efa2..88fe06d 100644 +index e62fb205..4224d977 100644 --- a/test/riak_kv_schema_tests.erl +++ b/test/riak_kv_schema_tests.erl -@@ -297,10 +297,10 @@ correct_error_handling_by_multibackend_test() -> +@@ -336,10 +336,10 @@ correct_error_handling_by_multibackend_test() -> Config = cuttlefish_unit:generate_templated_config([ "../priv/riak_kv.schema", "../priv/multi_backend.schema", @@ -23,7 +23,7 @@ index f65efa2..88fe06d 100644 "../test/bad_bitcask_multi.schema" ], Conf, context(), predefined_schema()), -@@ -335,10 +335,10 @@ all_backend_multi_test() -> +@@ -374,10 +374,10 @@ all_backend_multi_test() -> Config = cuttlefish_unit:generate_templated_config([ "../priv/riak_kv.schema", "../priv/multi_backend.schema", diff --git a/erlang-riak_kv-0005-Don-t-use-deps-for-schema-files-when-testing.patch b/erlang-riak_kv-0005-Don-t-use-deps-for-schema-files-when-testing.patch index 4dcb52e..5cb238f 100644 --- a/erlang-riak_kv-0005-Don-t-use-deps-for-schema-files-when-testing.patch +++ b/erlang-riak_kv-0005-Don-t-use-deps-for-schema-files-when-testing.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Don't use deps for schema files when testing Signed-off-by: Peter Lemenkov diff --git a/src/riak_kv_test_util.erl b/src/riak_kv_test_util.erl -index f3945af..ffdc1fd 100644 +index 28b3aa14..aee60c04 100644 --- a/src/riak_kv_test_util.erl +++ b/src/riak_kv_test_util.erl @@ -265,9 +265,7 @@ dep_apps(Test, Extra) -> diff --git a/erlang-riak_kv-0006-Use-system-wide-mochiweb.patch b/erlang-riak_kv-0006-Use-system-wide-mochiweb.patch index a94e379..a4271cc 100644 --- a/erlang-riak_kv-0006-Use-system-wide-mochiweb.patch +++ b/erlang-riak_kv-0006-Use-system-wide-mochiweb.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Use system-wide mochiweb Signed-off-by: Peter Lemenkov diff --git a/src/riak_kv_js_vm.erl b/src/riak_kv_js_vm.erl -index 2396a0f..326b89b 100644 +index 2396a0f9..326b89b4 100644 --- a/src/riak_kv_js_vm.erl +++ b/src/riak_kv_js_vm.erl @@ -369,7 +369,7 @@ maybe_idle(#state{in_batch=true}) -> diff --git a/erlang-riak_kv-0007-Don-t-use-deprecated-module-random.patch b/erlang-riak_kv-0007-Don-t-use-deprecated-module-random.patch new file mode 100644 index 0000000..83be23e --- /dev/null +++ b/erlang-riak_kv-0007-Don-t-use-deprecated-module-random.patch @@ -0,0 +1,154 @@ +From: Peter Lemenkov +Date: Mon, 21 Aug 2017 17:28:21 +0300 +Subject: [PATCH] Don't use deprecated module random + +Signed-off-by: Peter Lemenkov + +diff --git a/src/riak_kv_bitcask_backend.erl b/src/riak_kv_bitcask_backend.erl +index 6a0fb20f..1bb03f4f 100644 +--- a/src/riak_kv_bitcask_backend.erl ++++ b/src/riak_kv_bitcask_backend.erl +@@ -136,7 +136,7 @@ make_bk(1, Bucket, Key) -> + %% @doc Start the bitcask backend + -spec start(integer(), config()) -> {ok, state()} | {error, term()}. + start(Partition, Config0) -> +- random:seed(os:timestamp()), ++ rand:seed(exs1024, os:timestamp()), + {Config, KeyVsn} = + case app_helper:get_prop_or_env(small_keys, Config0, bitcask) of + false -> +@@ -579,7 +579,7 @@ schedule_merge(Ref) when is_reference(Ref) -> + JitterPerc = app_helper:get_env(riak_kv, bitcask_merge_check_jitter, + ?MERGE_CHECK_JITTER), + Jitter = Interval * JitterPerc, +- FinalInterval = Interval + trunc(2 * random:uniform() * Jitter - Jitter), ++ FinalInterval = Interval + trunc(2 * rand:uniform() * Jitter - Jitter), + lager:debug("Scheduling Bitcask merge check in ~pms", [FinalInterval]), + riak_kv_backend:callback_after(FinalInterval, Ref, merge_check). + +diff --git a/src/riak_kv_eleveldb_backend.erl b/src/riak_kv_eleveldb_backend.erl +index e478126a..1146ffc7 100644 +--- a/src/riak_kv_eleveldb_backend.erl ++++ b/src/riak_kv_eleveldb_backend.erl +@@ -96,7 +96,7 @@ capabilities(_, _) -> + -spec start(integer(), config()) -> {ok, state()} | {error, term()}. + start(Partition, Config) -> + %% Initialize random seed +- random:seed(os:timestamp()), ++ rand:seed(exs1024, os:timestamp()), + + %% Get the data root directory + DataDir = filename:join(app_helper:get_prop_or_env(data_root, Config, eleveldb), +@@ -478,7 +478,7 @@ init_state(DataRoot, Config) -> + %% under heavy uniform load... + WriteBufferMin = config_value(write_buffer_size_min, MergedConfig, 30 * 1024 * 1024), + WriteBufferMax = config_value(write_buffer_size_max, MergedConfig, 60 * 1024 * 1024), +- WriteBufferSize = WriteBufferMin + random:uniform(1 + WriteBufferMax - WriteBufferMin), ++ WriteBufferSize = WriteBufferMin + rand:uniform(1 + WriteBufferMax - WriteBufferMin), + + %% Update the write buffer size in the merged config and make sure create_if_missing is set + %% to true +diff --git a/src/riak_kv_js_manager.erl b/src/riak_kv_js_manager.erl +index 3f8fb725..33c02fc2 100644 +--- a/src/riak_kv_js_manager.erl ++++ b/src/riak_kv_js_manager.erl +@@ -261,5 +261,5 @@ reserve_batch_vm(Name, MaxCount, Count) -> + + back_off(MaxCount, Count) -> + ScalingFactor = (1 + (MaxCount - Count)) * +- (0.1 + random:uniform(100) * 0.001), ++ (0.1 + rand:uniform(100) * 0.001), + timer:sleep(erlang:round(500 * ScalingFactor)). +diff --git a/src/riak_kv_put_fsm.erl b/src/riak_kv_put_fsm.erl +index 2b445fda..15a0f921 100644 +--- a/src/riak_kv_put_fsm.erl ++++ b/src/riak_kv_put_fsm.erl +@@ -333,7 +333,7 @@ prepare(timeout, StateData0 = #state{from = From, robj = RObj, + {_, true} -> + %% This node is not in the preference list + %% forward on to a random node +- {ListPos, _} = random:uniform_s(length(Preflist2), os:timestamp()), ++ {ListPos, _} = rand:uniform_s(length(Preflist2), rand:seed(exs1024, os:timestamp())), + {{_Idx, CoordNode},_Type} = lists:nth(ListPos, Preflist2), + ?DTRACE(Trace, ?C_PUT_FSM_PREPARE, [1], + ["prepare", atom2list(CoordNode)]), +diff --git a/src/riak_kv_sweeper.erl b/src/riak_kv_sweeper.erl +index e6cf74be..300d9aca 100644 +--- a/src/riak_kv_sweeper.erl ++++ b/src/riak_kv_sweeper.erl +@@ -204,7 +204,7 @@ timestamp() -> + %% ==================================================================== + init([]) -> + process_flag(trap_exit, true), +- random:seed(os:timestamp()), ++ rand:seed(exs1024, os:timestamp()), + schedule_initial_sweep_tick(), + State = riak_kv_sweeper_state:new(), + {ok, State}. +@@ -377,7 +377,7 @@ hashtree_estimate_keys(Index) -> + + -spec schedule_initial_sweep_tick() -> _. + schedule_initial_sweep_tick() -> +- InitialTick = trunc(get_tick() * random:uniform()), ++ InitialTick = trunc(get_tick() * rand:uniform()), + chronos:start_timer(?CHRONOS, sweep_tick, InitialTick, {?MODULE, sweep_tick, []}). + + -spec schedule_sweep_tick() -> _. +diff --git a/src/riak_kv_sweeper_state.erl b/src/riak_kv_sweeper_state.erl +index e7c4ef16..97af3202 100644 +--- a/src/riak_kv_sweeper_state.erl ++++ b/src/riak_kv_sweeper_state.erl +@@ -609,7 +609,7 @@ elapsed_secs(Now, Start) -> + + -spec random_sweep([#sweep{}]) -> #sweep{}. + random_sweep(Sweeps) -> +- Index = random:uniform(length(Sweeps)), ++ Index = rand:uniform(length(Sweeps)), + lists:nth(Index, Sweeps). + + -spec scheduler_enabled() -> boolean(). +diff --git a/src/riak_kv_yessir_backend.erl b/src/riak_kv_yessir_backend.erl +index a4823a23..8907fe88 100644 +--- a/src/riak_kv_yessir_backend.erl ++++ b/src/riak_kv_yessir_backend.erl +@@ -376,7 +376,7 @@ get_folder(FoldFun, Acc, KeyCount) -> + end. + + key_of_integer(Range, State) -> +- {N, S} = random:uniform_s(Range, State), ++ {N, S} = rand:uniform_s(Range, rand:seed(State)), + Key = integer_to_list(N) ++ ".1000", %% e.g. "10.1000" + BKey = list_to_binary(Key), %% e.g. <<"10.1000">> + {BKey, S}. +@@ -386,15 +386,15 @@ value_for_random(VR, Size) -> + + fold_anything_fun(FoldFunc, Acc, KeyCount) -> + Range = 1000000, +- KeyState = random:seed0(), +- ValueState = random:seed0(), ++ KeyState = rand:export_seed(), ++ ValueState = rand:export_seed(), + all_keys_folder(FoldFunc, Acc, Range, {KeyState, ValueState}, KeyCount). + + all_keys_folder(FoldFunc, Acc, _Range, _S, 0) -> + FoldFunc(undefined, 0, Acc); + all_keys_folder(FoldFunc, Acc, Range, {KS,VS}, N) -> + {Key,KSS} = key_of_integer(Range, KS), +- {VR,VSS} = random:uniform_s(255,VS), ++ {VR,VSS} = rand:uniform_s(255,rand:seed(VS)), + Acc1 = FoldFunc(Key, VR, Acc), + all_keys_folder(FoldFunc, Acc1, Range, {KSS,VSS}, N-1). + +diff --git a/test/riak_kv_sweeper_SUITE.erl b/test/riak_kv_sweeper_SUITE.erl +index 5d39d736..cbf52bd4 100644 +--- a/test/riak_kv_sweeper_SUITE.erl ++++ b/test/riak_kv_sweeper_SUITE.erl +@@ -1281,7 +1281,7 @@ add_hours(Hour, Inc) -> + (Hour + Inc) rem 24. + + pick(List) when length(List) > 0 -> +- N = random:uniform(length(List)), ++ N = rand:uniform(length(List)), + lists:nth(N, List). + + sweep_all_indices(Indices) -> diff --git a/erlang-riak_kv-0008-Export-missing-type-when-necessary.patch b/erlang-riak_kv-0008-Export-missing-type-when-necessary.patch new file mode 100644 index 0000000..09e5dfb --- /dev/null +++ b/erlang-riak_kv-0008-Export-missing-type-when-necessary.patch @@ -0,0 +1,32 @@ +From: Peter Lemenkov +Date: Mon, 21 Aug 2017 17:47:30 +0300 +Subject: [PATCH] Export missing type when necessary + +Signed-off-by: Peter Lemenkov + +diff --git a/src/riak_kv_sweeper_fold.erl b/src/riak_kv_sweeper_fold.erl +index 9fdf7d2d..5a71d434 100644 +--- a/src/riak_kv_sweeper_fold.erl ++++ b/src/riak_kv_sweeper_fold.erl +@@ -108,6 +108,8 @@ + [{riak_kv_sweeper:participant_module(), + 'succ' | 'fail'}]}. + ++-type dict() :: dict:new(). ++ + %% ==================================================================== + %% API And callbacks + %% ==================================================================== +diff --git a/src/riak_kv_sweeper_state.erl b/src/riak_kv_sweeper_state.erl +index 97af3202..67b860c3 100644 +--- a/src/riak_kv_sweeper_state.erl ++++ b/src/riak_kv_sweeper_state.erl +@@ -106,6 +106,8 @@ + {'ok', {'request', 'queue'}} | + {'ok', {'request', 'not_index'}}. + ++-type dict() :: dict:new(). ++ + %% ==================================================================== + %% API functions + %% ==================================================================== diff --git a/erlang-riak_kv-0009-Don-t-use-obsolete-crypto-functions.patch b/erlang-riak_kv-0009-Don-t-use-obsolete-crypto-functions.patch new file mode 100644 index 0000000..1d72d12 --- /dev/null +++ b/erlang-riak_kv-0009-Don-t-use-obsolete-crypto-functions.patch @@ -0,0 +1,19 @@ +From: Peter Lemenkov +Date: Mon, 21 Aug 2017 17:50:14 +0300 +Subject: [PATCH] Don't use obsolete crypto functions + +Signed-off-by: Peter Lemenkov + +diff --git a/src/riak_kv_gcounter.erl b/src/riak_kv_gcounter.erl +index 6dd5e914..bc0328e6 100644 +--- a/src/riak_kv_gcounter.erl ++++ b/src/riak_kv_gcounter.erl +@@ -250,7 +250,7 @@ roundtrip_bin_test() -> + lots_of_actors_test() -> + GC = lists:foldl(fun(_, GCnt) -> + ActorLen = crypto:rand_uniform(1, 1000), +- Actor = crypto:rand_bytes(ActorLen), ++ Actor = crypto:strong_rand_bytes(ActorLen), + Cnt = crypto:rand_uniform(1, 10000), + {ok, GC} = riak_kv_gcounter:update({increment, Cnt}, Actor, GCnt), + GC diff --git a/erlang-riak_kv.spec b/erlang-riak_kv.spec index c459ac0..b9fb995 100644 --- a/erlang-riak_kv.spec +++ b/erlang-riak_kv.spec @@ -10,8 +10,8 @@ Name: erlang-%{realname} -Version: 2.1.2 -Release: 5%{?dist} +Version: 2.1.8 +Release: 1%{?dist} Summary: Riak Key/Value Store Group: Development/Languages License: ASL 2.0 @@ -26,17 +26,22 @@ Patch3: erlang-riak_kv-0003-New-lager-API.patch Patch4: erlang-riak_kv-0004-Proper-place-for-schemas.patch Patch5: erlang-riak_kv-0005-Don-t-use-deps-for-schema-files-when-testing.patch Patch6: erlang-riak_kv-0006-Use-system-wide-mochiweb.patch -BuildRequires: erlang-bitcask >= 1.6.2 -BuildRequires: erlang-eper >= 0.60 -BuildRequires: erlang-js >= 1.2.2 +Patch7: erlang-riak_kv-0007-Don-t-use-deprecated-module-random.patch +Patch8: erlang-riak_kv-0008-Export-missing-type-when-necessary.patch +Patch9: erlang-riak_kv-0009-Don-t-use-obsolete-crypto-functions.patch +BuildRequires: erlang-bitcask +BuildRequires: erlang-chronos +BuildRequires: erlang-clique +BuildRequires: erlang-eper +BuildRequires: erlang-hyper +BuildRequires: erlang-js BuildRequires: erlang-meck BuildRequires: erlang-rebar -BuildRequires: erlang-riak_api >= 2.1.0 -BuildRequires: erlang-riak_dt >= 2.1.0 -BuildRequires: erlang-riak_pipe >= 2.1.0 -BuildRequires: erlang-sext >= 1.1 -BuildRequires: erlang-sidejob >= 0.2.0 -#BuildRequires: erlang-yokozuna +BuildRequires: erlang-riak_api +BuildRequires: erlang-riak_dt +BuildRequires: erlang-riak_pipe +BuildRequires: erlang-sext +BuildRequires: erlang-sidejob %description @@ -44,13 +49,7 @@ Riak Key/Value Store. %prep -%setup -q -n %{realname}-%{version} -%patch1 -p1 -b .deprecated_now -%patch2 -p1 -b .disable_fancy_output -%patch3 -p1 -b .new_lager_api -%patch4 -p1 -b .proper_path_to_schemas -%patch5 -p1 -b .systemwide_schemas -%patch6 -p1 -b .systemwide_mochiweb +%autosetup -p1 -n %{realname}-%{version} %build @@ -60,7 +59,6 @@ Riak Key/Value Store. %install %{erlang_install} -#install -p -m 0644 src/riak_kv_wm_raw.hrl %{buildroot}%{_libdir}/erlang/lib/%{realname}-%{version}/include install -D -p -m 0644 priv/mapred_builtins.js %{buildroot}%{erlang_appdir}/priv/mapred_builtins.js install -D -p -m 0644 priv/riak_kv.schema %{buildroot}%{erlang_appdir}/priv/riak_kv.schema install -D -p -m 0644 priv/multi_backend.schema %{buildroot}%{erlang_appdir}/priv/multi_backend.schema @@ -70,13 +68,15 @@ install -D -p -m 0644 priv/multi_backend.schema %{buildroot}%{erlang_appdir}/pri %{erlang_test} - %files %doc docs/* README.org %{erlang_appdir}/ %changelog +* Mon Aug 21 2017 Peter Lemenkov - 2.1.8-1 +- Ver. 2.1.8 + * Wed Aug 02 2017 Fedora Release Engineering - 2.1.2-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild diff --git a/sources b/sources index c4e30ef..452ea94 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -2bca47ce6fe60e71ee243ef6d2c5405b riak_kv-2.1.2.tar.gz +SHA512 (riak_kv-2.1.8.tar.gz) = 6021c363af41191b69ef4007ded743617a1187ce7eacdf76b6d6de2637f7f893f053e9c484cd49828b635ea73b8e4ec0fae8b4ec47d3b11b2ec128e39c922a71