This is an automated email from the ASF dual-hosted git repository. eiri pushed a commit to branch aegis_db_info in repository https://gitbox.apache.org/repos/asf/couchdb.git
commit 96d3524762207edf09104563c5c2abdb3320189c Author: Eric Avdey <e...@eiri.ca> AuthorDate: Thu May 14 09:41:08 2020 -0300 Add aegis info to db_info --- src/aegis/src/aegis.erl | 5 +++++ src/aegis/src/aegis_key_manager.erl | 3 +++ src/aegis/src/aegis_noop_key_manager.erl | 7 ++++++- src/fabric/src/fabric2_fdb.erl | 13 ++++++++++--- 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/aegis/src/aegis.erl b/src/aegis/src/aegis.erl index e8a0b4b..c158c25 100644 --- a/src/aegis/src/aegis.erl +++ b/src/aegis/src/aegis.erl @@ -20,6 +20,7 @@ -export([ init_db/2, open_db/1, + get_db_info/1, decrypt/2, decrypt/3, @@ -39,6 +40,10 @@ open_db(#{} = Db) -> }. +get_db_info(#{} = Db) -> + ?AEGIS_KEY_MANAGER:get_db_info(Db). + + encrypt(#{} = _Db, _Key, <<>>) -> <<>>; diff --git a/src/aegis/src/aegis_key_manager.erl b/src/aegis/src/aegis_key_manager.erl index aa9e342..cc21493 100644 --- a/src/aegis/src/aegis_key_manager.erl +++ b/src/aegis/src/aegis_key_manager.erl @@ -20,3 +20,6 @@ -callback open_db(Db :: #{}) -> {ok, binary()} | false. + + +-callback get_db_info(Db :: #{}) -> list(). diff --git a/src/aegis/src/aegis_noop_key_manager.erl b/src/aegis/src/aegis_noop_key_manager.erl index 2b61f1d..795fafe 100644 --- a/src/aegis/src/aegis_noop_key_manager.erl +++ b/src/aegis/src/aegis_noop_key_manager.erl @@ -18,7 +18,8 @@ -export([ init_db/2, - open_db/1 + open_db/1, + get_db_info/1 ]). @@ -29,3 +30,7 @@ init_db(#{} = _Db, _Options) -> open_db(#{} = _Db) -> false. + + +get_db_info(#{} = _Db) -> + [{encrypted, false}]. diff --git a/src/fabric/src/fabric2_fdb.erl b/src/fabric/src/fabric2_fdb.erl index 8264e8a..970f78b 100644 --- a/src/fabric/src/fabric2_fdb.erl +++ b/src/fabric/src/fabric2_fdb.erl @@ -105,6 +105,7 @@ db_prefix, changes_future, meta_future, + aegis_future, retries = 0 }). @@ -499,6 +500,8 @@ get_info_future(Tx, DbPrefix) -> StatsPrefix = erlfdb_tuple:pack({?DB_STATS}, DbPrefix), MetaFuture = erlfdb:get_range_startswith(Tx, StatsPrefix), + AegisFuture = aegis:get_db_info(#{tx => Tx, db_prefix => DbPrefix}), + % Save the tx object only if it's read-only as we might retry to get the % future again after the tx was reset SaveTx = case erlfdb:get_writes_allowed(Tx) of @@ -510,7 +513,8 @@ get_info_future(Tx, DbPrefix) -> tx = SaveTx, db_prefix = DbPrefix, changes_future = ChangesFuture, - meta_future = MetaFuture + meta_future = MetaFuture, + aegis_future = AegisFuture }. @@ -1998,7 +2002,8 @@ get_info_wait_int(#info_future{} = InfoFuture) -> #info_future{ db_prefix = DbPrefix, changes_future = ChangesFuture, - meta_future = MetaFuture + meta_future = MetaFuture, + aegis_future = AegisFuture } = InfoFuture, RawSeq = case erlfdb:wait(ChangesFuture) of @@ -2010,6 +2015,8 @@ get_info_wait_int(#info_future{} = InfoFuture) -> end, CProp = {update_seq, RawSeq}, + AProps = erlfdb:wait(AegisFuture), + MProps = lists:foldl(fun({K, V}, Acc) -> case erlfdb_tuple:unpack(K, DbPrefix) of {?DB_STATS, <<"doc_count">>} -> @@ -2026,7 +2033,7 @@ get_info_wait_int(#info_future{} = InfoFuture) -> end end, [{sizes, {[]}}], erlfdb:wait(MetaFuture)), - [CProp | MProps]. + lists:append(AProps, [CProp | MProps]). binary_chunk_size() ->