You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by fd...@apache.org on 2011/04/28 22:12:59 UTC
svn commit: r1097594 - /couchdb/trunk/src/couchdb/couch_db.erl
Author: fdmanana
Date: Thu Apr 28 20:12:58 2011
New Revision: 1097594
URL: http://svn.apache.org/viewvc?rev=1097594&view=rev
Log:
Include local docs btree size in the database data_size field computation
Modified:
couchdb/trunk/src/couchdb/couch_db.erl
Modified: couchdb/trunk/src/couchdb/couch_db.erl
URL: http://svn.apache.org/viewvc/couchdb/trunk/src/couchdb/couch_db.erl?rev=1097594&r1=1097593&r2=1097594&view=diff
==============================================================================
--- couchdb/trunk/src/couchdb/couch_db.erl (original)
+++ couchdb/trunk/src/couchdb/couch_db.erl Thu Apr 28 20:12:58 2011
@@ -254,7 +254,8 @@ get_db_info(Db) ->
instance_start_time=StartTime,
committed_update_seq=CommittedUpdateSeq,
fulldocinfo_by_id_btree = IdBtree,
- docinfo_by_seq_btree = SeqBtree
+ docinfo_by_seq_btree = SeqBtree,
+ local_docs_btree = LocalBtree
} = Db,
{ok, Size} = couch_file:bytes(Fd),
{ok, DbReduction} = couch_btree:full_reduce(by_id_btree(Db)),
@@ -266,25 +267,30 @@ get_db_info(Db) ->
{purge_seq, couch_db:get_purge_seq(Db)},
{compact_running, Compactor/=nil},
{disk_size, Size},
- {data_size, db_data_size(
- couch_btree:size(SeqBtree), couch_btree:size(IdBtree), DbReduction)},
+ {data_size, db_data_size(DbReduction, [SeqBtree, IdBtree, LocalBtree])},
{instance_start_time, StartTime},
{disk_format_version, DiskVersion},
{committed_update_seq, CommittedUpdateSeq}
],
{ok, InfoList}.
-db_data_size(nil, _, _) ->
- null;
-db_data_size(_, nil, _) ->
- null;
-db_data_size(_, _, {_Count, _DelCount}) ->
+db_data_size({_Count, _DelCount}, _Trees) ->
% pre 1.2 format, upgraded on compaction
null;
-db_data_size(_, _, {_Count, _DelCount, nil}) ->
+db_data_size({_Count, _DelCount, nil}, _Trees) ->
null;
-db_data_size(SeqBtreeSize, IdBtreeSize, {_Count, _DelCount, DocAndAttsSize}) ->
- SeqBtreeSize + IdBtreeSize + DocAndAttsSize.
+db_data_size({_Count, _DelCount, DocAndAttsSize}, Trees) ->
+ sum_tree_sizes(DocAndAttsSize, Trees).
+
+sum_tree_sizes(Acc, []) ->
+ Acc;
+sum_tree_sizes(Acc, [T | Rest]) ->
+ case couch_btree:size(T) of
+ nil ->
+ null;
+ Sz ->
+ sum_tree_sizes(Acc + Sz, Rest)
+ end.
get_design_docs(Db) ->
{ok,_, Docs} = couch_btree:fold(by_id_btree(Db),