[tarantool-patches] [PATCH] recovery: recount offset on checkpoint_interval change

Konstantin Belyavskiy k.belyavskiy at tarantool.org
Mon Jul 9 17:03:14 MSK 2018


Next checkpoint time is set by the formula:
 period = self.checkpoint_interval + offset,
where offset is defined as follow:
 offset = random % self.checkpoint_interval

So offset must be calculated again if at least the new
interval is less than the old one.

Closes #3370
---
Ticket: https://github.com/tarantool/tarantool/issues/3370
Branch: https://github.com/tarantool/tarantool/compare/kbelyavs/gh-3370-fix-bug-with-wrong-snapshot-scheduling
 src/box/lua/checkpoint_daemon.lua | 1 +
 1 file changed, 1 insertion(+)

diff --git a/src/box/lua/checkpoint_daemon.lua b/src/box/lua/checkpoint_daemon.lua
index e7ef05fdb..ec129010f 100644
--- a/src/box/lua/checkpoint_daemon.lua
+++ b/src/box/lua/checkpoint_daemon.lua
@@ -80,6 +80,7 @@ local function daemon_fiber(self)
             break
         elseif msg == 'reload' then
             log.info("reloaded") -- continue
+            offset = random % self.checkpoint_interval
         elseif msg == nil and box.info.status == 'running' then
             local s, e = pcall(process, self)
             if not s then
-- 
2.14.3 (Apple Git-98)





More information about the Tarantool-patches mailing list