[Tarantool-patches] [PATCH] feedback_daemon: add synchro replication usage reporting

Serge Petrenko sergepetrenko at tarantool.org
Tue Oct 20 22:16:15 MSK 2020


20.10.2020 20:09, Илья Конюхов пишет:
> Hi,
>
> Please increment "feedback_version" each time you patch feedback daemon report. You can do it here - https://github.com/tarantool/tarantool/blob/cf6a9c64dea6a4385f3fd4719e44d0d9dc9ffee9/src/box/lua/feedback_daemon.lua#L359
Hi! Thanks for your answer, done.
>> 13 окт. 2020 г., в 16:34, Serge Petrenko <sergepetrenko at tarantool.org> написал(а):
>>
>> ---
>> https://github.com/tarantool/tarantool/tree/sp/feedback_daemon_synchro
>>
>> src/box/lua/feedback_daemon.lua       | 12 ++++++++++++
>> test/box-tap/feedback_daemon.test.lua | 21 ++++++++++++++++++---
>> 2 files changed, 30 insertions(+), 3 deletions(-)
>>
>> diff --git a/src/box/lua/feedback_daemon.lua b/src/box/lua/feedback_daemon.lua
>> index 179e8fb47..aa296c445 100644
>> --- a/src/box/lua/feedback_daemon.lua
>> +++ b/src/box/lua/feedback_daemon.lua
>> @@ -150,6 +150,7 @@ local function fill_in_schema_stats_impl(schema)
>>          vinyl     = 0,
>>          temporary = 0,
>>          ['local'] = 0,
>> +        sync      = 0,
>>      }
>>
>>      local indices = {
>> @@ -188,6 +189,9 @@ local function fill_in_schema_stats_impl(schema)
>>          if space.is_local then
>>              spaces['local'] = spaces['local'] + 1
>>          end
>> +        if space.is_sync then
>> +            spaces.sync = spaces.sync + 1
>> +        end
>>          fill_in_indices_stats(space, indices)
>>
>>          fiber.yield()
>> @@ -222,10 +226,18 @@ local function fill_in_features(feedback)
>>      fill_in_schema_stats(feedback.features)
>> end
>>
>> +local function fill_in_options(feedback)
>> +    local options = {}
>> +    options.election_mode = box.cfg.election_mode
>> +    options.synchro_quorum = box.cfg.replication_synchro_quorum
>> +    feedback.options = options
>> +end
>> +
>> local function fill_in_feedback(feedback)
>>      fill_in_base_info(feedback)
>>      fill_in_platform_info(feedback)
>>      fill_in_features(feedback)
>> +    fill_in_options(feedback)
>>
>>      return feedback
>> end
>> diff --git a/test/box-tap/feedback_daemon.test.lua b/test/box-tap/feedback_daemon.test.lua
>> index a04995d8a..c1ae5f81b 100755
>> --- a/test/box-tap/feedback_daemon.test.lua
>> +++ b/test/box-tap/feedback_daemon.test.lua
>> @@ -67,7 +67,7 @@ if not ok then
>>      os.exit(0)
>> end
>>
>> -test:plan(19)
>> +test:plan(21)
>>
>> local function check(message)
>>      while feedback_count < 1 do
>> @@ -152,6 +152,7 @@ local expected = {
>>      vinyl_spaces = 0,
>>      temporary_spaces = 0,
>>      local_spaces = 0,
>> +    sync_spaces = 0,
>>      tree_indices = 0,
>>      rtree_indices = 0,
>>      hash_indices = 0,
>> @@ -168,6 +169,7 @@ box.schema.create_space('features_vinyl', {engine = 'vinyl'})
>> box.schema.create_space('features_memtx_empty')
>> box.schema.create_space('features_memtx',
>>          {engine = 'memtx', is_local = true, temporary = true})
>> +box.schema.create_space('features_sync', {is_sync=true})
>> box.space.features_vinyl:create_index('vinyl_pk', {type = 'tree'})
>> box.space.features_memtx:create_index('memtx_pk', {type = 'tree'})
>> box.space.features_memtx:create_index('memtx_hash', {type = 'hash'})
>> @@ -195,11 +197,12 @@ box.space.features_memtx:create_index('functional_multikey',
>> actual = daemon.generate_feedback()
>> local schema_stats = actual.features.schema
>> test:test('features.schema', function(t)
>> -    t:plan(12)
>> -    t:is(schema_stats.memtx_spaces, 2, 'memtx engine usage gathered')
>> +    t:plan(13)
>> +    t:is(schema_stats.memtx_spaces, 3, 'memtx engine usage gathered')
>>      t:is(schema_stats.vinyl_spaces, 1, 'vinyl engine usage gathered')
>>      t:is(schema_stats.temporary_spaces, 1, 'temporary space usage gathered')
>>      t:is(schema_stats.local_spaces, 1, 'local space usage gathered')
>> +    t:is(schema_stats.sync_spaces, 1, 'sync space  usage gathered')
>>      t:is(schema_stats.tree_indices, 6, 'tree index gathered')
>>      t:is(schema_stats.hash_indices, 1, 'hash index gathered')
>>      t:is(schema_stats.rtree_indices, 1, 'rtree index gathered')
>> @@ -216,9 +219,21 @@ actual = daemon.generate_feedback()
>> test:is(actual.features.schema.hash_indices, 2,
>>          'internal cache invalidates when schema changes')
>>
>> +--
>> +-- collect synchronous replication and election box.cfg options.
>> +--
>> +em = box.cfg.election_mode
>> +quorum = box.cfg.replication_synchro_quorum
>> +box.cfg{election_mode='candidate', replication_synchro_quorum=2}
>> +actual = daemon.generate_feedback()
>> +test:is(actual.options.election_mode, 'candidate', 'election_mode option reported')
>> +test:is(actual.options.synchro_quorum, 2, 'replication_synchro_quorum option reported')
>> +box.cfg{election_mode=em, replication_synchro_quorum=quorum}
>> +
>> box.space.features_vinyl:drop()
>> box.space.features_memtx_empty:drop()
>> box.space.features_memtx:drop()
>> +box.space.features_sync:drop()
>>
>> test:check()
>> os.exit(0)
>> -- 
>> 2.24.3 (Apple Git-128)
>>
-- 
Serge Petrenko



More information about the Tarantool-patches mailing list