From 6fb63605010392f95a4fd722a0328cb9b462ae0e Mon Sep 17 00:00:00 2001 From: xumin Date: Wed, 30 Oct 2024 15:23:09 +0800 Subject: [PATCH] fix(clustering): avoid 500 accessing v1 api when inc_sync enabled fix KAG-5551 --- kong/init.lua | 20 +++++++++---------- .../09-hybrid_mode/01-sync_spec.lua | 8 +++++++- 2 files changed, 17 insertions(+), 11 deletions(-) diff --git a/kong/init.lua b/kong/init.lua index 81b5d2c3817c..0b6493464957 100644 --- a/kong/init.lua +++ b/kong/init.lua @@ -884,12 +884,18 @@ function Kong.init_worker() kong.cache:invalidate_local(constants.ADMIN_GUI_KCONFIG_CACHE_KEY) end - if process.type() == "privileged agent" and not kong.sync then - if kong.clustering then - -- full sync cp/dp + if kong.clustering then + -- full sync dp + -- "privileged agent" must be a DP worker + if process.type() == "privileged agent" and not kong.sync then + kong.clustering:init_worker() + -- DP privileged agent skips the rest of the init_worker + return + + elseif is_control_plane(kong.configuration) then + -- CP needs to support both full and incremental sync kong.clustering:init_worker() end - return end kong.vault.init_worker() @@ -987,12 +993,6 @@ function Kong.init_worker() end if kong.clustering then - - -- full sync cp/dp - if not kong.sync then - kong.clustering:init_worker() - end - -- rpc and incremental sync if kong.rpc and is_http_module then diff --git a/spec/02-integration/09-hybrid_mode/01-sync_spec.lua b/spec/02-integration/09-hybrid_mode/01-sync_spec.lua index a1d2f9b37641..bbb6ff516f65 100644 --- a/spec/02-integration/09-hybrid_mode/01-sync_spec.lua +++ b/spec/02-integration/09-hybrid_mode/01-sync_spec.lua @@ -13,7 +13,7 @@ local KEY_AUTH_PLUGIN --- XXX FIXME: enable inc_sync = on -for _, inc_sync in ipairs { "off" } do +for _, inc_sync in ipairs { "on", "off" } do for _, strategy in helpers.each_strategy() do describe("CP/DP communication #" .. strategy .. " inc_sync=" .. inc_sync, function() @@ -624,6 +624,12 @@ describe("CP/DP #version check #" .. strategy, function() end) end) +-- skips the rest of the tests. We will fix them in a follow-up PR +if inc_sync == "on" then + pending("fix this!") + return +end + describe("CP/DP config sync #" .. strategy, function() lazy_setup(function() helpers.get_db_utils(strategy) -- runs migrations