Cleanup mem3_util db creation logic
diff --git a/src/dreyfus/src/dreyfus_rpc.erl b/src/dreyfus/src/dreyfus_rpc.erl
index fe17e7d..786af63 100644
--- a/src/dreyfus/src/dreyfus_rpc.erl
+++ b/src/dreyfus/src/dreyfus_rpc.erl
@@ -102,15 +102,8 @@
end.
get_or_create_db(DbName, Options) ->
- DbOpts = mem3_shards:opts_for_db(DbName),
- Options1 = mem3_util:merge_opts(DbOpts, Options),
- case couch_db:open_int(DbName, Options) of
- {not_found, no_db_file} ->
- couch_log:warning("~p creating ~s", [?MODULE, DbName]),
- couch_server:create(DbName, Options1);
- Else ->
- Else
- end.
+ mem3_util:get_or_create_db(DbName, Options).
+
calculate_seqs(Db, Stale) ->
LastSeq = couch_db:get_update_seq(Db),
diff --git a/src/fabric/src/fabric_util.erl b/src/fabric/src/fabric_util.erl
index 88f439b..e528261 100644
--- a/src/fabric/src/fabric_util.erl
+++ b/src/fabric/src/fabric_util.erl
@@ -105,9 +105,8 @@
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")),
- DbOpts = mem3_shards:opts_for_db(DbName),
Options1 = [{create_if_missing, true} | Options],
- Options2 = mem3_util:merge_opts(DbOpts, Options1),
+ Options2 = mem3_util:add_db_config_options(DbName, Options1),
get_shard(Live, Options2, 100, Factor).
get_shard([], _Opts, _Timeout, _Factor) ->
diff --git a/src/mem3/src/mem3_util.erl b/src/mem3/src/mem3_util.erl
index 097b3d8..9a953f8 100644
--- a/src/mem3/src/mem3_util.erl
+++ b/src/mem3/src/mem3_util.erl
@@ -16,8 +16,9 @@
n_val/2, q_val/1, to_atom/1, to_integer/1, write_db_doc/1, delete_db_doc/1,
shard_info/1, ensure_exists/1, open_db_doc/1, get_or_create_db/2]).
-export([is_deleted/1, rotate_list/2]).
--export([get_shard_opts/1, get_engine_opt/1, get_props_opt/1, merge_opts/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,
@@ -512,18 +513,22 @@
B1 =< B2.
+add_db_config_options(DbName, Options) ->
+ DbOpts = case mem3:dbname(DbName) of
+ DbName -> [];
+ MDbName -> mem3_shards:opts_for_db(MDbName)
+ end,
+ merge_opts(DbOpts, Options).
+
+
get_or_create_db(DbName, Options) ->
case couch_db:open_int(DbName, Options) of
{ok, _} = OkDb ->
OkDb;
{not_found, no_db_file} ->
try
- DbOpts = case mem3:dbname(DbName) of
- DbName -> [];
- MDbName -> mem3_shards:opts_for_db(MDbName)
- end,
Options1 = [{create_if_missing, true} | Options],
- Options2 = merge_opts(DbOpts, Options1),
+ Options2 = add_db_config_options(DbName, Options1),
couch_db:open_int(DbName, Options2)
catch error:database_does_not_exist ->
throw({error, missing_target})