nic-6443 commented on code in PR #12800:
URL: https://github.com/apache/apisix/pull/12800#discussion_r2601528839
##########
apisix/plugin.lua:
##########
@@ -1263,7 +1267,59 @@ function _M.set_plugins_meta_parent(plugins, parent)
end
-function _M.run_global_rules(api_ctx, global_rules, phase_name)
+local function merge_global_rules(global_rules)
+ -- First pass: identify duplicate plugins across all global rules
+ local plugin_count = {}
+ local duplicate_plugins = {}
+ local values = global_rules
+ for _, global_rule in config_util.iterate_values(values) do
+ if global_rule.value and global_rule.value.plugins then
+ for plugin_name, _ in pairs(global_rule.value.plugins) do
+ plugin_count[plugin_name] = (plugin_count[plugin_name] or 0) +
1
+ if plugin_count[plugin_name] > 1 then
+ duplicate_plugins[plugin_name] = true
+ end
+ end
+ end
+ end
+
+ local all_plugins = {}
+ local createdIndex = 1
+ local modifiedIndex = 1
+ -- merge all plugins across all global rules to one dummy global_rule
structure
+ for _, global_rule in config_util.iterate_values(values) do
+ if global_rule.value and global_rule.value.plugins then
+ core.table.merge(all_plugins, global_rule.value.plugins)
+ if global_rule.modifiedIndex > modifiedIndex then
+ modifiedIndex = global_rule.modifiedIndex
+ createdIndex = global_rule.createdIndex
+ end
+ end
+ end
+
+ -- remove duplicate plugins
+ for plugin_name, _ in pairs(duplicate_plugins) do
+ all_plugins[plugin_name] = nil
+ end
+
+ local dummy_global_rule = {
+ key = "/apisix/global_rules/1",
Review Comment:
```suggestion
key = "/apisix/global_rules/dummy",
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]