diff options
author | Russell Branca <chewbranca@apache.org> | 2021-06-24 16:58:21 -0700 |
---|---|---|
committer | Russell Branca <chewbranca@apache.org> | 2021-06-24 16:58:21 -0700 |
commit | b518f753339f9efa70ac82187afacd3b1d57cfed (patch) | |
tree | 009513f41a73f9351740589ccf86b5a7edae4091 | |
parent | afcb455ce9295a36fc0435d7a27cae36b2f263dd (diff) | |
download | couchdb-3631-3.x-fix-pq-shard-creation-alt.tar.gz |
Alternative approach for mem3 shard creation3631-3.x-fix-pq-shard-creation-alt
-rw-r--r-- | src/fabric/src/fabric_rpc.erl | 2 | ||||
-rw-r--r-- | src/fabric/src/fabric_util.erl | 4 | ||||
-rw-r--r-- | src/mem3/src/mem3_util.erl | 11 |
3 files changed, 9 insertions, 8 deletions
diff --git a/src/fabric/src/fabric_rpc.erl b/src/fabric/src/fabric_rpc.erl index 7776bd9fe..f58f4bced 100644 --- a/src/fabric/src/fabric_rpc.erl +++ b/src/fabric/src/fabric_rpc.erl @@ -304,7 +304,7 @@ reset_validation_funs(DbName) -> open_shard(Name, Opts) -> set_io_priority(Name, Opts), try - rexi:reply(couch_db:open(Name, Opts)) + rexi:reply(mem3_util:get_or_create_db(Name, Opts)) catch exit:{timeout, _} -> couch_stats:increment_counter([fabric, open_shard, timeouts]) end. diff --git a/src/fabric/src/fabric_util.erl b/src/fabric/src/fabric_util.erl index e528261ce..84ffef122 100644 --- a/src/fabric/src/fabric_util.erl +++ b/src/fabric/src/fabric_util.erl @@ -105,9 +105,7 @@ get_db(DbName, Options) -> Nodes = [node()|erlang:nodes()], Live = [S || #shard{node = N} = S <- Shards, lists:member(N, Nodes)], Factor = list_to_integer(config:get("fabric", "shard_timeout_factor", "2")), - Options1 = [{create_if_missing, true} | Options], - Options2 = mem3_util:add_db_config_options(DbName, Options1), - get_shard(Live, Options2, 100, Factor). + get_shard(Live, Options, 100, Factor). get_shard([], _Opts, _Timeout, _Factor) -> erlang:error({internal_server_error, "No DB shards could be opened."}); diff --git a/src/mem3/src/mem3_util.erl b/src/mem3/src/mem3_util.erl index 9a953f895..d56c55cac 100644 --- a/src/mem3/src/mem3_util.erl +++ b/src/mem3/src/mem3_util.erl @@ -18,7 +18,6 @@ -export([is_deleted/1, rotate_list/2]). -export([get_shard_opts/1, get_engine_opt/1, get_props_opt/1]). -export([get_shard_props/1, find_dirty_shards/0]). --export([add_db_config_options/2]). -export([ iso8601_timestamp/0, live_nodes/0, @@ -521,15 +520,19 @@ add_db_config_options(DbName, Options) -> merge_opts(DbOpts, Options). -get_or_create_db(DbName, Options) -> - case couch_db:open_int(DbName, Options) of +get_or_create_db(DbName, Options0) -> + Options = case proplists:get_value(user_ctx, Options0, undefined) of + undefined -> [?ADMIN_CTX | Options0]; + _ -> Options0 + end, + case couch_db:open(DbName, Options) of {ok, _} = OkDb -> OkDb; {not_found, no_db_file} -> try Options1 = [{create_if_missing, true} | Options], Options2 = add_db_config_options(DbName, Options1), - couch_db:open_int(DbName, Options2) + couch_db:open(DbName, Options2) catch error:database_does_not_exist -> throw({error, missing_target}) end; |