Skip to content

Commit e5d7b7f

Browse files
committed
chore(clustering): do not enable kong.sync.v2 when connecting dp is older than cp
Signed-off-by: Aapo Talvensaari <[email protected]>
1 parent 7a505ea commit e5d7b7f

File tree

1 file changed

+22
-4
lines changed

1 file changed

+22
-4
lines changed

kong/clustering/rpc/manager.lua

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ local callbacks = require("kong.clustering.rpc.callbacks")
1212
local clustering_tls = require("kong.clustering.tls")
1313
local constants = require("kong.constants")
1414
local table_isempty = require("table.isempty")
15-
local pl_tablex = require("pl.tablex")
15+
local table_clone = require("table.clone")
16+
local table_remove = table.remove
1617
local cjson = require("cjson.safe")
1718
local string_tools = require("kong.tools.string")
1819

@@ -25,7 +26,7 @@ local ngx_log = ngx.log
2526
local ngx_exit = ngx.exit
2627
local ngx_time = ngx.time
2728
local exiting = ngx.worker.exiting
28-
local pl_tablex_makeset = pl_tablex.makeset
29+
local pl_tablex_makeset = require("pl.tablex").makeset
2930
local cjson_encode = cjson.encode
3031
local cjson_decode = cjson.decode
3132
local validate_client_cert = clustering_tls.validate_client_cert
@@ -188,10 +189,27 @@ function _M:_handle_meta_call(c, cert)
188189
assert(type(info.kong_hostname) == "string")
189190
assert(type(info.kong_conf) == "table")
190191

192+
local version = info.kong_version
193+
local rpc_capabilities = self.callbacks:get_capabilities_list(version)
194+
if KONG_VERSION > version then
195+
local delta_index
196+
for i, rpc_capability in ipairs(rpc_capabilities) do
197+
if rpc_capability == "kong.sync.v2" then
198+
delta_index = i
199+
break
200+
end
201+
end
202+
if delta_index then
203+
rpc_capabilities = table_clone(rpc_capabilities)
204+
table_remove(rpc_capabilities, delta_index)
205+
end
206+
table_clone(rpc_capabilities)
207+
end
208+
191209
local payload = {
192210
jsonrpc = jsonrpc.VERSION,
193211
result = {
194-
rpc_capabilities = self.callbacks:get_capabilities_list(),
212+
rpc_capabilities = rpc_capabilities,
195213
-- now we only support snappy
196214
rpc_frame_encoding = RPC_SNAPPY_FRAMED,
197215
},
@@ -239,7 +257,7 @@ function _M:_handle_meta_call(c, cert)
239257
-- store DP's ip addr
240258
self.client_info[node_id] = {
241259
ip = ngx_var.remote_addr,
242-
version = info.kong_version,
260+
version = version,
243261
labels = labels,
244262
cert_details = cert_details,
245263
}

0 commit comments

Comments
 (0)