You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by ji...@apache.org on 2018/08/09 02:46:50 UTC
[couchdb] 04/06: Fix race on couch_db:reopen/1
This is an automated email from the ASF dual-hosted git repository.
jiangphcn pushed a commit to branch COUCHDB-3326-clustered-purge-pr2-simplify-mem3-rep
in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit 4c99758f1cf91eb2d6c294c53a4893329f2f9610
Author: Paul J. Davis <pa...@gmail.com>
AuthorDate: Thu Apr 26 11:39:58 2018 -0500
Fix race on couch_db:reopen/1
This fixes a minor race by opening the database before closing it. This
was never found to be an issue in production and was just caught while
contemplating the PSE test suite.
---
src/couch/src/couch_db.erl | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/src/couch/src/couch_db.erl b/src/couch/src/couch_db.erl
index 65ca54a..40c673a 100644
--- a/src/couch/src/couch_db.erl
+++ b/src/couch/src/couch_db.erl
@@ -161,8 +161,11 @@ reopen(#db{} = Db) ->
% We could have just swapped out the storage engine
% for this database during a compaction so we just
% reimplement this as a close/open pair now.
- close(Db),
- open(Db#db.name, [{user_ctx, Db#db.user_ctx} | Db#db.options]).
+ try
+ open(Db#db.name, [{user_ctx, Db#db.user_ctx} | Db#db.options])
+ after
+ close(Db)
+ end.
% You shouldn't call this. Its part of the ref counting between