[review] Delete dbs synchronously For the test suite this should minimize the "file exists" errors that we see. Theoretically maybe.
Project: http://git-wip-us.apache.org/repos/asf/couchdb-couch/repo Commit: http://git-wip-us.apache.org/repos/asf/couchdb-couch/commit/fbff267b Tree: http://git-wip-us.apache.org/repos/asf/couchdb-couch/tree/fbff267b Diff: http://git-wip-us.apache.org/repos/asf/couchdb-couch/diff/fbff267b Branch: refs/heads/import Commit: fbff267b315572541e17139e4abc1abe5ba8f006 Parents: 48a3427 Author: Paul J. Davis <[email protected]> Authored: Wed Mar 13 02:36:33 2013 -0500 Committer: Paul J. Davis <[email protected]> Committed: Fri Jan 17 16:44:32 2014 -0800 ---------------------------------------------------------------------- src/couch_httpd_db.erl | 6 +++++- src/couch_server.erl | 6 ++++-- 2 files changed, 9 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/couchdb-couch/blob/fbff267b/src/couch_httpd_db.erl ---------------------------------------------------------------------- diff --git a/src/couch_httpd_db.erl b/src/couch_httpd_db.erl index c70245c..50fba6c 100644 --- a/src/couch_httpd_db.erl +++ b/src/couch_httpd_db.erl @@ -220,7 +220,11 @@ create_db_req(#httpd{user_ctx=UserCtx}=Req, DbName) -> delete_db_req(#httpd{user_ctx=UserCtx}=Req, DbName) -> ok = couch_httpd:verify_is_server_admin(Req), - case couch_server:delete(DbName, [{user_ctx, UserCtx}]) of + Options = case couch_httpd:qs_value(Req, "sync") of + "true" -> [sync, {user_ctx, UserCtx}]; + _ -> [{user_ctx, UserCtx}] + end, + case couch_server:delete(DbName, Options) of ok -> send_json(Req, 200, {[{ok, true}]}); Error -> http://git-wip-us.apache.org/repos/asf/couchdb-couch/blob/fbff267b/src/couch_server.erl ---------------------------------------------------------------------- diff --git a/src/couch_server.erl b/src/couch_server.erl index c23ec05..3d4a1a6 100644 --- a/src/couch_server.erl +++ b/src/couch_server.erl @@ -408,7 +408,7 @@ handle_call({create, DbName, Options}, From, Server) -> Error -> {reply, Error, Server} end; -handle_call({delete, DbName, _Options}, _From, Server) -> +handle_call({delete, DbName, Options}, _From, Server) -> DbNameList = binary_to_list(DbName), case check_dbname(Server, DbNameList) of ok -> @@ -436,7 +436,9 @@ handle_call({delete, DbName, _Options}, _From, Server) -> end, [".compact", ".compact.data", ".compact.meta"]), couch_file:delete(Server#server.root_dir, FullFilepath ++ ".compact"), - case couch_file:delete(Server#server.root_dir, FullFilepath) of + Async = not lists:member(sync, Options), + + case couch_file:delete(Server#server.root_dir, FullFilepath, Async) of ok -> couch_db_update_notifier:notify({deleted, DbName}), {reply, ok, Server2};
