From 66b24585a9657efc3b9ed583a890dbed8e0fd5a9 Mon Sep 17 00:00:00 2001
From: GeorgyKirichenko <kirichenkoga@gmail.com>
Date: Tue, 26 Apr 2016 11:06:01 +0300
Subject: [PATCH] Use sleep/wakeup for snapshot daemon. Fixed #1420

---
 src/box/lua/snapshot_daemon.lua | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/src/box/lua/snapshot_daemon.lua b/src/box/lua/snapshot_daemon.lua
index b0cd1725b5..f41226e655 100644
--- a/src/box/lua/snapshot_daemon.lua
+++ b/src/box/lua/snapshot_daemon.lua
@@ -172,29 +172,29 @@ do
             if interval == nil then
                 break
             end
-            if self.control:get(interval) == nil then
+            fiber.sleep(interval)
+            if self.reloaded ~= true then
                 local s, e = pcall(process, self)
 
                 if not s then
                     log.error(e)
                 end
             else
+                self.reloaded = false
                 log.info("reloaded")
             end
         end
         log.info("stopped")
-        self.control:close()
-        self.control = nil
         self.fiber = nil
     end
 
     local function reload(self)
         if self.snapshot_period > 0 and self.fiber == nil then
-            self.control = fiber.channel(5)
             self.fiber = fiber.create(daemon_fiber, self)
         elseif self.fiber ~= nil then
             -- wake up daemon
-            self.control:put(true)
+            self.reloaded = true
+            fiber.wakeup(self.fiber)
         end
     end
 
-- 
GitLab