summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Avdey <eiri@eiri.ca>2019-03-18 12:55:51 -0300
committerEric Avdey <eiri@eiri.ca>2019-03-28 16:56:48 -0300
commit4f31cdce5dd078e7699739fdc65979c8cd935f1e (patch)
treeef7ff5f383368bff81cee199edfb449297484030
parent56a9d1bfa335f95b4acbd55616e58c1a3abb68a4 (diff)
downloadcouchdb-4f31cdce5dd078e7699739fdc65979c8cd935f1e.tar.gz
Reuse pre-calculated external docs' size on compaction
-rw-r--r--src/couch/src/couch_bt_engine_compactor.erl12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/couch/src/couch_bt_engine_compactor.erl b/src/couch/src/couch_bt_engine_compactor.erl
index 737f77245..0b3fb22ef 100644
--- a/src/couch/src/couch_bt_engine_compactor.erl
+++ b/src/couch/src/couch_bt_engine_compactor.erl
@@ -297,13 +297,13 @@ copy_docs(St, #st{} = NewSt, MixedInfos, Retry) ->
{NewRevTree, FinalAcc} = couch_key_tree:mapfold(fun
({RevPos, RevId}, #leaf{ptr=Sp}=Leaf, leaf, SizesAcc) ->
{Body, AttInfos} = copy_doc_attachments(St, Sp, NewSt),
- % In the future, we should figure out how to do this for
- % upgrade purposes.
- ExternalSize = case is_binary(Body) of
- true ->
+ #size_info{external = OldExternalSize} = Leaf#leaf.sizes,
+ ExternalSize = case OldExternalSize of
+ 0 when is_binary(Body) ->
couch_compress:uncompressed_size(Body);
- false ->
- ?term_size(Body)
+ 0 ->
+ couch_ejson_size:encoded_size(Body);
+ N -> N
end,
Doc0 = #doc{
id = Info#full_doc_info.id,