From d9b30131a909d15c9632cef892c2e132db49ab7b Mon Sep 17 00:00:00 2001 From: chronolaw Date: Mon, 13 Jan 2025 08:33:02 +0800 Subject: [PATCH 1/3] refactor(clustering/rpc): move is_valid_version() to strategies --- kong/clustering/services/sync/rpc.lua | 14 +------------- .../services/sync/strategies/postgres.lua | 9 ++++++++- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/kong/clustering/services/sync/rpc.lua b/kong/clustering/services/sync/rpc.lua index 3bcd515520f..771e992d9d1 100644 --- a/kong/clustering/services/sync/rpc.lua +++ b/kong/clustering/services/sync/rpc.lua @@ -23,7 +23,6 @@ local MAX_RETRY = 5 local assert = assert local ipairs = ipairs -local sub = string.sub local ngx_null = ngx.null local ngx_log = ngx.log local ngx_ERR = ngx.ERR @@ -60,17 +59,6 @@ local function get_current_version() end -local is_valid_version -do - local VER_PREFIX = "v02_" - - -- version string must start with 'v02_' - is_valid_version = function(v) - return sub(v, 1, 4) == VER_PREFIX - end -end - - function _M:init_cp(manager) local purge_delay = manager.conf.cluster_data_plane_purge_delay @@ -118,7 +106,7 @@ function _M:init_cp(manager) end -- string comparison effectively does the same as number comparison - if not is_valid_version(default_namespace_version) or + if not self.strategy:is_valid_version(default_namespace_version) or default_namespace_version ~= latest_version then return full_sync_result() end diff --git a/kong/clustering/services/sync/strategies/postgres.lua b/kong/clustering/services/sync/strategies/postgres.lua index 20e594d92f3..fe5a19718af 100644 --- a/kong/clustering/services/sync/strategies/postgres.lua +++ b/kong/clustering/services/sync/strategies/postgres.lua @@ -2,12 +2,14 @@ local _M = {} local _MT = { __index = _M } +local sub = string.sub local fmt = string.format local ngx_null = ngx.null -- version string should look like: "v02_0000" -local VERSION_FMT = "v02_%028x" +local VER_PREFIX = "v02_" +local VERSION_FMT = VER_PREFIX .. "%028x" function _M.new(db) @@ -56,6 +58,11 @@ function _M:get_latest_version() end +function _M:is_valid_version(str) + return sub(v, 1, 4) == VER_PREFIX +end + + function _M:begin_txn() return self.connector:query("BEGIN;") end From 919c2d5e3fdd5d22aa989ff2486fb3305cf5e11e Mon Sep 17 00:00:00 2001 From: chronolaw Date: Mon, 13 Jan 2025 08:35:25 +0800 Subject: [PATCH 2/3] lint fix --- kong/clustering/services/sync/strategies/postgres.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/kong/clustering/services/sync/strategies/postgres.lua b/kong/clustering/services/sync/strategies/postgres.lua index fe5a19718af..fc4738ed8cb 100644 --- a/kong/clustering/services/sync/strategies/postgres.lua +++ b/kong/clustering/services/sync/strategies/postgres.lua @@ -59,7 +59,7 @@ end function _M:is_valid_version(str) - return sub(v, 1, 4) == VER_PREFIX + return sub(str, 1, 4) == VER_PREFIX end From 09d5bc4f880990db32403d09c6f8822525eea3cb Mon Sep 17 00:00:00 2001 From: chronolaw Date: Tue, 14 Jan 2025 09:40:22 +0800 Subject: [PATCH 3/3] VER_PREFIX_LEN --- kong/clustering/services/sync/strategies/postgres.lua | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/kong/clustering/services/sync/strategies/postgres.lua b/kong/clustering/services/sync/strategies/postgres.lua index fc4738ed8cb..06da15cabdc 100644 --- a/kong/clustering/services/sync/strategies/postgres.lua +++ b/kong/clustering/services/sync/strategies/postgres.lua @@ -9,6 +9,7 @@ local ngx_null = ngx.null -- version string should look like: "v02_0000" local VER_PREFIX = "v02_" +local VER_PREFIX_LEN = #VER_PREFIX local VERSION_FMT = VER_PREFIX .. "%028x" @@ -59,7 +60,7 @@ end function _M:is_valid_version(str) - return sub(str, 1, 4) == VER_PREFIX + return sub(str, 1, VER_PREFIX_LEN) == VER_PREFIX end