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

Serge Petrenko sergepetrenko at tarantool.org
Tue Oct 13 16:54:24 MSK 2020


13.10.2020 16:34, Serge Petrenko пишет:
> ---
> https://github.com/tarantool/tarantool/tree/sp/feedback_daemon_synchro

A small update: add txm usage reporting & rename synchro_quorum to
replication_synchro_quorum so that each option in daemon's report is
named the same way it's done in box.cfg.

The only value to report for txm is box.cfg.memtx_use_mvcc_engine

The diff's below:

diff --git a/src/box/lua/feedback_daemon.lua 
b/src/box/lua/feedback_daemon.lua
index aa296c445..026eef641 100644
--- a/src/box/lua/feedback_daemon.lua
+++ b/src/box/lua/feedback_daemon.lua
@@ -229,7 +229,8 @@ end
  local function fill_in_options(feedback)
      local options = {}
      options.election_mode = box.cfg.election_mode
-    options.synchro_quorum = box.cfg.replication_synchro_quorum
+    options.replication_synchro_quorum = box.cfg.replication_synchro_quorum
+    options.memtx_use_mvcc_engine = box.cfg.memtx_use_mvcc_engine
      feedback.options = options
  end

diff --git a/test/box-tap/feedback_daemon.test.lua 
b/test/box-tap/feedback_daemon.test.lua
index c1ae5f81b..abf7b9576 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(21)
+test:plan(22)

  local function check(message)
      while feedback_count < 1 do
@@ -220,14 +220,16 @@ test:is(actual.features.schema.hash_indices, 2,
          'internal cache invalidates when schema changes')

  --
--- collect synchronous replication and election box.cfg options.
+-- collect box.cfg options: election mode, synchronous replication and tx
+-- manager.
  --
  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')
+test:is(actual.options.replication_synchro_quorum, 2, 
'replication_synchro_quorum option reported')
+test:is(actual.options.memtx_use_mvcc_engine, false, 
'memtx_use_mvcc_engine option reported')
  box.cfg{election_mode=em, replication_synchro_quorum=quorum}

  box.space.features_vinyl:drop()

>
>   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)

-- 
Serge Petrenko



More information about the Tarantool-patches mailing list