Firstsawyou opened a new issue #4314: URL: https://github.com/apache/apisix/issues/4314
### Issue description After modifying the code of the plugin, after performing the following operations according to the [plugins.md](https://github.com/apache/apisix/blob/master/docs/en/latest/plugins.md#hot-reload) document, the hot loading of the apisix plugin did not take effect. ```shell curl http://127.0.0.1:9080/apisix/admin/plugins/reload -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT ``` ### Environment Bug report without environment information will be ignored or closed. * apisix version (cmd: `apisix version`): 2.6 * OS (cmd: `uname -a`): Linux * OpenResty / Nginx version (cmd: `nginx -V` or `openresty -V`): nginx version: openresty/1.19.3.1 * etcd version, if have (cmd: run `curl http://127.0.0.1:9090/v1/server_info` to get the info from server-info API): 3.4.0 * apisix-dashboard version, if have: * luarocks version, if the issue is about installation (cmd: `luarocks --version`): 3.4.0 ### Minimal test code / Steps to reproduce the issue Bug report without steps to reproduce will be ignored or closed. 1. Modify the `limit-count` plugin code (add a warning log) ```sh --- a/apisix/plugins/limit-count.lua +++ b/apisix/plugins/limit-count.lua @@ -156,7 +156,7 @@ end function _M.access(conf, ctx) - core.log.info("ver: ", ctx.conf_version) + core.log.warn("ver: ", ctx.conf_version, "hello world, 123456") local lim, err = core.lrucache.plugin_ctx(lrucache, ctx, conf.policy, create_limit_obj, conf) if not lim then ``` 2. Create a route and bind the plugin ```shell curl -i http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d ' { "uri": "/get", "plugins": { "limit-count": { "count": 3, "time_window": 10, "rejected_code": 503, "key": "remote_addr" } }, "upstream": { "type": "roundrobin", "nodes": { "httpbin.org:80": 1 } } }' ``` 3. Execute hot load request ```shell curl http://127.0.0.1:9080/apisix/admin/plugins/reload -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT ``` 4. Request a test ```shell curl http://127.0.0.1:9080/get -i HTTP/1.1 200 OK Content-Type: application/json Content-Length: 300 Connection: keep-alive X-RateLimit-Limit: 3 X-RateLimit-Remaining: 2 ``` 5. View the error.log log (no log output) ``` 2021/05/26 22:13:18 [warn] 939867#939867: *164198 [lua] init.lua:290: sync_local_conf_to_etcd(): sync local conf to etcd, context: ngx.timer ``` 6. When the following code is commented, the plugin hot loading will take effect ```sh diff --git a/apisix/plugin.lua b/apisix/plugin.lua index 5b4337c..7be84ac 100644 --- a/apisix/plugin.lua +++ b/apisix/plugin.lua @@ -167,7 +167,7 @@ local function load(plugin_names) -- the same configure may be synchronized more than one if plugins_eq(local_plugins_hash, processed) then core.log.info("plugins not changed") - return true + -- return true end core.log.warn("new plugins: ", core.json.delay_encode(processed)) ``` ### What's the actual result? (including assertion message & call stack if applicable) After the hot reload request is executed, the code of the modified plugin cannot take effect. ### What's the expected result? After the hot load request is executed, the modification of the plugin code can take effect in time. -- 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. For queries about this service, please contact Infrastructure at: us...@infra.apache.org