This is an automated email from the ASF dual-hosted git repository.

tokers pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/apisix.git


The following commit(s) were added to refs/heads/master by this push:
     new 560fca3  fix: fix on setting server info to etcd (#3075)
560fca3 is described below

commit 560fca3e0bb11c3de0e8d7489c8fa8ead4b23585
Author: Peter Zhu <[email protected]>
AuthorDate: Fri Dec 18 14:46:49 2020 +0800

    fix: fix on setting server info to etcd (#3075)
    
    * fix: fix on setting server info to etcd
---
 apisix/plugins/server-info.lua | 14 +++++++-------
 t/plugin/server-info.t         | 14 ++++++--------
 2 files changed, 13 insertions(+), 15 deletions(-)

diff --git a/apisix/plugins/server-info.lua b/apisix/plugins/server-info.lua
index f5dccb8..4c90682 100644
--- a/apisix/plugins/server-info.lua
+++ b/apisix/plugins/server-info.lua
@@ -127,19 +127,19 @@ local function report(premature, report_ttl)
 
     server_info.last_report_time = ngx_time()
 
-    local data, err = core.json.encode(server_info)
-    if not data then
-        core.log.error("failed to encode server_info: ", err)
-        return
-    end
-
     local key = "/data_plane/server_info/" .. server_info.id
-    local ok, err = core.etcd.set(key, data, report_ttl)
+    local ok, err = core.etcd.set(key, server_info, report_ttl)
     if not ok then
         core.log.error("failed to report server info to etcd: ", err)
         return
     end
 
+    local data, err = core.json.encode(server_info)
+    if not data then
+        core.log.error("failed to encode server_info: ", err)
+        return
+    end
+
     local ok, err = internal_status:set("server_info", data)
     if not ok then
         core.log.error("failed to encode and save server info: ", err)
diff --git a/t/plugin/server-info.t b/t/plugin/server-info.t
index c61a4eb..ae8306c 100644
--- a/t/plugin/server-info.t
+++ b/t/plugin/server-info.t
@@ -52,7 +52,6 @@ plugin_attr:
 location /t {
     content_by_lua_block {
         ngx.sleep(2)
-        local json_decode = require("cjson.safe").decode
         local core = require("apisix.core")
         local key = "/data_plane/server_info/" .. core.id.get()
         local res, err = core.etcd.get(key)
@@ -63,14 +62,14 @@ location /t {
         end
 
         local keys = {}
-        local body = json_decode(res.body.node.value)
-        for k in pairs(body) do
+        local value = res.body.node.value
+        for k in pairs(value) do
             keys[#keys + 1] = k
         end
 
         table.sort(keys)
         for i = 1, #keys do
-            ngx.say(keys[i], ": ", body[keys[i]])
+            ngx.say(keys[i], ": ", value[keys[i]])
         end
     }
 }
@@ -104,7 +103,6 @@ plugin_attr:
 --- config
 location /t {
     content_by_lua_block {
-        local json_decode = require("cjson.safe").decode
         local core = require("apisix.core")
         local key = "/data_plane/server_info/" .. core.id.get()
         local res, err = core.etcd.get(key)
@@ -115,12 +113,12 @@ location /t {
         end
 
         local keys = {}
-        local body = json_decode(res.body.node.value)
-        for k in pairs(body) do
+        local value = res.body.node.value
+        for k in pairs(value) do
             keys[#keys + 1] = k
         end
 
-        if body.up_time >= 2 then
+        if value.up_time >= 2 then
             ngx.say("integral")
         else
             ngx.say("reset")

Reply via email to