diff options
author | Eric Avdey <eiri@eiri.ca> | 2019-03-18 12:55:51 -0300 |
---|---|---|
committer | Eric Avdey <eiri@eiri.ca> | 2019-03-28 16:56:48 -0300 |
commit | 4f31cdce5dd078e7699739fdc65979c8cd935f1e (patch) | |
tree | ef7ff5f383368bff81cee199edfb449297484030 | |
parent | 56a9d1bfa335f95b4acbd55616e58c1a3abb68a4 (diff) | |
download | couchdb-4f31cdce5dd078e7699739fdc65979c8cd935f1e.tar.gz |
Reuse pre-calculated external docs' size on compaction
-rw-r--r-- | src/couch/src/couch_bt_engine_compactor.erl | 12 |
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, |