Merge remote branch 'cloudant:43260-create-target-shard-if-missing'
This closes #21
Signed-off-by: ILYA Khlopotov <iilyak@ca.ibm.com>
diff --git a/src/mem3_rpc.erl b/src/mem3_rpc.erl
index c7952b9..93cb99a 100644
--- a/src/mem3_rpc.erl
+++ b/src/mem3_rpc.erl
@@ -60,7 +60,7 @@
load_checkpoint_rpc(DbName, SourceNode, SourceUUID) ->
erlang:put(io_priority, {internal_repl, DbName}),
- case couch_db:open_int(DbName, [?ADMIN_CTX]) of
+ case get_or_create_db(DbName, [?ADMIN_CTX]) of
{ok, Db} ->
TargetUUID = couch_db:get_uuid(Db),
NewId = mem3_rep:make_local_id(SourceUUID, TargetUUID),
@@ -83,7 +83,7 @@
save_checkpoint_rpc(DbName, Id, SourceSeq, NewEntry0, History0) ->
erlang:put(io_priority, {internal_repl, DbName}),
- case couch_db:open_int(DbName, [?ADMIN_CTX]) of
+ case get_or_create_db(DbName, [?ADMIN_CTX]) of
{ok, #db{update_seq = TargetSeq} = Db} ->
NewEntry = {[
{<<"target_node">>, atom_to_binary(node(), utf8)},
@@ -113,7 +113,7 @@
find_common_seq_rpc(DbName, SourceUUID, SourceEpochs) ->
erlang:put(io_priority, {internal_repl, DbName}),
- case couch_db:open_int(DbName, [?ADMIN_CTX]) of
+ case get_or_create_db(DbName, [?ADMIN_CTX]) of
{ok, Db} ->
case couch_db:get_uuid(Db) of
SourceUUID ->
@@ -275,6 +275,10 @@
end.
+get_or_create_db(DbName, Options) ->
+ couch_db:open_int(DbName, [{create_if_missing, true} | Options]).
+
+
-ifdef(TEST).
-include_lib("eunit/include/eunit.hrl").