summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Vatamaniuc <vatamane@apache.org>2020-07-13 11:07:55 -0400
committerNick Vatamaniuc <vatamane@apache.org>2020-07-13 11:07:55 -0400
commitbe93776483d02428a63985ec76cb448f054b2642 (patch)
tree81f58c1b0fd26e1484d9612568ab8fed96c2f551
parent8c572bf45744e83c095fe56ffaf7a3c465bf16b9 (diff)
downloadcouchdb-3.x-fix-compaction-emsort-clause-error.tar.gz
Fix compactor bind_emsort clause3.x-fix-compaction-emsort-clause-error
When compactor finds an old compaction file, before the state was upgraded to a a proplist, the state will be `Root` from `emsort`, which is a `{BB, Prev}` tuple not an integer.
-rw-r--r--src/couch/src/couch_bt_engine_compactor.erl5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/couch/src/couch_bt_engine_compactor.erl b/src/couch/src/couch_bt_engine_compactor.erl
index 4bed49c7c..3e356e2e3 100644
--- a/src/couch/src/couch_bt_engine_compactor.erl
+++ b/src/couch/src/couch_bt_engine_compactor.erl
@@ -628,8 +628,9 @@ commit_compaction_data(#st{header = OldHeader} = St0, Fd) ->
bind_emsort(St, Fd, nil) ->
{ok, Ems} = couch_emsort:open(Fd),
St#st{id_tree=Ems};
-bind_emsort(St, Fd, State) when is_integer(State) ->
- bind_emsort(St, Fd, [{root, State}]);
+bind_emsort(St, Fd, {BB, _} = Root) when is_list(BB) ->
+ % Upgrade clause when we find old compaction files
+ bind_emsort(St, Fd, [{root, Root}]);
bind_emsort(St, Fd, State) ->
{ok, Ems} = couch_emsort:open(Fd, State),
St#st{id_tree=Ems}.