From 96560a1ed5b87f7e2b1ab5c5e67852d92f2747e5 Mon Sep 17 00:00:00 2001 From: jiangphcn Date: Mon, 23 Apr 2018 15:48:34 +0800 Subject: Failed to re-visit btree after re-compaction Bugzid: 104903 --- src/couch/src/couch_bt_engine_compactor.erl | 7 +++++++ src/couch/src/test_engine_util.erl | 10 ++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/couch/src/couch_bt_engine_compactor.erl b/src/couch/src/couch_bt_engine_compactor.erl index 4e52064b4..577d6cdd7 100644 --- a/src/couch/src/couch_bt_engine_compactor.erl +++ b/src/couch/src/couch_bt_engine_compactor.erl @@ -54,6 +54,13 @@ start(#st{} = St, DbName, Options, Parent) -> % and hope everything works out for the best. unlink(DFd), + %%%%%%%%%%%%%%%%%%%%%%%%%%%% + case couch_db:open_int(DbName, [?ADMIN_CTX]) of + {ok, Db} -> couch_db:close(Db); + Else -> throw(Else) + end, + %%%%%%%%%%%%%%%%%%%%%%%%%%%% + NewSt1 = copy_purge_info(St, NewSt), NewSt2 = copy_compact(DbName, St, NewSt1, Retry), NewSt3 = sort_meta_data(NewSt2), diff --git a/src/couch/src/test_engine_util.erl b/src/couch/src/test_engine_util.erl index 89997538d..b2bfea85d 100644 --- a/src/couch/src/test_engine_util.erl +++ b/src/couch/src/test_engine_util.erl @@ -82,7 +82,8 @@ rootdir() -> dbpath() -> - binary_to_list(filename:join(rootdir(), couch_uuids:random())). + binary_to_list(filename:join(rootdir(), + list_to_binary("a" ++ binary_to_list(couch_uuids:random()) ++ ".couch"))). get_engine() -> @@ -565,8 +566,9 @@ list_diff([T1 | R1], [T2 | R2]) -> compact(Engine, St1, DbPath) -> - DbName = filename:basename(DbPath), - {ok, St2, Pid} = Engine:start_compaction(St1, DbName, [], self()), + DbName1 = filename:basename(DbPath), + DbName2 = filename:rootname(DbName1), + {ok, St2, Pid} = Engine:start_compaction(St1, ?l2b(DbName2), [], self()), Ref = erlang:monitor(process, Pid), % Ideally I'd assert that Pid is linked to us @@ -583,7 +585,7 @@ compact(Engine, St1, DbPath) -> erlang:error(compactor_timed_out) end, - {ok, St2, DbName, Pid, Term}. + {ok, St2, DbName2, Pid, Term}. with_config(Config, Fun) -> -- cgit v1.2.1