diff options
author | Eric Avdey <eiri@eiri.ca> | 2019-03-29 08:44:52 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-29 08:44:52 -0300 |
commit | 3227e61ebbe6ee15d122036ec85b57ebffeb062d (patch) | |
tree | ef7ff5f383368bff81cee199edfb449297484030 | |
parent | 9d7a56ea59a8d787249defc00666eb471395a7ad (diff) | |
parent | 4f31cdce5dd078e7699739fdc65979c8cd935f1e (diff) | |
download | couchdb-3227e61ebbe6ee15d122036ec85b57ebffeb062d.tar.gz |
Merge pull request #1983 from cloudant/fix-external-docs-size
More precise calculation of external docs' size
-rw-r--r-- | src/couch/src/couch_bt_engine_compactor.erl | 12 | ||||
-rw-r--r-- | src/couch/src/couch_db.erl | 2 |
2 files changed, 7 insertions, 7 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, diff --git a/src/couch/src/couch_db.erl b/src/couch/src/couch_db.erl index bdb9dfeca..a40f1131e 100644 --- a/src/couch/src/couch_db.erl +++ b/src/couch/src/couch_db.erl @@ -1359,7 +1359,7 @@ prepare_doc_summaries(Db, BucketList) -> meta = [ {size_info, SizeInfo}, {atts_stream, AttsStream}, - {ejson_size, ?term_size(Body)} + {ejson_size, couch_ejson_size:encoded_size(Body)} ] ++ Doc0#doc.meta }, couch_db_engine:serialize_doc(Db, Doc1) |