diff options
author | Paul J. Davis <paul.joseph.davis@gmail.com> | 2019-04-26 14:15:40 -0500 |
---|---|---|
committer | Paul J. Davis <paul.joseph.davis@gmail.com> | 2019-04-26 14:15:40 -0500 |
commit | 09f8827dd7ec70e6c33b1a143dd6db564a5e8f46 (patch) | |
tree | 55cc28c1a6723c7b4eaf676affa6c187619f0c32 | |
parent | d0069c322f397be11f09cb68d3e536b0dfc665f6 (diff) | |
download | couchdb-09f8827dd7ec70e6c33b1a143dd6db564a5e8f46.tar.gz |
Remove databases from the cache after deletion
-rw-r--r-- | src/fabric/src/fabric2_db.erl | 7 | ||||
-rw-r--r-- | src/fabric/src/fabric2_server.erl | 8 |
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, |