summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul J. Davis <paul.joseph.davis@gmail.com>2019-04-26 14:15:40 -0500
committerPaul J. Davis <paul.joseph.davis@gmail.com>2019-04-26 14:15:40 -0500
commit09f8827dd7ec70e6c33b1a143dd6db564a5e8f46 (patch)
tree55cc28c1a6723c7b4eaf676affa6c187619f0c32
parentd0069c322f397be11f09cb68d3e536b0dfc665f6 (diff)
downloadcouchdb-09f8827dd7ec70e6c33b1a143dd6db564a5e8f46.tar.gz
Remove databases from the cache after deletion
-rw-r--r--src/fabric/src/fabric2_db.erl7
-rw-r--r--src/fabric/src/fabric2_server.erl8
2 files changed, 12 insertions, 3 deletions
diff --git a/src/fabric/src/fabric2_db.erl b/src/fabric/src/fabric2_db.erl
index 88975e14f..d6d49819f 100644
--- a/src/fabric/src/fabric2_db.erl
+++ b/src/fabric/src/fabric2_db.erl
@@ -175,9 +175,12 @@ open(DbName, Options) ->
delete(DbName, Options) ->
% This will throw if the db does not exist
{ok, Db} = open(DbName, Options),
- fabric2_fdb:transactional(Db, fun(TxDb) ->
+ Resp = fabric2_fdb:transactional(Db, fun(TxDb) ->
fabric2_fdb:delete(TxDb)
- end).
+ end),
+ if Resp /= ok -> Resp; true ->
+ fabric2_server:remove(DbName)
+ end.
list_dbs() ->
diff --git a/src/fabric/src/fabric2_server.erl b/src/fabric/src/fabric2_server.erl
index 922acb19d..5b826cd14 100644
--- a/src/fabric/src/fabric2_server.erl
+++ b/src/fabric/src/fabric2_server.erl
@@ -18,7 +18,8 @@
-export([
start_link/0,
fetch/1,
- store/1
+ store/1,
+ remove/1
]).
@@ -58,6 +59,11 @@ store(#{name := DbName} = Db0) when is_binary(DbName) ->
ok.
+remove(DbName) when is_binary(DbName) ->
+ true = ets:delete(?MODULE, DbName),
+ ok.
+
+
init(_) ->
ets:new(?MODULE, [
public,