This is an automated email from the ASF dual-hosted git repository. davisp pushed a commit to branch prototype/fdb-layer-get-dbs-info in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit 647bf90c561fe06cd3f6664db4e6842c1ca22456 Author: Paul J. Davis <paul.joseph.da...@gmail.com> AuthorDate: Tue Dec 3 10:32:36 2019 -0600 Expose rolled up view size in dbinfo blobs This allows users to see the total view size for a given database with a single HTTP request. --- src/fabric/src/fabric2_fdb.erl | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/src/fabric/src/fabric2_fdb.erl b/src/fabric/src/fabric2_fdb.erl index 643f839..39b902f 100644 --- a/src/fabric/src/fabric2_fdb.erl +++ b/src/fabric/src/fabric2_fdb.erl @@ -346,26 +346,26 @@ get_info(#{} = Db) -> end, CProp = {update_seq, RawSeq}, - MProps = lists:flatmap(fun({K, V}) -> + MProps = lists:foldl(fun({K, V}, Acc) -> case erlfdb_tuple:unpack(K, DbPrefix) of {?DB_STATS, <<"doc_count">>} -> - [{doc_count, ?bin2uint(V)}]; + [{doc_count, ?bin2uint(V)} | Acc]; {?DB_STATS, <<"doc_del_count">>} -> - [{doc_del_count, ?bin2uint(V)}]; + [{doc_del_count, ?bin2uint(V)} | Acc]; {?DB_STATS, <<"size">>} -> Val = ?bin2uint(V), - [ - {other, {[{data_size, Val}]}}, - {sizes, {[ - {active, 0}, - {external, Val}, - {file, 0} - ]}} - ]; + {_, {Sizes}} = lists:keyfind(sizes, 1, Acc), + NewSizes = [{external, Val} | Sizes], + lists:keystore(sizes, 1, Acc, {sizes, {NewSizes}}); + {?DB_STATS, <<"view_size">>} -> + Val = ?bin2uint(V), + {_, {Sizes}} = lists:keyfind(sizes, 1, Acc), + NewSizes = [{views, Val} | Sizes], + lists:keystore(sizes, 1, Acc, {sizes, {NewSizes}}); {?DB_STATS, _} -> - [] + Acc end - end, erlfdb:wait(MetaFuture)), + end, [{sizes, {[]}}], erlfdb:wait(MetaFuture)), [CProp | MProps].