From 9065c8b4700eda7533096451935db467b73554e2 Mon Sep 17 00:00:00 2001 From: chryancclee-boop Date: Sat, 30 May 2026 19:49:11 +0800 Subject: [PATCH 1/2] fix(resource): add plugin_configs support for fetch_latest_conf When the ai-proxy-multi plugin uses plugin_config_id to reference a PluginConfig containing multiple instances, APISIX returns a 503 error: "fetch_latest_conf(): unsupported resource type: plugin_configs". Root cause: - pick_target() in ai-proxy-multi.lua calls resource.fetch_latest_conf() to fetch the parent configuration for load balancing and health checking. - When referencing via plugin_config_id, the _meta.parent.resource_key is set to "/plugin_configs/". - resource.fetch_latest_conf() previously only supported upstreams, routes, services, and stream_routes, causing it to reject "plugin_configs". Why single instance works: - Single instance scenarios bypass pick_target() entirely since no load balancing is needed, so resource.fetch_latest_conf() is never invoked. Fix: - Add "plugin_configs" to the supported resource types in resource.lua. Verification: - Single instance + plugin_config_id: 200 (unchanged) - Multi-instance + plugin_config_id: 503 -> 200 (fixed) - Multi-instance + embedded plugins: 200 (unchanged) Signed-off-by: lichunhan --- apisix/resource.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apisix/resource.lua b/apisix/resource.lua index ae5dfc6e48fd..429413832df5 100644 --- a/apisix/resource.lua +++ b/apisix/resource.lua @@ -59,6 +59,8 @@ local function fetch_latest_conf(resource_path) key = "/services" elseif resource_type == "stream_routes" then key = "/stream_routes" + elseif resource_type == "plugin_configs" then + key = "/stream_routes" else log.error("unsupported resource type: ", resource_type) return nil From 3af2cbf91d2130a6de1f50bb92f8fb26373be881 Mon Sep 17 00:00:00 2001 From: chryancclee-boop Date: Sat, 30 May 2026 19:49:11 +0800 Subject: [PATCH 2/2] fix(resource): add plugin_configs support for fetch_latest_conf When the ai-proxy-multi plugin uses plugin_config_id to reference a PluginConfig containing multiple instances, APISIX returns a 503 error: "fetch_latest_conf(): unsupported resource type: plugin_configs". Root cause: - pick_target() in ai-proxy-multi.lua calls resource.fetch_latest_conf() to fetch the parent configuration for load balancing and health checking. - When referencing via plugin_config_id, the _meta.parent.resource_key is set to "/plugin_configs/". - resource.fetch_latest_conf() previously only supported upstreams, routes, services, and stream_routes, causing it to reject "plugin_configs". Why single instance works: - Single instance scenarios bypass pick_target() entirely since no load balancing is needed, so resource.fetch_latest_conf() is never invoked. Fix: - Add "plugin_configs" to the supported resource types in resource.lua. Verification: - Single instance + plugin_config_id: 200 (unchanged) - Multi-instance + plugin_config_id: 503 -> 200 (fixed) - Multi-instance + embedded plugins: 200 (unchanged) Signed-off-by: lichunhan --- apisix/resource.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apisix/resource.lua b/apisix/resource.lua index ae5dfc6e48fd..8b914e82c500 100644 --- a/apisix/resource.lua +++ b/apisix/resource.lua @@ -59,6 +59,8 @@ local function fetch_latest_conf(resource_path) key = "/services" elseif resource_type == "stream_routes" then key = "/stream_routes" + elseif resource_type == "plugin_configs" then + key = "/plugin_configs" else log.error("unsupported resource type: ", resource_type) return nil