From 120df3c8923ea9bf2249f5f7096c6869f79b101d Mon Sep 17 00:00:00 2001 From: Askan Hesse Date: Fri, 17 Jun 2016 16:04:13 +0200 Subject: [PATCH 1/6] try to ignore error if autojoin dont work on start --- kong/cli/services/serf.lua | 3 --- 1 file changed, 3 deletions(-) diff --git a/kong/cli/services/serf.lua b/kong/cli/services/serf.lua index e54460ff5e2..5ddae6afdce 100644 --- a/kong/cli/services/serf.lua +++ b/kong/cli/services/serf.lua @@ -214,9 +214,6 @@ function Serf:start() -- Auto-Join nodes local ok, err = self:_autojoin(node_name) - if not ok then - return nil, err - end -- Adding node to nodes table return self:_add_node() From 1ea5debe339c09e0d509ca2db3ad225b2152c4b4 Mon Sep 17 00:00:00 2001 From: Askan Hesse Date: Fri, 22 Jul 2016 13:33:11 +0200 Subject: [PATCH 2/6] fixing bug --- kong/cli/services/serf.lua | 27 +++++++++++++-------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/kong/cli/services/serf.lua b/kong/cli/services/serf.lua index 5ddae6afdce..0078e9c6fd9 100644 --- a/kong/cli/services/serf.lua +++ b/kong/cli/services/serf.lua @@ -53,15 +53,11 @@ function Serf:prepare() local script = [[ #!/bin/sh PAYLOAD=`cat` # Read from stdin - if [ "$SERF_EVENT" != "user" ]; then PAYLOAD="{\"type\":\"${SERF_EVENT}\",\"entity\": \"${PAYLOAD}\"}" fi - echo $PAYLOAD > /tmp/payload - COMMAND='require("kong.tools.http_client").post("http://]]..self._configuration.admin_api_listen..[[/cluster/events/", ]].."[=['${PAYLOAD}']=]"..[[, {["content-type"] = "application/json"})' - echo $COMMAND | ]]..luajit_path..[[ ]] local _, err = IO.write_to_file(self._script_path, script) @@ -105,14 +101,6 @@ function Serf:_autojoin(current_node_name) if self._configuration.cluster["auto-join"] then logger:info("Trying to auto-join Kong nodes, please wait..") - -- Delete current node just in case it was there (due to an inconsistency caused by a crash) - local _, err = self._dao_factory.nodes:delete({ - name = current_node_name - }) - if err then - return false, tostring(err) - end - local nodes, err = self._dao_factory.nodes:find_all() if err then return false, tostring(err) @@ -211,9 +199,20 @@ function Serf:start() if self:is_running() then logger:info(string.format([[serf ..............%s]], str_cmd_args)) - + + -- Delete current node just in case it was there (due to an inconsistency caused by a crash) + local _, err = self._dao_factory.nodes:delete({ + name = current_node_name + }) + if err then + return false, tostring(err) + end + -- Auto-Join nodes local ok, err = self:_autojoin(node_name) + if not ok then + return nil, err + end -- Adding node to nodes table return self:_add_node() @@ -280,4 +279,4 @@ function Serf:stop() end end -return Serf +return Serf \ No newline at end of file From 9316a9ca903414c0a6eb289705b555fc74f096a1 Mon Sep 17 00:00:00 2001 From: Askan Hesse Date: Fri, 22 Jul 2016 14:09:47 +0200 Subject: [PATCH 3/6] fixed wrong variable naming --- kong/cli/services/serf.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kong/cli/services/serf.lua b/kong/cli/services/serf.lua index 0078e9c6fd9..da7be454a98 100644 --- a/kong/cli/services/serf.lua +++ b/kong/cli/services/serf.lua @@ -202,7 +202,7 @@ function Serf:start() -- Delete current node just in case it was there (due to an inconsistency caused by a crash) local _, err = self._dao_factory.nodes:delete({ - name = current_node_name + name = node_name }) if err then return false, tostring(err) From 7ca1efd9b5992504b74759386beba29b920b8fd4 Mon Sep 17 00:00:00 2001 From: Askan Hesse Date: Sun, 24 Jul 2016 17:23:32 +0200 Subject: [PATCH 4/6] removed automatic editor changes --- kong/cli/services/serf.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/kong/cli/services/serf.lua b/kong/cli/services/serf.lua index da7be454a98..33f30cbf717 100644 --- a/kong/cli/services/serf.lua +++ b/kong/cli/services/serf.lua @@ -53,11 +53,15 @@ function Serf:prepare() local script = [[ #!/bin/sh PAYLOAD=`cat` # Read from stdin + if [ "$SERF_EVENT" != "user" ]; then PAYLOAD="{\"type\":\"${SERF_EVENT}\",\"entity\": \"${PAYLOAD}\"}" fi + echo $PAYLOAD > /tmp/payload + COMMAND='require("kong.tools.http_client").post("http://]]..self._configuration.admin_api_listen..[[/cluster/events/", ]].."[=['${PAYLOAD}']=]"..[[, {["content-type"] = "application/json"})' + echo $COMMAND | ]]..luajit_path..[[ ]] local _, err = IO.write_to_file(self._script_path, script) From 719ff352b18df64dccf3c5494b128f0b4012049e Mon Sep 17 00:00:00 2001 From: Askan Hesse Date: Mon, 25 Jul 2016 21:39:13 +0200 Subject: [PATCH 5/6] added fix for clustering on new code base --- kong/cmd/utils/serf_signals.lua | 3 +++ kong/serf.lua | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/kong/cmd/utils/serf_signals.lua b/kong/cmd/utils/serf_signals.lua index aace0cf5cf1..0c71bc58b49 100644 --- a/kong/cmd/utils/serf_signals.lua +++ b/kong/cmd/utils/serf_signals.lua @@ -92,6 +92,9 @@ function _M.start(kong_config, dao) return nil, "could not start Serf: "..err end + -- cleanup current node from cluster to prevent inconsistency of data + serf:cleanup() + log.verbose("auto-joining Serf cluster...") local ok, err = serf:autojoin() if not ok then return nil, err end diff --git a/kong/serf.lua b/kong/serf.lua index 8af9b4c73fe..bb1c169cb5c 100644 --- a/kong/serf.lua +++ b/kong/serf.lua @@ -80,12 +80,14 @@ function Serf:reachability() return self:invoke_signal("reachability") end -function Serf:autojoin() +function Serf:cleanup() -- Delete current node just in case it was there -- (due to an inconsistency caused by a crash) local _, err = self.dao.nodes:delete {name = self.node_name} if err then return nil, tostring(err) end +end +function Serf:autojoin() local nodes, err = self.dao.nodes:find_all() if err then return nil, tostring(err) elseif #nodes == 0 then From 375e102890387e92efaf2cbc6e539111ce696fac Mon Sep 17 00:00:00 2001 From: Askan Hesse Date: Wed, 27 Jul 2016 11:00:04 +0200 Subject: [PATCH 6/6] changed to check clustering cleanup errors for in serf.lua --- kong/cmd/utils/serf_signals.lua | 3 ++- kong/serf.lua | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/kong/cmd/utils/serf_signals.lua b/kong/cmd/utils/serf_signals.lua index 0c71bc58b49..cadf646a464 100644 --- a/kong/cmd/utils/serf_signals.lua +++ b/kong/cmd/utils/serf_signals.lua @@ -93,7 +93,8 @@ function _M.start(kong_config, dao) end -- cleanup current node from cluster to prevent inconsistency of data - serf:cleanup() + local ok, err = serf:cleanup() + if not ok then return nil, err end log.verbose("auto-joining Serf cluster...") local ok, err = serf:autojoin() diff --git a/kong/serf.lua b/kong/serf.lua index bb1c169cb5c..b684a5efee2 100644 --- a/kong/serf.lua +++ b/kong/serf.lua @@ -83,8 +83,8 @@ end function Serf:cleanup() -- Delete current node just in case it was there -- (due to an inconsistency caused by a crash) - local _, err = self.dao.nodes:delete {name = self.node_name} - if err then return nil, tostring(err) end + local ok, err = self.dao.nodes:delete {name = self.node_name } + return ok, tostring(err) end function Serf:autojoin()