From d36916d69529a1a7c1ca0713ec43b2b57b267e08 Mon Sep 17 00:00:00 2001 From: Shunichi Shinohara Date: Fri, 5 Jun 2015 16:51:52 +0900 Subject: [PATCH 01/16] Replace rebar binary and disabled cover by default Change of rebar is addition of '+A 0' option to escript_emu_args. rebar.config to build rebar: {escript_emu_args, "%%! -escript +A 0\n"}. Some numbers to execute rebar eunit and rebar generate: https://gist.github.com/shino/46816bf50ec609104861 --- rebar | Bin 166242 -> 166103 bytes rebar.config | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/rebar b/rebar index b2434fe6bb80bf827fce54eec23a9cc625e836de..60410665adae5ed971d203d5bbcf67ba5009046b 100755 GIT binary patch delta 132182 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%0Ds!X2#*U^#W) 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

VukQ8^+#hn_zqgU*+!Z*8o26G^K|D80jLm)}J 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 a86xbd#w^Z{EG0-b41ft=?F`8k>i+<%Ad8d$ delta 132526 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 Date: Fri, 5 Jun 2015 17:16:11 +0900 Subject: [PATCH 02/16] Refactor around riak_cs_lfs_utils:new_manifest/* --- src/riak_cs_lfs_utils.erl | 40 ++++------------------ src/riak_cs_manifest_utils.erl | 3 ++ src/riak_cs_mp_utils.erl | 18 ++++++---- src/riak_cs_put_fsm.erl | 62 ++++++++++++++-------------------- 4 files changed, 45 insertions(+), 78 deletions(-) diff --git a/src/riak_cs_lfs_utils.erl b/src/riak_cs_lfs_utils.erl index f08281435..722f850d6 100644 --- a/src/riak_cs_lfs_utils.erl +++ b/src/riak_cs_lfs_utils.erl @@ -37,9 +37,8 @@ initial_blocks/2, block_sequences_for_manifest/1, block_sequences_for_manifest/2, - new_manifest/9, - new_manifest/11, new_manifest/12, + set_bag_id/2, remove_write_block/2, remove_delete_block/2]). @@ -269,37 +268,6 @@ get_fsm_buffer_size_factor() -> end. %% @doc Initialize a new file manifest --spec new_manifest(binary(), - binary(), - binary(), - non_neg_integer(), - binary(), - term(), - term(), - pos_integer(), - acl() | no_acl_yet) -> lfs_manifest(). -new_manifest(Bucket, FileName, UUID, ContentLength, ContentType, ContentMd5, - MetaData, BlockSize, Acl) -> - new_manifest(Bucket, FileName, UUID, ContentLength, ContentType, ContentMd5, - MetaData, BlockSize, Acl, [], undefined). - --spec new_manifest(binary(), - binary(), - binary(), - non_neg_integer(), - binary(), - term(), - term(), - pos_integer(), - acl() | no_acl_yet, - proplists:proplist(), - cluster_id()) -> lfs_manifest(). -new_manifest(Bucket, FileName, UUID, ContentLength, ContentType, ContentMd5, - MetaData, BlockSize, Acl, Props, ClusterID) -> - BagId = riak_cs_mb_helper:choose_bag_id(block, {Bucket, FileName, UUID}), - new_manifest(Bucket, FileName, UUID, ContentLength, ContentType, ContentMd5, - MetaData, BlockSize, Acl, Props, ClusterID, BagId). - -spec new_manifest(binary(), binary(), binary(), @@ -311,7 +279,7 @@ new_manifest(Bucket, FileName, UUID, ContentLength, ContentType, ContentMd5, acl() | no_acl_yet, proplists:proplist(), cluster_id(), - BagId::binary()) -> lfs_manifest(). + bag_id()) -> lfs_manifest(). new_manifest(Bucket, FileName, UUID, ContentLength, ContentType, ContentMd5, MetaData, BlockSize, Acl, Props, ClusterID, BagId) -> Blocks = ordsets:from_list(initial_blocks(ContentLength, BlockSize)), @@ -327,6 +295,10 @@ new_manifest(Bucket, FileName, UUID, ContentLength, ContentType, ContentMd5, acl=Acl, props=Props, cluster_id=ClusterID}, + set_bag_id(BagId, Manifest). + +-spec set_bag_id(bag_id(), lfs_manifest()) -> lfs_manifest(). +set_bag_id(BagId, Manifest) -> riak_cs_mb_helper:set_bag_id_to_manifest(BagId, Manifest). %% @doc Remove a chunk from the diff --git a/src/riak_cs_manifest_utils.erl b/src/riak_cs_manifest_utils.erl index 4ff07b27f..35acd1a13 100644 --- a/src/riak_cs_manifest_utils.erl +++ b/src/riak_cs_manifest_utils.erl @@ -467,6 +467,9 @@ new_mani_helper() -> undefined, %% md5 orddict:new(), 10, + undefined, + [], + undefined, undefined). manifest_test_() -> diff --git a/src/riak_cs_mp_utils.erl b/src/riak_cs_mp_utils.erl index 65b7af075..1cf5065d4 100644 --- a/src/riak_cs_mp_utils.erl +++ b/src/riak_cs_mp_utils.erl @@ -52,7 +52,6 @@ make_content_types_accepted/3, make_special_error/1, make_special_error/4, - new_manifest/5, upload_part/6, upload_part/7, upload_part_1blob/2, upload_part_finished/7, upload_part_finished/8, @@ -242,7 +241,6 @@ list_parts(Bucket, Key, UploadId, Caller, Opts, RcPidUnW) -> new_manifest(Bucket, Key, ContentType, {_, _, _} = Owner, Opts) -> UUID = druuid:v4(), %% TODO: add object metadata here, e.g. content-disposition et al. - %% TODO: add cluster_id ... which means calling new_manifest/11 not /9. MetaData = case proplists:get_value(meta_data, Opts) of undefined -> []; AsIsHdrs -> AsIsHdrs @@ -257,7 +255,11 @@ new_manifest(Bucket, Key, ContentType, {_, _, _} = Owner, Opts) -> MetaData, riak_cs_lfs_utils:block_size(), %% ACL: needs Riak client pid, so we wait - no_acl_yet), + no_acl_yet, + [], + %% Cluster ID and Bag ID are added later + undefined, + undefined), MpM = ?MULTIPART_MANIFEST{upload_id = UUID, owner = Owner}, M?MANIFEST{props = replace_mp_manifest(MpM, M?MANIFEST.props)}. @@ -294,7 +296,7 @@ upload_part_finished(Bucket, Key, UploadId, _PartNumber, PartUUID, MD5, do_part_common(upload_part_finished, Bucket, Key, UploadId, Caller, [{upload_part_finished, Extra}], RcPidUnW). -write_new_manifest(M, Opts, RcPidUnW) -> +write_new_manifest(?MANIFEST{bkey={Bucket, Key}, uuid=UUID}=M, Opts, RcPidUnW) -> MpM = get_mp_manifest(M), Owner = MpM?MULTIPART_MANIFEST.owner, case wrap_riak_client(RcPidUnW) of @@ -309,14 +311,16 @@ write_new_manifest(M, Opts, RcPidUnW) -> end, ClusterId = riak_cs_config:cluster_id(?PID(RcPid)), M2 = M?MANIFEST{acl = Acl, - cluster_id = ClusterId, + cluster_id=ClusterId, write_start_time=os:timestamp()}, + BagId = riak_cs_mb_helper:choose_bag_id(block, {Bucket, Key, UUID}), + M3 = riak_cs_lfs_utils:set_bag_id(BagId, M2), {Bucket, Key} = M?MANIFEST.bkey, {ok, ManiPid} = riak_cs_manifest_fsm:start_link(Bucket, Key, ?PID(RcPid)), try - ok = riak_cs_manifest_fsm:add_new_manifest(ManiPid, M2), - {ok, M2?MANIFEST.uuid} + ok = riak_cs_manifest_fsm:add_new_manifest(ManiPid, M3), + {ok, M3?MANIFEST.uuid} after ok = riak_cs_manifest_fsm:stop(ManiPid) end diff --git a/src/riak_cs_put_fsm.erl b/src/riak_cs_put_fsm.erl index 7e8b308cf..e04d7aa05 100644 --- a/src/riak_cs_put_fsm.erl +++ b/src/riak_cs_put_fsm.erl @@ -27,7 +27,7 @@ -include("riak_cs.hrl"). %% API --export([start_link/1, start_link/2, +-export([start_link/1, start_link/3, get_uuid/1, augment_data/2, block_written/2, @@ -64,6 +64,7 @@ riak_client :: riak_client(), mani_pid :: undefined | pid(), make_new_manifest_p :: true | {false, bag_id()}, + bag_id :: bag_id(), timer_ref :: reference(), bucket :: binary(), key :: binary(), @@ -90,11 +91,11 @@ term(), pos_integer(), acl(), timeout(), pid(), riak_client()}) -> {ok, pid()} | {error, term()}. start_link(Tuple) when is_tuple(Tuple) -> - start_link(Tuple, true). + start_link(Tuple, true, undefined). -spec start_link({binary(), binary(), non_neg_integer(), binary(), term(), pos_integer(), acl(), timeout(), pid(), riak_client()}, - true | {false, bag_id()}) -> + boolean(), bag_id()) -> {ok, pid()} | {error, term()}. start_link({_Bucket, _Key, @@ -106,8 +107,9 @@ start_link({_Bucket, _Timeout, _Caller, _RcPid}=Arg1, - MakeNewManifestP) -> - gen_fsm:start_link(?MODULE, {Arg1, MakeNewManifestP}, []). + MakeNewManifestP, + BagId) -> + gen_fsm:start_link(?MODULE, {Arg1, MakeNewManifestP, BagId}, []). %% -spec get_uuid(pid()) -> binary(). get_uuid(Pid) -> @@ -145,7 +147,7 @@ block_written(Pid, BlockID) -> {ok, prepare, #state{}, timeout()}. init({{Bucket, Key, ContentLength, ContentType, Metadata, BlockSize, Acl, Timeout, Caller, RcPid}, - MakeNewManifestP}) -> + MakeNewManifestP, BagId}) -> %% We need to do this (the monitor) for two reasons %% 1. We're started through a supervisor, so the %% proc that actually intends to start us isn't @@ -168,6 +170,7 @@ init({{Bucket, Key, ContentLength, ContentType, content_type=ContentType, riak_client=RcPid, make_new_manifest_p=MakeNewManifestP, + bag_id=BagId, timeout=Timeout}, 0}. @@ -390,7 +393,8 @@ prepare(State=#state{bucket=Bucket, metadata=Metadata, acl=Acl, riak_client=RcPid, - make_new_manifest_p=MakeNewManifestP}) + make_new_manifest_p=MakeNewManifestP, + bag_id=BagId}) when is_integer(ContentLength), ContentLength >= 0 -> %% 1. start the manifest_fsm proc {ok, ManiPid} = maybe_riak_cs_manifest_fsm_start_link( @@ -399,35 +403,19 @@ prepare(State=#state{bucket=Bucket, %% this shouldn't be hardcoded. %% for now, always populate cluster_id ClusterID = riak_cs_config:cluster_id(RcPid), - Manifest = case MakeNewManifestP of - true -> - riak_cs_lfs_utils:new_manifest(Bucket, - Key, - UUID, - ContentLength, - ContentType, - %% we don't know the md5 yet - undefined, - Metadata, - BlockSize, - Acl, - [], - ClusterID); - {false, BagId} -> - riak_cs_lfs_utils:new_manifest(Bucket, - Key, - UUID, - ContentLength, - ContentType, - %% we don't know the md5 yet - undefined, - Metadata, - BlockSize, - Acl, - [], - ClusterID, - BagId) - end, + Manifest = riak_cs_lfs_utils:new_manifest(Bucket, + Key, + UUID, + ContentLength, + ContentType, + %% we don't know the md5 yet + undefined, + Metadata, + BlockSize, + Acl, + [], + ClusterID, + BagId), NewManifest = Manifest?MANIFEST{write_start_time=os:timestamp()}, Md5 = riak_cs_utils:md5_init(), @@ -649,7 +637,7 @@ handle_receiving_last_chunk(NewData, State=#state{buffer_queue=BufferQueue, Reply = ok, {reply, Reply, all_received, NewStateData}. -maybe_riak_cs_manifest_fsm_start_link({false, _BagId}, _Bucket, _Key, _RcPid) -> +maybe_riak_cs_manifest_fsm_start_link(false, _Bucket, _Key, _RcPid) -> {ok, undefined}; maybe_riak_cs_manifest_fsm_start_link(true, Bucket, Key, RcPid) -> riak_cs_manifest_fsm:start_link(Bucket, Key, RcPid). From d19ef462d1778cabe3701f0feaaf630bd848bd4c Mon Sep 17 00:00:00 2001 From: Shunichi Shinohara Date: Fri, 5 Jun 2015 18:39:48 +0900 Subject: [PATCH 03/16] Add proxy_get support in multibag environment --- src/riak_cs_block_server.erl | 28 +++++++++++++---------- src/riak_cs_config.erl | 43 ++++++++---------------------------- src/riak_cs_mb_helper.erl | 23 +++++++++++++++++++ src/riak_cs_mp_utils.erl | 14 +++++------- src/riak_cs_pbc.erl | 21 ++++++++++++++++++ src/riak_cs_put_fsm.erl | 13 ++++++----- src/riak_cs_riak_client.erl | 2 ++ 7 files changed, 85 insertions(+), 59 deletions(-) diff --git a/src/riak_cs_block_server.erl b/src/riak_cs_block_server.erl index ea32d8bf6..a425faf64 100644 --- a/src/riak_cs_block_server.erl +++ b/src/riak_cs_block_server.erl @@ -51,7 +51,8 @@ format_status/2]). -record(state, {riak_client :: riak_client(), - close_riak_connection=true :: boolean()}). + close_riak_connection=true :: boolean(), + manifest :: lfs_manifest()}). %%%=================================================================== %%% API @@ -146,7 +147,7 @@ init([Manifest, RcPid]) -> init(Manifest, RcPid, State) -> process_flag(trap_exit, true), ok = riak_cs_riak_client:set_manifest(RcPid, Manifest), - {ok, State#state{riak_client=RcPid}}. + {ok, State#state{riak_client=RcPid, manifest=Manifest}}. %%-------------------------------------------------------------------- %% @private @@ -177,8 +178,8 @@ handle_call(stop, _From, State) -> %%-------------------------------------------------------------------- handle_cast({get_block, ReplyPid, Bucket, Key, ClusterID, UUID, BlockNumber}, - State=#state{riak_client=RcPid}) -> - get_block(ReplyPid, Bucket, Key, ClusterID, UUID, BlockNumber, RcPid), + State=#state{riak_client=RcPid, manifest=Manifest}) -> + get_block(ReplyPid, Bucket, Key, ClusterID, Manifest, UUID, BlockNumber, RcPid), {noreply, State}; handle_cast({put_block, ReplyPid, Bucket, Key, UUID, BlockNumber, Value, BCSum}, State=#state{riak_client=RcPid}) -> @@ -219,18 +220,18 @@ handle_cast({delete_block, ReplyPid, Bucket, Key, UUID, BlockNumber}, State=#sta handle_cast(_Msg, State) -> {noreply, State}. -get_block(ReplyPid, Bucket, Key, ClusterID, UUID, BlockNumber, RcPid) -> +get_block(ReplyPid, Bucket, Key, ClusterId, Manifest, UUID, BlockNumber, RcPid) -> %% don't use proxy get if it's a local get %% or proxy get is disabled ProxyActive = riak_cs_config:proxy_get_active(), - UseProxyGet = use_proxy_get(RcPid, ClusterID), + UseProxyGet = use_proxy_get(Manifest), case riak_cs_utils:n_val_1_get_requests() of true -> - do_get_block(ReplyPid, Bucket, Key, ClusterID, UseProxyGet, ProxyActive, UUID, + do_get_block(ReplyPid, Bucket, Key, ClusterId, UseProxyGet, ProxyActive, UUID, BlockNumber, RcPid); false -> - normal_nval_block_get(ReplyPid, Bucket, Key, ClusterID, + normal_nval_block_get(ReplyPid, Bucket, Key, ClusterId, UseProxyGet, UUID, BlockNumber, RcPid) end. @@ -551,10 +552,13 @@ n_val_one_options() -> r_one_options() -> [{r, 1}, {notfound_ok, false}, {basic_quorum, false}]. --spec use_proxy_get(riak_client(), term()) -> boolean(). -use_proxy_get(RcPid, ClusterID) -> - LocalClusterID = riak_cs_config:cluster_id(RcPid), - ClusterID /= undefined andalso LocalClusterID /= ClusterID. +-spec use_proxy_get(term()) -> boolean(). +use_proxy_get(?MANIFEST{cluster_id=undefined}) -> + false; +use_proxy_get(?MANIFEST{cluster_id=SourceClusterId} = Manifest) -> + BagId = riak_cs_mb_helper:bag_id_from_manifest(Manifest), + LocalClusterID = riak_cs_mb_helper:cluster_id(BagId), + LocalClusterID =/= SourceClusterId. dt_entry(Func, Ints, Strings) -> riak_cs_dtrace:dtrace(?DT_BLOCK_OP, 1, Ints, ?MODULE, Func, Strings). diff --git a/src/riak_cs_config.erl b/src/riak_cs_config.erl index 7ca6e18a4..4d46790eb 100644 --- a/src/riak_cs_config.erl +++ b/src/riak_cs_config.erl @@ -90,7 +90,8 @@ fold_objects_timeout/0, %% for cs_bucket_fold get_index_range_gckeys_timeout/0, get_index_range_gckeys_call_timeout/0, - get_index_list_multipart_uploads_timeout/0 + get_index_list_multipart_uploads_timeout/0, + cluster_id_timeout/0 ]). %% OpenStack config @@ -247,45 +248,18 @@ use_t2b_compression() -> %% doc Return the current cluster ID. Used for repl %% After obtaining the clusterid the first time, %% store the value in app:set_env --spec cluster_id(riak_client()) -> binary(). -cluster_id(RcPid) -> +-spec cluster_id(fun()) -> binary(). +cluster_id(GetClusterIdFun) -> + ClusterID = GetClusterIdFun(master), case application:get_env(riak_cs, cluster_id) of {ok, ClusterID} -> ClusterID; undefined -> - Timeout = case application:get_env(riak_cs, cluster_id_timeout) of - {ok, Value} -> - Value; - undefined -> - ?DEFAULT_CLUSTER_ID_TIMEOUT - end, - maybe_get_cluster_id(proxy_get_active(), RcPid, Timeout) + ClusterId = GetClusterIdFun(undefined), + application:set_env(riak_cs, cluster_id, ClusterId), + ClusterId end. -%% @doc If `proxy_get' is enabled then attempt to determine the cluster id --spec maybe_get_cluster_id(boolean(), riak_client(), integer()) -> undefined | binary(). -maybe_get_cluster_id(true, RcPid, Timeout) -> - try - %% TODO && FIXME!!: DO NOT support multibag YET!!! - {ok, MasterPbc} = riak_cs_riak_client:master_pbc(RcPid), - case riak_repl_pb_api:get_clusterid(MasterPbc, Timeout) of - {ok, ClusterID} -> - application:set_env(riak_cs, cluster_id, ClusterID), - ClusterID; - _ -> - _ = lager:debug("Unable to obtain cluster ID"), - undefined - end - catch _:_ -> - %% Disable `proxy_get' so we do not repeatedly have to - %% handle this same exception. This would happen if an OSS - %% install has `proxy_get' enabled. - application:set_env(riak_cs, proxy_get, disabled), - undefined - end; -maybe_get_cluster_id(false, _, _) -> - undefined. - %% @doc Return the configured md5 chunk size -spec md5_chunk_size() -> non_neg_integer(). md5_chunk_size() -> @@ -488,6 +462,7 @@ local_get_block_timeout() -> ?TIMEOUT_CONFIG_FUNC(get_index_range_gckeys_timeout). ?TIMEOUT_CONFIG_FUNC(get_index_range_gckeys_call_timeout). ?TIMEOUT_CONFIG_FUNC(get_index_list_multipart_uploads_timeout). +?TIMEOUT_CONFIG_FUNC(cluster_id_timeout). -undef(TIMEOUT_CONFIG_FUNC). diff --git a/src/riak_cs_mb_helper.erl b/src/riak_cs_mb_helper.erl index 796f7f58f..81a1b1a3e 100644 --- a/src/riak_cs_mb_helper.erl +++ b/src/riak_cs_mb_helper.erl @@ -23,6 +23,8 @@ -module(riak_cs_mb_helper). -export([process_specs/0, bags/0, + cluster_id/1, + get_cluster_id/1, choose_bag_id/2, set_bag_id_to_manifest/2, bag_id_from_manifest/1]). @@ -64,3 +66,24 @@ bag_id_from_manifest(?MANIFEST{props = Props}) -> {block_bag, BagId} -> BagId end end. + +-spec cluster_id(bag_id()) -> cluster_id(). +cluster_id(BagId) -> + case riak_cs_config:proxy_get_active() of + false -> + undefined; + true -> + Fun = fun get_cluster_id/1, + ?MB_ENABLED(riak_cs_config:cluster_id(Fun), + riak_cs_multibag:cluster_id(Fun, BagId)) + end. + +-spec get_cluster_id(bag_id())-> cluster_id(). +get_cluster_id(BagId) -> + PbcPool = riak_cs_riak_client:pbc_pool_name(BagId), + {ok, Pbc} = riak_cs_utils:riak_connection(PbcPool), + try + riak_cs_pbc:get_cluster_id(Pbc) + after + riak_cs_utils:close_riak_connection(PbcPool, Pbc) + end. diff --git a/src/riak_cs_mp_utils.erl b/src/riak_cs_mp_utils.erl index 1cf5065d4..d0b0b61a9 100644 --- a/src/riak_cs_mp_utils.erl +++ b/src/riak_cs_mp_utils.erl @@ -304,18 +304,16 @@ write_new_manifest(?MANIFEST{bkey={Bucket, Key}, uuid=UUID}=M, Opts, RcPidUnW) - try Acl = case proplists:get_value(acl, Opts) of undefined -> - % 4th arg, pid(), unused but honor the contract riak_cs_acl_utils:canned_acl("private", Owner, undefined); AnAcl -> AnAcl end, - ClusterId = riak_cs_config:cluster_id(?PID(RcPid)), - M2 = M?MANIFEST{acl = Acl, - cluster_id=ClusterId, - write_start_time=os:timestamp()}, BagId = riak_cs_mb_helper:choose_bag_id(block, {Bucket, Key, UUID}), - M3 = riak_cs_lfs_utils:set_bag_id(BagId, M2), - {Bucket, Key} = M?MANIFEST.bkey, + M2 = riak_cs_lfs_utils:set_bag_id(BagId, M), + ClusterId = riak_cs_mb_helper:cluster_id(BagId), + M3 = M2?MANIFEST{acl = Acl, + cluster_id=ClusterId, + write_start_time=os:timestamp()}, {ok, ManiPid} = riak_cs_manifest_fsm:start_link(Bucket, Key, ?PID(RcPid)), try @@ -476,7 +474,7 @@ do_part_common2(upload_part, RcPid, M, _Obj, MpM, Props) -> {Bucket, Key, Size, <<"x-riak/multipart-part">>, orddict:new(), BlockSize, M?MANIFEST.acl, infinity, self(), RcPid}, - {false, BagId}), + false, BagId), try ?MANIFEST{content_length = ContentLength, props = MProps} = M, diff --git a/src/riak_cs_pbc.erl b/src/riak_cs_pbc.erl index b2d819525..a3103e804 100644 --- a/src/riak_cs_pbc.erl +++ b/src/riak_cs_pbc.erl @@ -29,6 +29,7 @@ put_with_no_meta/2, put_with_no_meta/3, list_keys/3, + get_cluster_id/1, check_connection_status/2]). %% @doc Get an object from Riak @@ -87,6 +88,26 @@ list_keys(PbcPid, BucketName, Timeout) -> Error end. +%% @doc Attempt to determine the cluster id +-spec get_cluster_id(pid()) -> undefined | binary(). +get_cluster_id(Pbc) -> + Timeout = riak_cs_config:cluster_id_timeout(), + try + case riak_repl_pb_api:get_clusterid(Pbc, Timeout) of + {ok, ClusterID} -> + ClusterID; + _ -> + _ = lager:debug("Unable to obtain cluster ID"), + undefined + end + catch _:_ -> + %% Disable `proxy_get' so we do not repeatedly have to + %% handle this same exception. This would happen if an OSS + %% install has `proxy_get' enabled. + application:set_env(riak_cs, proxy_get, disabled), + undefined + end. + %% @doc don't reuse return value -spec check_connection_status(pid(), term()) -> any(). check_connection_status(Pbc, Where) -> diff --git a/src/riak_cs_put_fsm.erl b/src/riak_cs_put_fsm.erl index e04d7aa05..22b3756ce 100644 --- a/src/riak_cs_put_fsm.erl +++ b/src/riak_cs_put_fsm.erl @@ -147,7 +147,7 @@ block_written(Pid, BlockID) -> {ok, prepare, #state{}, timeout()}. init({{Bucket, Key, ContentLength, ContentType, Metadata, BlockSize, Acl, Timeout, Caller, RcPid}, - MakeNewManifestP, BagId}) -> + MakeNewManifestP, BagId0}) -> %% We need to do this (the monitor) for two reasons %% 1. We're started through a supervisor, so the %% proc that actually intends to start us isn't @@ -159,6 +159,12 @@ init({{Bucket, Key, ContentLength, ContentType, CallerRef = erlang:monitor(process, Caller), UUID = druuid:v4(), + BagId = case BagId0 of + undefined -> + riak_cs_mb_helper:choose_bag_id(block, {Bucket, Key, UUID}); + _ -> + BagId0 + end, {ok, prepare, #state{bucket=Bucket, key=Key, block_size=BlockSize, @@ -399,10 +405,7 @@ prepare(State=#state{bucket=Bucket, %% 1. start the manifest_fsm proc {ok, ManiPid} = maybe_riak_cs_manifest_fsm_start_link( MakeNewManifestP, Bucket, Key, RcPid), - %% TODO: - %% this shouldn't be hardcoded. - %% for now, always populate cluster_id - ClusterID = riak_cs_config:cluster_id(RcPid), + ClusterID = riak_cs_mb_helper:cluster_id(BagId), Manifest = riak_cs_lfs_utils:new_manifest(Bucket, Key, UUID, diff --git a/src/riak_cs_riak_client.erl b/src/riak_cs_riak_client.erl index 05d72a641..864416bf3 100644 --- a/src/riak_cs_riak_client.erl +++ b/src/riak_cs_riak_client.erl @@ -107,6 +107,8 @@ checkin(Pool, RcPid) -> -spec pbc_pool_name(master | bag_id()) -> atom(). pbc_pool_name(master) -> pbc_pool_master; +pbc_pool_name(undefined) -> + pbc_pool_master; pbc_pool_name(BagId) when is_binary(BagId) -> list_to_atom(lists:flatten(io_lib:format("pbc_pool_~s", [BagId]))). From 7b8ee898b9e849d25f0486546732dabea101f021 Mon Sep 17 00:00:00 2001 From: Shunichi Shinohara Date: Wed, 10 Jun 2015 15:06:10 -0400 Subject: [PATCH 04/16] Add proxy_get config in schema definition --- rel/files/riak_cs.schema | 10 ++++++++++ test/riak_cs_config_test.erl | 7 +++++++ 2 files changed, 17 insertions(+) diff --git a/rel/files/riak_cs.schema b/rel/files/riak_cs.schema index 9e90375e4..cbfac53ab 100644 --- a/rel/files/riak_cs.schema +++ b/rel/files/riak_cs.schema @@ -367,6 +367,16 @@ {datatype, integer} ]}. +%% == Multi-Datacenter Replication == +%% @doc Switch to use proxy_get feature of +%% Multi-Datacenter Replication. Make sure +%% to set proxy_get on also in riak side. +{mapping, "proxy_get", "riak_cs.proxy_get", [ + {default, off}, + {datatype, flag}, + hidden +]}. + %% == DTrace == %% @doc If your Erlang virtual machine supports DTrace (or diff --git a/test/riak_cs_config_test.erl b/test/riak_cs_config_test.erl index acb5b2471..89ec5e3eb 100644 --- a/test/riak_cs_config_test.erl +++ b/test/riak_cs_config_test.erl @@ -17,6 +17,7 @@ default_config_test() -> cuttlefish_unit:assert_not_configured(Config, "riak_cs.admin_port"), cuttlefish_unit:assert_config(Config, "riak_cs.cs_root_host", "s3.amazonaws.com"), cuttlefish_unit:assert_config(Config, "riak_cs.cs_version", 10300), + cuttlefish_unit:assert_config(Config, "riak_cs.proxy_get", false), cuttlefish_unit:assert_not_configured(Config, "riak_cs.rewrite_module"), cuttlefish_unit:assert_not_configured(Config, "riak_cs.auth_module"), cuttlefish_unit:assert_config(Config, "riak_cs.fold_objects_for_list_keys", true), @@ -157,6 +158,12 @@ max_buckets_per_user_test() -> cuttlefish_unit:assert_config(NoConfig, "riak_cs.max_buckets_per_user", 100), ok. +proxy_get_test() -> + DefConf = [{["proxy_get"], "on"}], + DefConfig = cuttlefish_unit:generate_templated_config(schema_files(), DefConf, context()), + cuttlefish_unit:assert_config(DefConfig, "riak_cs.proxy_get", true), + ok. + wm_log_config_test_() -> {setup, fun() -> From 881f8dd40b5fe51c06b9e65e0a3636981918bc6c Mon Sep 17 00:00:00 2001 From: Shunichi Shinohara Date: Tue, 16 Jun 2015 15:45:23 +0900 Subject: [PATCH 05/16] Add riak_test utilities for setup and proxy_get --- riak_test/src/rtcs.erl | 89 +++++++++++++++++++------------- riak_test/src/rtcs_multipart.erl | 12 ++++- 2 files changed, 62 insertions(+), 39 deletions(-) diff --git a/riak_test/src/rtcs.erl b/riak_test/src/rtcs.erl index 194493fbb..1b5deb53e 100644 --- a/riak_test/src/rtcs.erl +++ b/riak_test/src/rtcs.erl @@ -104,6 +104,10 @@ flavored_setup(NumNodes, {multibag, _} = Flavor, Configs, Vsn) rtcs_bag:flavored_setup(NumNodes, Flavor, Configs, Vsn). setup_clusters(Configs, JoinFun, NumNodes, Vsn) -> + ConfigFun = fun(_Type, Config, _Node) -> Config end, + setup_clusters(Configs, ConfigFun, JoinFun, NumNodes, Vsn). + +setup_clusters(Configs, ConfigFun, JoinFun, NumNodes, Vsn) -> %% Start the erlcloud app erlcloud:start(), @@ -113,14 +117,15 @@ setup_clusters(Configs, JoinFun, NumNodes, Vsn) -> Cfgs = configs(Configs), lager:info("Configs = ~p", [ Cfgs]), - {RiakNodes, _CSNodes, _Stanchion} = Nodes = deploy_nodes(NumNodes, Cfgs, Vsn), + {RiakNodes, _CSNodes, _Stanchion} = Nodes = + deploy_nodes(NumNodes, Cfgs, ConfigFun, Vsn), rt:wait_until_nodes_ready(RiakNodes), lager:info("Make cluster"), JoinFun(RiakNodes), ?assertEqual(ok, wait_until_nodes_ready(RiakNodes)), ?assertEqual(ok, wait_until_no_pending_changes(RiakNodes)), rt:wait_until_ring_converged(RiakNodes), - {AdminKeyId, AdminSecretKey} = setup_admin_user(NumNodes, Cfgs, Vsn), + {AdminKeyId, AdminSecretKey} = setup_admin_user(NumNodes, Cfgs, ConfigFun, Vsn), AdminConfig = rtcs:config(AdminKeyId, AdminSecretKey, rtcs:cs_port(hd(RiakNodes))), @@ -178,7 +183,8 @@ riak_id_per_cluster(NumNodes) -> deploy_stanchion(Config) -> %% Set initial config - update_stanchion_config(rt_config:get(?STANCHION_CURRENT), Config), + ConfigFun = fun(_, Config0, _) -> Config0 end, + update_stanchion_config(rt_config:get(?STANCHION_CURRENT), Config, ConfigFun), start_stanchion(), lager:info("Stanchion started"). @@ -411,9 +417,15 @@ riak_bitcaskroot(Prefix, N) -> riak_binpath(Prefix, N) -> io_lib:format("~s/dev/dev~b/bin/riak", [Prefix, N]). +riak_repl_binpath(Prefix, N) -> + io_lib:format("~s/dev/dev~b/bin/riak-repl", [Prefix, N]). + riakcmd(Path, N, Cmd) -> lists:flatten(io_lib:format("~s ~s", [riak_binpath(Path, N), Cmd])). +riak_repl_cmd(Path, N, Cmd) -> + lists:flatten(io_lib:format("~s ~s", [riak_repl_binpath(Path, N), Cmd])). + riakcs_home(Prefix, N) -> io_lib:format("~s/dev/dev~b/", [Prefix, N]). @@ -461,11 +473,9 @@ riak_root_and_vsn(previous, ee) -> {?EE_ROOT, ee_previous}. cs_current() -> ?CS_CURRENT. -deploy_nodes(NumNodes, InitialConfig) -> - deploy_nodes(NumNodes, InitialConfig, current). - --spec deploy_nodes(list(), list(), current|previous) -> any(). -deploy_nodes(NumNodes, InitialConfig, Vsn) when Vsn =:= current orelse Vsn =:= previous -> +-spec deploy_nodes(list(), list(), fun(), current|previous) -> any(). +deploy_nodes(NumNodes, InitialConfig, ConfigFun, Vsn) + when Vsn =:= current orelse Vsn =:= previous -> lager:info("Initial Config: ~p", [InitialConfig]), NodeConfig = [{current, InitialConfig} || _ <- lists:seq(1,NumNodes)], RiakNodes = [?DEV(N) || N <- lists:seq(1, NumNodes)], @@ -504,7 +514,7 @@ deploy_nodes(NumNodes, InitialConfig, Vsn) when Vsn =:= current orelse Vsn =:= p {_Versions, Configs} = lists:unzip(NodeConfig), %% Set initial config - set_configs(NodeList, Configs, Vsn), + set_configs(NodeList, Configs, ConfigFun, Vsn), start_all_nodes(NodeList, Vsn), Nodes = {RiakNodes, CSNodes, StanchionNode}, @@ -519,10 +529,8 @@ node_id(Node) -> NodeMap = rt_config:get(rt_cs_nodes), orddict:fetch(Node, NodeMap). -setup_admin_user(NumNodes, InitialConfig) -> - setup_admin_user(NumNodes, InitialConfig, current). - -setup_admin_user(NumNodes, InitialConfig, Vsn) when Vsn =:= current orelse Vsn =:= previous -> +setup_admin_user(NumNodes, InitialConfig, ConfigFun, Vsn) + when Vsn =:= current orelse Vsn =:= previous -> lager:info("Initial Config: ~p", [InitialConfig]), NodeConfig = [{current, InitialConfig} || _ <- lists:seq(1,NumNodes)], RiakNodes = [?DEV(N) || N <- lists:seq(1, NumNodes)], @@ -549,10 +557,7 @@ setup_admin_user(NumNodes, InitialConfig, Vsn) when Vsn =:= current orelse Vsn = %% Create admin user and set in cs and stanchion configs {KeyID, KeySecret} = AdminCreds = create_admin_user(hd(RiakNodes)), - %% Restart cs and stanchion nodes so admin user takes effect - %% stop_cs_and_stanchion_nodes(NodeList), - - set_admin_creds_in_configs(NodeList, Configs, AdminCreds, Vsn), + set_admin_creds_in_configs(NodeList, Configs, ConfigFun, AdminCreds, Vsn), UpdateFun = fun({Node, App}) -> ok = rpc:call(Node, application, set_env, @@ -564,9 +569,6 @@ setup_admin_user(NumNodes, InitialConfig, Vsn) when Vsn =:= current orelse Vsn = [ {CSNode, riak_cs} || CSNode <- CSNodes ]], lists:foreach(UpdateFun, ZippedNodes), - %% start_cs_and_stanchion_nodes(NodeList), - %% [ok = rt:wait_until_pingable(N) || N <- CSNodes ++ [StanchionNode]], - lager:info("NodeConfig: ~p", [ NodeConfig ]), lager:info("RiakNodes: ~p", [RiakNodes]), lager:info("CSNodes: ~p", [CSNodes]), @@ -653,7 +655,7 @@ get_rt_config(cs, previous) -> rt_config:get(?CS_PREVIOUS); get_rt_config(stanchion, current) -> rt_config:get(?STANCHION_CURRENT); get_rt_config(stanchion, previous) -> rt_config:get(?STANCHION_PREVIOUS). -set_configs(NodeList, Configs, Vsn) -> +set_configs(NodeList, Configs, ConfigFun, Vsn) -> rt:pmap(fun({_, default}) -> ok; ({{_CSNode, RiakNode, _Stanchion}, Config}) -> @@ -661,36 +663,37 @@ set_configs(NodeList, Configs, Vsn) -> rt_cs_dev:update_app_config(RiakNode, proplists:get_value(riak, Config)), update_cs_config(get_rt_config(cs, Vsn), N, - proplists:get_value(cs, Config)), + proplists:get_value(cs, Config), ConfigFun), update_stanchion_config(get_rt_config(stanchion, Vsn), - proplists:get_value(stanchion, Config)); + proplists:get_value(stanchion, Config), + ConfigFun); ({{_CSNode, RiakNode}, Config}) -> N = rt_cs_dev:node_id(RiakNode), rt_cs_dev:update_app_config(RiakNode, proplists:get_value(riak, Config)), update_cs_config(get_rt_config(cs, Vsn), N, - proplists:get_value(cs, Config)) + proplists:get_value(cs, Config), ConfigFun) end, lists:zip(NodeList, Configs)), enable_zdbbl(Vsn). -set_admin_creds_in_configs(NodeList, Configs, AdminCreds, Vsn) -> +set_admin_creds_in_configs(NodeList, Configs, ConfigFun, AdminCreds, Vsn) -> rt:pmap(fun({_, default}) -> ok; ({{_CSNode, RiakNode, _Stanchion}, Config}) -> N = rt_cs_dev:node_id(RiakNode), update_cs_config(get_rt_config(cs, Vsn), N, - proplists:get_value(cs, Config), + proplists:get_value(cs, Config), ConfigFun, AdminCreds), update_stanchion_config(get_rt_config(stanchion, Vsn), proplists:get_value(stanchion, Config), - AdminCreds); + ConfigFun, AdminCreds); ({{_CSNode, RiakNode}, Config}) -> N = rt_cs_dev:node_id(RiakNode), update_cs_config(get_rt_config(cs, Vsn), N, - proplists:get_value(cs, Config), + proplists:get_value(cs, Config), ConfigFun, AdminCreds) end, lists:zip(NodeList, Configs)). @@ -801,6 +804,16 @@ calculate_storage(N, Vsn) -> lager:info("Running ~p", [Cmd]), os:cmd(Cmd). +enable_proxy_get(SrcN, Vsn, SinkCluster) -> + Cmd = riak_repl_cmd(get_rt_config(riak, Vsn), SrcN, "proxy_get enable " ++ SinkCluster), + lager:info("Running ~p", [Cmd]), + os:cmd(Cmd). + +disable_proxy_get(SrcN, Vsn, SinkCluster) -> + Cmd = riak_repl_cmd(get_rt_config(riak, Vsn), SrcN, "proxy_get disable " ++ SinkCluster), + lager:info("Running ~p", [Cmd]), + os:cmd(Cmd). + read_config(Vsn, N, Who) -> Prefix = get_rt_config(Who, Vsn), EtcPath = case Who of @@ -815,16 +828,17 @@ read_config(Vsn, N, Who) -> Config end. -update_cs_config(Prefix, N, Config, {AdminKey, AdminSecret}) -> +update_cs_config(Prefix, N, Config, ConfigFun, {AdminKey, AdminSecret}) -> CSSection = proplists:get_value(riak_cs, Config), UpdConfig = [{riak_cs, update_admin_creds(CSSection, AdminKey, AdminSecret)} | proplists:delete(riak_cs, Config)], - update_cs_config(Prefix, N, UpdConfig). + update_cs_config(Prefix, N, UpdConfig, ConfigFun). -update_cs_config(Prefix, N, Config) -> +update_cs_config(Prefix, N, Config, ConfigFun) -> CSSection = proplists:get_value(riak_cs, Config), - UpdConfig = [{riak_cs, update_cs_port(CSSection, N)} | - proplists:delete(riak_cs, Config)], + UpdConfig0 = [{riak_cs, update_cs_port(CSSection, N)} | + proplists:delete(riak_cs, Config)], + UpdConfig = ConfigFun(cs, UpdConfig0, N), update_app_config(riakcs_etcpath(Prefix, N), UpdConfig). update_admin_creds(Config, AdminKey, AdminSecret) -> @@ -836,16 +850,17 @@ update_cs_port(Config, N) -> Config2 = [{riak_host, {"127.0.0.1", pb_port(N)}} | proplists:delete(riak_host, Config)], [{listener, {"127.0.0.1", cs_port(N)}} | proplists:delete(listener, Config2)]. -update_stanchion_config(Prefix, Config, {AdminKey, AdminSecret}) -> +update_stanchion_config(Prefix, Config, ConfigFun, {AdminKey, AdminSecret}) -> StanchionSection = proplists:get_value(stanchion, Config), UpdConfig = [{stanchion, update_admin_creds(StanchionSection, AdminKey, AdminSecret)} | proplists:delete(stanchion, Config)], - update_stanchion_config(Prefix, UpdConfig). + update_stanchion_config(Prefix, UpdConfig, ConfigFun). -update_stanchion_config(Prefix, Config) -> +update_stanchion_config(Prefix, Config0, ConfigFun) -> + Config = ConfigFun(stanchion, Config0, undefined), update_app_config(stanchion_etcpath(Prefix), Config). -update_app_config(Path, Config) -> +update_app_config(Path, Config) -> lager:debug("rtcs:update_app_config(~s,~p)", [Path, Config]), FileFormatString = "~s/~s.config", AppConfigFile = io_lib:format(FileFormatString, [Path, "app"]), diff --git a/riak_test/src/rtcs_multipart.erl b/riak_test/src/rtcs_multipart.erl index c3209c7ee..d64cd9277 100644 --- a/riak_test/src/rtcs_multipart.erl +++ b/riak_test/src/rtcs_multipart.erl @@ -47,16 +47,24 @@ upload_parts(Bucket, Key, UploadId, Config, PartCount, [Size | Sizes], Contents, Sizes, [Content | Contents], [{PartCount, PartEtag} | Parts]). upload_part_copy(BucketName, Key, UploadId, PartNum, SrcBucket, SrcKey, Config) -> - + upload_part_copy(BucketName, Key, UploadId, PartNum, SrcBucket, SrcKey, undefined, Config). + +upload_part_copy(BucketName, Key, UploadId, PartNum, SrcBucket, SrcKey, SrcRange, Config) -> Url = "/" ++ Key, Source = filename:join([SrcBucket, SrcKey]), Subresources = [{"partNumber", integer_to_list(PartNum)}, {"uploadId", UploadId}], Headers = [%%{"content-length", byte_size(PartData)}, - {"x-amz-copy-source", Source}], + {"x-amz-copy-source", Source} | + source_range(SrcRange)], erlcloud_s3:s3_request(Config, put, BucketName, Url, Subresources, [], {<<>>, []}, Headers). +source_range(undefined) -> []; +source_range({First, Last}) -> + [{"x-amz-copy-source-range", + lists:flatten(io_lib:format("bytes=~b-~b", [First, Last]))}]. + upload_and_assert_part(Bucket, Key, UploadId, PartNum, PartData, Config) -> {RespHeaders, _UploadRes} = erlcloud_s3_multipart:upload_part(Bucket, Key, UploadId, PartNum, PartData, Config), assert_part(Bucket, Key, UploadId, PartNum, Config, RespHeaders). From e224ab6deae4120c1e02de5fdb585398334d0fe9 Mon Sep 17 00:00:00 2001 From: Shunichi Shinohara Date: Wed, 17 Jun 2015 17:43:14 +0900 Subject: [PATCH 06/16] Fix dialyzer warnings --- dialyzer.ignore-warnings.ee | 2 +- src/riak_cs_put_fsm.erl | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dialyzer.ignore-warnings.ee b/dialyzer.ignore-warnings.ee index 3218a2c0e..cd631631c 100644 --- a/dialyzer.ignore-warnings.ee +++ b/dialyzer.ignore-warnings.ee @@ -1,7 +1,7 @@ # Errors riak_cs_block_server.erl:312: The pattern Success = {'ok', _} can never match the type {'error',_} riak_cs_block_server.erl:347: The pattern {'ok', RiakObject} can never match the type {'error',_} -riak_cs_config.erl:248: The pattern {'ok', ClusterID} can never match the type {'error',_} +riak_cs_pbc.erl:100: The pattern {'ok', ClusterID} can never match the type {'error',_} # Warnings Unknown functions: app_helper:get_prop_or_env/3 diff --git a/src/riak_cs_put_fsm.erl b/src/riak_cs_put_fsm.erl index 22b3756ce..3a99fc35b 100644 --- a/src/riak_cs_put_fsm.erl +++ b/src/riak_cs_put_fsm.erl @@ -63,7 +63,7 @@ reply_pid :: {pid(), reference()}, riak_client :: riak_client(), mani_pid :: undefined | pid(), - make_new_manifest_p :: true | {false, bag_id()}, + make_new_manifest_p :: boolean(), bag_id :: bag_id(), timer_ref :: reference(), bucket :: binary(), @@ -143,7 +143,7 @@ block_written(Pid, BlockID) -> %% make things more confusing? -spec init({{binary(), binary(), non_neg_integer(), binary(), term(), pos_integer(), acl(), timeout(), pid(), riak_client()}, - true | {false, bag_id()}}) -> + boolean(), bag_id()}) -> {ok, prepare, #state{}, timeout()}. init({{Bucket, Key, ContentLength, ContentType, Metadata, BlockSize, Acl, Timeout, Caller, RcPid}, From bddc82cb51cb054eee8f25471d7b76bd9bc7f869 Mon Sep 17 00:00:00 2001 From: Shunichi Shinohara Date: Wed, 17 Jun 2015 17:43:52 +0900 Subject: [PATCH 07/16] Import fix for tools.mk about dialyzer warning output MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit see also: Use brancket expression for digit class by shino · Pull Request #10 · basho/tools.mk https://github.com/basho/tools.mk/pull/10 --- tools.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools.mk b/tools.mk index 445dd0cbc..c3d61a822 100644 --- a/tools.mk +++ b/tools.mk @@ -122,7 +122,7 @@ dialyzer-run: | grep -F -f dialyzer.ignore-warnings.tmp -v \ | sed -E 's/^[[:space:]]*[0-9]+[[:space:]]*//' \ | sed -E 's/([]\^:+?|()*.$${}\[])/\\\1/g' \ - | sed -E 's/(\\\.erl\\\:)/\1\\d+:/g' \ + | sed -E 's/(\\\.erl\\\:)/\1[[:digit:]]+:/g' \ | sed -E 's/^(.*)$$/^[[:space:]]*\1$$/g' \ > dialyzer_unhandled_warnings ; \ rm dialyzer.ignore-warnings.tmp; \ From 99286ae252e88cdea2ca2af5d350486035ef1beb Mon Sep 17 00:00:00 2001 From: Shunichi Shinohara Date: Thu, 18 Jun 2015 13:11:13 +0900 Subject: [PATCH 08/16] Restore functions to update admin credentials --- riak_test/src/rtcs.erl | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/riak_test/src/rtcs.erl b/riak_test/src/rtcs.erl index 1b5deb53e..fde072cc7 100644 --- a/riak_test/src/rtcs.erl +++ b/riak_test/src/rtcs.erl @@ -684,7 +684,8 @@ set_admin_creds_in_configs(NodeList, Configs, ConfigFun, AdminCreds, Vsn) -> N = rt_cs_dev:node_id(RiakNode), update_cs_config(get_rt_config(cs, Vsn), N, - proplists:get_value(cs, Config), ConfigFun, + proplists:get_value(cs, Config), + ConfigFun, AdminCreds), update_stanchion_config(get_rt_config(stanchion, Vsn), proplists:get_value(stanchion, Config), @@ -693,7 +694,8 @@ set_admin_creds_in_configs(NodeList, Configs, ConfigFun, AdminCreds, Vsn) -> N = rt_cs_dev:node_id(RiakNode), update_cs_config(get_rt_config(cs, Vsn), N, - proplists:get_value(cs, Config), ConfigFun, + proplists:get_value(cs, Config), + ConfigFun, AdminCreds) end, lists:zip(NodeList, Configs)). @@ -828,13 +830,18 @@ read_config(Vsn, N, Who) -> Config end. +update_cs_config(Prefix, N, Config, {_,_} = AdminCred) -> + update_cs_config(Prefix, N, Config, fun(_,Config0,_) -> Config0 end, AdminCred); +update_cs_config(Prefix, N, Config, ConfigFun) when is_function(ConfigFun) -> + update_cs_config1(Prefix, N, Config, ConfigFun). + update_cs_config(Prefix, N, Config, ConfigFun, {AdminKey, AdminSecret}) -> CSSection = proplists:get_value(riak_cs, Config), UpdConfig = [{riak_cs, update_admin_creds(CSSection, AdminKey, AdminSecret)} | proplists:delete(riak_cs, Config)], - update_cs_config(Prefix, N, UpdConfig, ConfigFun). + update_cs_config1(Prefix, N, UpdConfig, ConfigFun). -update_cs_config(Prefix, N, Config, ConfigFun) -> +update_cs_config1(Prefix, N, Config, ConfigFun) -> CSSection = proplists:get_value(riak_cs, Config), UpdConfig0 = [{riak_cs, update_cs_port(CSSection, N)} | proplists:delete(riak_cs, Config)], @@ -850,13 +857,18 @@ update_cs_port(Config, N) -> Config2 = [{riak_host, {"127.0.0.1", pb_port(N)}} | proplists:delete(riak_host, Config)], [{listener, {"127.0.0.1", cs_port(N)}} | proplists:delete(listener, Config2)]. +update_stanchion_config(Prefix, Config, {_,_} = AdminCreds) -> + update_stanchion_config(Prefix, Config, fun(_,Config0,_) -> Config0 end, AdminCreds); +update_stanchion_config(Prefix, Config, ConfigFun) when is_function(ConfigFun) -> + update_stanchion_config1(Prefix, Config, ConfigFun). + update_stanchion_config(Prefix, Config, ConfigFun, {AdminKey, AdminSecret}) -> StanchionSection = proplists:get_value(stanchion, Config), UpdConfig = [{stanchion, update_admin_creds(StanchionSection, AdminKey, AdminSecret)} | proplists:delete(stanchion, Config)], - update_stanchion_config(Prefix, UpdConfig, ConfigFun). + update_stanchion_config1(Prefix, UpdConfig, ConfigFun). -update_stanchion_config(Prefix, Config0, ConfigFun) -> +update_stanchion_config1(Prefix, Config0, ConfigFun) when is_function(ConfigFun) -> Config = ConfigFun(stanchion, Config0, undefined), update_app_config(stanchion_etcpath(Prefix), Config). From f802eb28fae584cbd034300728a3662dc41b4975 Mon Sep 17 00:00:00 2001 From: Shunichi Shinohara Date: Fri, 19 Jun 2015 17:57:48 +0900 Subject: [PATCH 09/16] Change proxy_get visibility in riak-cs.conf as non-hidden On purpose to get attention for MDC users --- rel/files/riak_cs.schema | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/rel/files/riak_cs.schema b/rel/files/riak_cs.schema index cbfac53ab..0e5c6e0b6 100644 --- a/rel/files/riak_cs.schema +++ b/rel/files/riak_cs.schema @@ -373,8 +373,7 @@ %% to set proxy_get on also in riak side. {mapping, "proxy_get", "riak_cs.proxy_get", [ {default, off}, - {datatype, flag}, - hidden + {datatype, flag} ]}. %% == DTrace == From 2cab2ffb11dbf4ecee1cb786238fb5eec1499148 Mon Sep 17 00:00:00 2001 From: Shunichi Shinohara Date: Fri, 19 Jun 2015 17:58:03 +0900 Subject: [PATCH 10/16] Fix test failure by code change --- test/riak_cs_delete_deadlock.erl | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/test/riak_cs_delete_deadlock.erl b/test/riak_cs_delete_deadlock.erl index 5bb0d9cb2..7bb0afa15 100644 --- a/test/riak_cs_delete_deadlock.erl +++ b/test/riak_cs_delete_deadlock.erl @@ -72,17 +72,21 @@ prop_delete_deadlock() -> part_manifests()}, begin BlockSize = riak_cs_lfs_utils:block_size(), - Manifest = riak_cs_lfs_utils:new_manifest(<<"bucket">>, - "test_file", - UUID, - ?CONTENT_LENGTH, - <<"ctype">>, - "md5", - dict:new(), - BlockSize, - riak_cs_acl_utils:default_acl("tester", - "tester_id", - "tester_key_id")), + Manifest = riak_cs_lfs_utils:new_manifest( + <<"bucket">>, + "test_file", + UUID, + ?CONTENT_LENGTH, + <<"ctype">>, + "md5", + dict:new(), + BlockSize, + riak_cs_acl_utils:default_acl("tester", + "tester_id", + "tester_key_id"), + [], + undefined, + undefined), MpM = ?MULTIPART_MANIFEST{parts = Parts}, NewManifest = Manifest?MANIFEST{props = riak_cs_mp_utils:replace_mp_manifest(MpM, Manifest?MANIFEST.props)}, From 1c9a268786c8aa781023a72b32560f3318fb782f Mon Sep 17 00:00:00 2001 From: Shunichi Shinohara Date: Mon, 22 Jun 2015 16:40:52 +0900 Subject: [PATCH 11/16] Fix unit test failure --- test/riak_cs_dummy_reader.erl | 22 +++++++++++++--------- test/riak_cs_lfs_utils_eqc.erl | 27 +++++++++++++++------------ 2 files changed, 28 insertions(+), 21 deletions(-) diff --git a/test/riak_cs_dummy_reader.erl b/test/riak_cs_dummy_reader.erl index 52bce99aa..c35668de7 100644 --- a/test/riak_cs_dummy_reader.erl +++ b/test/riak_cs_dummy_reader.erl @@ -97,15 +97,19 @@ init([CallerPid, Bucket, Key, ContentLength, BlockSize]) -> handle_call(get_manifest, _From, #state{bucket=Bucket, key=Key, content_length=ContentLength}=State) -> - Manifest = riak_cs_lfs_utils:new_manifest(Bucket, - Key, - druuid:v4(), - ContentLength, - "application/test", - <<"md5">>, - orddict:new(), - riak_cs_lfs_utils:block_size(), - riak_cs_acl_utils:default_acl("tester", "id123", "keyid123")), + Manifest = riak_cs_lfs_utils:new_manifest( + Bucket, + Key, + druuid:v4(), + ContentLength, + "application/test", + <<"md5">>, + orddict:new(), + riak_cs_lfs_utils:block_size(), + riak_cs_acl_utils:default_acl("tester", "id123", "keyid123"), + [], + undefined, + undefined), {reply, {ok, Manifest}, State}; handle_call(_Msg, _From, State) -> {reply, ok, State}. diff --git a/test/riak_cs_lfs_utils_eqc.erl b/test/riak_cs_lfs_utils_eqc.erl index 92d9c0dd6..23d248b4f 100644 --- a/test/riak_cs_lfs_utils_eqc.erl +++ b/test/riak_cs_lfs_utils_eqc.erl @@ -82,18 +82,21 @@ prop_manifest_manipulation() -> begin application:set_env(riak_cs, lfs_block_size, 1048576), - Manifest = riak_cs_lfs_utils:new_manifest(Bucket, - FileName, - UUID, - CLength, - <<"ctype">>, - Md5, - MD, - riak_cs_lfs_utils:block_size(), - riak_cs_acl_utils:default_acl("tester", - "tester_id", - "tester_key_id")), - + Manifest = riak_cs_lfs_utils:new_manifest( + Bucket, + FileName, + UUID, + CLength, + <<"ctype">>, + Md5, + MD, + riak_cs_lfs_utils:block_size(), + riak_cs_acl_utils:default_acl("tester", + "tester_id", + "tester_key_id"), + [], + undefined, + undefined), Blocks = riak_cs_lfs_utils:initial_blocks(CLength, riak_cs_lfs_utils:block_size()), %% TODO: maybe we should shuffle blocks? FoldFun = fun (Chunk, Mani) -> riak_cs_lfs_utils:remove_write_block(Mani, Chunk) end, From a5ef99bf3f4a92adc332d12cf060926cbcf44824 Mon Sep 17 00:00:00 2001 From: Shunichi Shinohara Date: Mon, 22 Jun 2015 17:01:00 +0900 Subject: [PATCH 12/16] Remove wrong and unnecessary call of rpbreplgetclusterid --- src/riak_cs_config.erl | 1 - src/riak_cs_mb_helper.erl | 4 +++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/riak_cs_config.erl b/src/riak_cs_config.erl index 4d46790eb..1c1c44857 100644 --- a/src/riak_cs_config.erl +++ b/src/riak_cs_config.erl @@ -250,7 +250,6 @@ use_t2b_compression() -> %% store the value in app:set_env -spec cluster_id(fun()) -> binary(). cluster_id(GetClusterIdFun) -> - ClusterID = GetClusterIdFun(master), case application:get_env(riak_cs, cluster_id) of {ok, ClusterID} -> ClusterID; diff --git a/src/riak_cs_mb_helper.erl b/src/riak_cs_mb_helper.erl index 81a1b1a3e..9d01ad895 100644 --- a/src/riak_cs_mb_helper.erl +++ b/src/riak_cs_mb_helper.erl @@ -83,7 +83,9 @@ get_cluster_id(BagId) -> PbcPool = riak_cs_riak_client:pbc_pool_name(BagId), {ok, Pbc} = riak_cs_utils:riak_connection(PbcPool), try - riak_cs_pbc:get_cluster_id(Pbc) + ClusterId = riak_cs_pbc:get_cluster_id(Pbc), + lager:info("Cluster ID for bag ~p : ~p", [BagId, ClusterId]), + ClusterId after riak_cs_utils:close_riak_connection(PbcPool, Pbc) end. From 11d3232cfb3baebec24e9d1c08c0c2bb1426f464 Mon Sep 17 00:00:00 2001 From: Shunichi Shinohara Date: Mon, 22 Jun 2015 17:34:57 +0900 Subject: [PATCH 13/16] Refactor anonymous function variable name, use rtdev funcs --- riak_test/src/rtcs.erl | 40 ++++++++++++++++------------------------ 1 file changed, 16 insertions(+), 24 deletions(-) diff --git a/riak_test/src/rtcs.erl b/riak_test/src/rtcs.erl index fde072cc7..e86f1f61f 100644 --- a/riak_test/src/rtcs.erl +++ b/riak_test/src/rtcs.erl @@ -417,15 +417,9 @@ riak_bitcaskroot(Prefix, N) -> riak_binpath(Prefix, N) -> io_lib:format("~s/dev/dev~b/bin/riak", [Prefix, N]). -riak_repl_binpath(Prefix, N) -> - io_lib:format("~s/dev/dev~b/bin/riak-repl", [Prefix, N]). - riakcmd(Path, N, Cmd) -> lists:flatten(io_lib:format("~s ~s", [riak_binpath(Path, N), Cmd])). -riak_repl_cmd(Path, N, Cmd) -> - lists:flatten(io_lib:format("~s ~s", [riak_repl_binpath(Path, N), Cmd])). - riakcs_home(Prefix, N) -> io_lib:format("~s/dev/dev~b/", [Prefix, N]). @@ -807,14 +801,12 @@ calculate_storage(N, Vsn) -> os:cmd(Cmd). enable_proxy_get(SrcN, Vsn, SinkCluster) -> - Cmd = riak_repl_cmd(get_rt_config(riak, Vsn), SrcN, "proxy_get enable " ++ SinkCluster), - lager:info("Running ~p", [Cmd]), - os:cmd(Cmd). + rtdev:run_riak_repl(SrcN, get_rt_config(riak, Vsn), + "proxy_get enable " ++ SinkCluster). disable_proxy_get(SrcN, Vsn, SinkCluster) -> - Cmd = riak_repl_cmd(get_rt_config(riak, Vsn), SrcN, "proxy_get disable " ++ SinkCluster), - lager:info("Running ~p", [Cmd]), - os:cmd(Cmd). + rtdev:run_riak_repl(SrcN, get_rt_config(riak, Vsn), + "proxy_get disable " ++ SinkCluster). read_config(Vsn, N, Who) -> Prefix = get_rt_config(Who, Vsn), @@ -832,20 +824,20 @@ read_config(Vsn, N, Who) -> update_cs_config(Prefix, N, Config, {_,_} = AdminCred) -> update_cs_config(Prefix, N, Config, fun(_,Config0,_) -> Config0 end, AdminCred); -update_cs_config(Prefix, N, Config, ConfigFun) when is_function(ConfigFun) -> - update_cs_config1(Prefix, N, Config, ConfigFun). +update_cs_config(Prefix, N, Config, ConfigUpdateFun) when is_function(ConfigUpdateFun) -> + update_cs_config1(Prefix, N, Config, ConfigUpdateFun). -update_cs_config(Prefix, N, Config, ConfigFun, {AdminKey, AdminSecret}) -> +update_cs_config(Prefix, N, Config, ConfigUpdateFun, {AdminKey, AdminSecret}) -> CSSection = proplists:get_value(riak_cs, Config), UpdConfig = [{riak_cs, update_admin_creds(CSSection, AdminKey, AdminSecret)} | proplists:delete(riak_cs, Config)], - update_cs_config1(Prefix, N, UpdConfig, ConfigFun). + update_cs_config1(Prefix, N, UpdConfig, ConfigUpdateFun). -update_cs_config1(Prefix, N, Config, ConfigFun) -> +update_cs_config1(Prefix, N, Config, ConfigUpdateFun) -> CSSection = proplists:get_value(riak_cs, Config), UpdConfig0 = [{riak_cs, update_cs_port(CSSection, N)} | proplists:delete(riak_cs, Config)], - UpdConfig = ConfigFun(cs, UpdConfig0, N), + UpdConfig = ConfigUpdateFun(cs, UpdConfig0, N), update_app_config(riakcs_etcpath(Prefix, N), UpdConfig). update_admin_creds(Config, AdminKey, AdminSecret) -> @@ -859,17 +851,17 @@ update_cs_port(Config, N) -> update_stanchion_config(Prefix, Config, {_,_} = AdminCreds) -> update_stanchion_config(Prefix, Config, fun(_,Config0,_) -> Config0 end, AdminCreds); -update_stanchion_config(Prefix, Config, ConfigFun) when is_function(ConfigFun) -> - update_stanchion_config1(Prefix, Config, ConfigFun). +update_stanchion_config(Prefix, Config, ConfigUpdateFun) when is_function(ConfigUpdateFun) -> + update_stanchion_config1(Prefix, Config, ConfigUpdateFun). -update_stanchion_config(Prefix, Config, ConfigFun, {AdminKey, AdminSecret}) -> +update_stanchion_config(Prefix, Config, ConfigUpdateFun, {AdminKey, AdminSecret}) -> StanchionSection = proplists:get_value(stanchion, Config), UpdConfig = [{stanchion, update_admin_creds(StanchionSection, AdminKey, AdminSecret)} | proplists:delete(stanchion, Config)], - update_stanchion_config1(Prefix, UpdConfig, ConfigFun). + update_stanchion_config1(Prefix, UpdConfig, ConfigUpdateFun). -update_stanchion_config1(Prefix, Config0, ConfigFun) when is_function(ConfigFun) -> - Config = ConfigFun(stanchion, Config0, undefined), +update_stanchion_config1(Prefix, Config0, ConfigUpdateFun) when is_function(ConfigUpdateFun) -> + Config = ConfigUpdateFun(stanchion, Config0, undefined), update_app_config(stanchion_etcpath(Prefix), Config). update_app_config(Path, Config) -> From 35d9622218db194a6b2751e36e29eb4a379474f6 Mon Sep 17 00:00:00 2001 From: Shunichi Shinohara Date: Mon, 22 Jun 2015 17:35:24 +0900 Subject: [PATCH 14/16] Narrow data in state of block server --- src/riak_cs_block_server.erl | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/riak_cs_block_server.erl b/src/riak_cs_block_server.erl index a425faf64..6465bc57b 100644 --- a/src/riak_cs_block_server.erl +++ b/src/riak_cs_block_server.erl @@ -52,7 +52,7 @@ -record(state, {riak_client :: riak_client(), close_riak_connection=true :: boolean(), - manifest :: lfs_manifest()}). + bag_id :: bag_id()}). %%%=================================================================== %%% API @@ -147,7 +147,8 @@ init([Manifest, RcPid]) -> init(Manifest, RcPid, State) -> process_flag(trap_exit, true), ok = riak_cs_riak_client:set_manifest(RcPid, Manifest), - {ok, State#state{riak_client=RcPid, manifest=Manifest}}. + BagId = riak_cs_mb_helper:bag_id_from_manifest(Manifest), + {ok, State#state{riak_client=RcPid, bag_id=BagId}}. %%-------------------------------------------------------------------- %% @private @@ -178,8 +179,8 @@ handle_call(stop, _From, State) -> %%-------------------------------------------------------------------- handle_cast({get_block, ReplyPid, Bucket, Key, ClusterID, UUID, BlockNumber}, - State=#state{riak_client=RcPid, manifest=Manifest}) -> - get_block(ReplyPid, Bucket, Key, ClusterID, Manifest, UUID, BlockNumber, RcPid), + State=#state{riak_client=RcPid, bag_id=BagId}) -> + get_block(ReplyPid, Bucket, Key, ClusterID, BagId, UUID, BlockNumber, RcPid), {noreply, State}; handle_cast({put_block, ReplyPid, Bucket, Key, UUID, BlockNumber, Value, BCSum}, State=#state{riak_client=RcPid}) -> @@ -220,11 +221,11 @@ handle_cast({delete_block, ReplyPid, Bucket, Key, UUID, BlockNumber}, State=#sta handle_cast(_Msg, State) -> {noreply, State}. -get_block(ReplyPid, Bucket, Key, ClusterId, Manifest, UUID, BlockNumber, RcPid) -> +get_block(ReplyPid, Bucket, Key, ClusterId, BagId, UUID, BlockNumber, RcPid) -> %% don't use proxy get if it's a local get %% or proxy get is disabled ProxyActive = riak_cs_config:proxy_get_active(), - UseProxyGet = use_proxy_get(Manifest), + UseProxyGet = use_proxy_get(ClusterId, BagId), case riak_cs_utils:n_val_1_get_requests() of true -> @@ -552,11 +553,10 @@ n_val_one_options() -> r_one_options() -> [{r, 1}, {notfound_ok, false}, {basic_quorum, false}]. --spec use_proxy_get(term()) -> boolean(). -use_proxy_get(?MANIFEST{cluster_id=undefined}) -> +-spec use_proxy_get(cluster_id(), bag_id()) -> boolean(). +use_proxy_get(undefined, _BagId) -> false; -use_proxy_get(?MANIFEST{cluster_id=SourceClusterId} = Manifest) -> - BagId = riak_cs_mb_helper:bag_id_from_manifest(Manifest), +use_proxy_get(SourceClusterId, BagId) when is_binary(SourceClusterId) -> LocalClusterID = riak_cs_mb_helper:cluster_id(BagId), LocalClusterID =/= SourceClusterId. From 984aa3d0f2d6d25ffcdef0c58b31a2b3bc706892 Mon Sep 17 00:00:00 2001 From: Shunichi Shinohara Date: Thu, 25 Jun 2015 11:52:21 +0900 Subject: [PATCH 15/16] Add utility module for S3 object upload and download assertions --- riak_test/src/rtcs_object.erl | 64 +++++++++++++++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 riak_test/src/rtcs_object.erl diff --git a/riak_test/src/rtcs_object.erl b/riak_test/src/rtcs_object.erl new file mode 100644 index 000000000..f76bd3e48 --- /dev/null +++ b/riak_test/src/rtcs_object.erl @@ -0,0 +1,64 @@ +%% --------------------------------------------------------------------- +%% +%% Copyright (c) 2015 Basho Technologies, Inc. All Rights Reserved. +%% +%% This file is provided to you under the Apache License, +%% Version 2.0 (the "License"); you may not use this file +%% except in compliance with the License. You may obtain +%% a copy of the License at +%% +%% http://www.apache.org/licenses/LICENSE-2.0 +%% +%% Unless required by applicable law or agreed to in writing, +%% software distributed under the License is distributed on an +%% "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +%% KIND, either express or implied. See the License for the +%% specific language governing permissions and limitations +%% under the License. +%% +%% --------------------------------------------------------------------- + +-module(rtcs_object). + +-compile(export_all). +-include_lib("eunit/include/eunit.hrl"). + +upload(UserConfig, normal, B, K) -> + Content = crypto:rand_bytes(mb(4)), + erlcloud_s3:put_object(B, K, Content, UserConfig), + {B, K, Content}; +upload(UserConfig, multipart, B, K) -> + Content = rtcs_multipart:multipart_upload(B, K, [mb(10), 400], UserConfig), + {B, K, Content}. + +upload(UserConfig, normal_copy, B, DstK, SrcK) -> + ?assertEqual([{copy_source_version_id, "false"}, {version_id, "null"}], + erlcloud_s3:copy_object(B, DstK, B, SrcK, UserConfig)); +upload(UserConfig, multipart_copy, B, DstK, SrcK) -> + InitUploadRes = erlcloud_s3_multipart:initiate_upload(B, DstK, "text/plain", [], UserConfig), + UploadId = erlcloud_s3_multipart:upload_id(InitUploadRes), + + {RespHeaders1, _} = rtcs_multipart:upload_part_copy( + B, DstK, UploadId, 1, B, SrcK, {0, mb(5)-1}, UserConfig), + Etag1 = rtcs_multipart:assert_part(B, DstK, UploadId, 1, UserConfig, RespHeaders1), + {RespHeaders2, _} = rtcs_multipart:upload_part_copy( + B, DstK, UploadId, 2, B, SrcK, {mb(5), mb(10)+400-1}, UserConfig), + Etag2 = rtcs_multipart:assert_part(B, DstK, UploadId, 2, UserConfig, RespHeaders2), + + EtagList = [ {1, Etag1}, {2, Etag2} ], + ?assertEqual(ok, erlcloud_s3_multipart:complete_upload( + B, DstK, UploadId, EtagList, UserConfig)). + +mb(MegaBytes) -> + MegaBytes * 1024 * 1024. + +assert_whole_content(UserConfig, Bucket, Key, ExpectedContent) -> + Obj = erlcloud_s3:get_object(Bucket, Key, UserConfig), + assert_whole_content(ExpectedContent, Obj). + +assert_whole_content(ExpectedContent, ResultObj) -> + Content = proplists:get_value(content, ResultObj), + ContentLength = proplists:get_value(content_length, ResultObj), + ?assertEqual(byte_size(ExpectedContent), list_to_integer(ContentLength)), + ?assertEqual(byte_size(ExpectedContent), byte_size(Content)), + ?assertEqual(ExpectedContent, Content). From a7d1593371c97cfc955ec44b7c08a7644b6fac75 Mon Sep 17 00:00:00 2001 From: Shunichi Shinohara Date: Thu, 25 Jun 2015 15:14:34 +0900 Subject: [PATCH 16/16] Update riak_cs_multibag tag --- rebar.config | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rebar.config b/rebar.config index e097a4735..4528769b2 100644 --- a/rebar.config +++ b/rebar.config @@ -54,5 +54,5 @@ {deps_ee, [ {riak_repl_pb_api,".*",{git,"git@github.com:basho/riak_repl_pb_api.git", {tag, "2.1.0"}}}, - {riak_cs_multibag,".*",{git,"git@github.com:basho/riak_cs_multibag.git", {tag, "2.0.0"}}} + {riak_cs_multibag,".*",{git,"git@github.com:basho/riak_cs_multibag.git", {tag, "2.1.0-pre1"}}} ]}.