jiangfucheng opened a new issue, #9842:
URL: https://github.com/apache/apisix/issues/9842

   ### Current Behavior
   
   When run test cases in my local environment, it usually occur some 
error(error log psted blow).
   I check the code,  found it cause by that `cls-sdk` resolve `hostname` 
failed.
   
   
https://github.com/apache/apisix/blob/772ebd1d71170cc11e462eb35ac0e38e619ca58c/apisix/plugins/tencent-cloud-cls/cls-sdk.lua#L62-L69
   
   I can't stably reproduce this bug. So, my idea is just handle this error to 
avoid `nil pointer expection`. (But, it seems hard to add corresponding test 
cases, if you have good idea, please give me some suggestions.)
   
   ### Expected Behavior
   
   No error log
   
   ### Error Logs
   
   ```
   FLUSH_ETCD=1 prove -I. -I../test-nginx/inc -I../test-nginx/lib -r 
t/plugin/ua-restriction.t   
   t/plugin/ua-restriction.t .. 129/? 
   #   Failed test 't/plugin/ua-restriction.t TEST 33: the element in allowlist 
is null - pattern "[error]" should not match any line in error.log but matches 
line "2023/07/15 22:59:07 [error] 32850\#31262134: *2 [lua] plugin.lua:135: 
load_plugin(): failed to load plugin [tencent-cloud-cls] err: 
...ects/apisix/apisix/plugins/tencent-cloud-cls/cls-sdk.lua:65: bad argument 
\#1 to 'ipairs' (table expected, got nil), context: init_worker_by_lua*" (req 0)
   # 2023/07/15 22:59:07 [notice] 32850\#31262134: *2 [lua] 
config_etcd.lua:980: new(): use loaded configuration /protos, context: 
init_worker_by_lua*
   # 2023/07/15 22:59:07 [notice] 32849\#31262133: *1 [lua] 
config_etcd.lua:980: new(): use loaded configuration /protos, context: 
init_worker_by_lua*
   # 2023/07/15 22:59:07 [info] 32850\#31262134: *2 [lua] plugin.lua:239: 
load(): load plugin times: 1, context: init_worker_by_lua*
   # 2023/07/15 22:59:07 [warn] 32850\#31262134: *2 [lua] plugin.lua:252: 
load_stream(): new plugins: 
{"syslog":true,"ip-restriction":true,"limit-conn":true,"mqtt-proxy":true}, 
context: init_worker_by_lua*
   # 2023/07/15 22:59:07 [info] 32849\#31262133: *1 [lua] plugin.lua:239: 
load(): load plugin times: 1, context: init_worker_by_lua*
   # 2023/07/15 22:59:07 [warn] 32849\#31262133: *1 [lua] plugin.lua:252: 
load_stream(): new plugins: 
{"syslog":true,"ip-restriction":true,"limit-conn":true,"mqtt-proxy":true}, 
context: init_worker_by_lua*
   # 2023/07/15 22:59:07 [info] 32849\#31262133: *1 [lua] plugin.lua:280: 
load_stream(): stream plugins: [{"preread":"function: 
0x011079c7e8","schema":{"oneOf":[{"required":["whitelist"]},{"required":["blacklist"]}],"type":"object","$comment":"this
 is a mark for our injected plugin 
schema","properties":{"whitelist":{"minItems":1,"type":"array","items":{"anyOf":[{"title":"IPv4","type":"string","format":"ipv4"},{"title":"IPv4/CIDR","type":"string","pattern":"^([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])/([12]?[0-9]|3[0-2])$"},{"title":"IPv6","type":"string","format":"ipv6"},{"title":"IPv6/CIDR","type":"string","pattern":"^([a-fA-F0-9]{0,4}:){1,8}(:[a-fA-F0-9]{0,4}){0,8}([a-fA-F0-9]{0,4})?/[0-9]{1,3}$"}]}},"blacklist":{"minItems":1,"type":"array","items":{"anyOf":"table:
 0x01106c78d0"}},"_meta":{"type":"object","properties":{"priori
 ty":{"description":"priority of plugins by customized 
order","type":"integer"},"error_response":{"oneOf":[{"type":"string"},{"type":"object"}]},"disable":{"type":"boolean"},"filter":{"description":"filter
 determines whether the plugin needs to be executed at 
runtime","type":"array"}}},"message":{"minLength":1,"type":"string","default":"Your
 IP address is not allowed","maxLength":1024}}},"restrict":"function: 
0x011079c7e8","priority":3000,"name":"ip-restriction","check_schema":"function: 
0x011079c630","version":0.1},{"preread":"function: 
0x0110ad8860","schema":{"type":"object","required":["conn","burst","default_conn_delay","key"],"$comment":"this
 is a mark for our injected plugin 
schema","properties":{"burst":{"type":"integer","minimum":0},"default_conn_delay":{"type":"number","exclusiveMinimum":0},"only_use_default_delay":{"type":"boolean","default":false},"conn":{"type":"integer","exclusiveMinimum":0},"_meta":"table:
 0x0110786c40","key":{"type":"string"},"key_type":{"enum":["var",
 
"var_combination"],"type":"string","default":"var"}}},"version":0.1,"priority":1003,"log":"function:
 0x0110a48d20","check_schema":"function: 
0x0110c7ce58","name":"limit-conn"},{"preread":"function: 
0x0110c552b0","schema":{"type":"object","required":["protocol_name","protocol_level"],"$comment":"this
 is a mark for our injected plugin schema","properties":{"_meta":"table: 
0x0110786c40","protocol_name":{"type":"string"},"protocol_level":{"type":"integer"}}},"version":0.1,"priority":1000,"log":"function:
 0x0110c5b288","check_schema":"function: 
0x0110c0bab8","name":"mqtt-proxy"},{"version":0.1,"check_schema":"function: 
0x0110b33a80","name":"syslog","schema":{"type":"object","required":["host","port"],"$comment":"this
 is a mark for our injected plugin 
schema","properties":{"port":{"type":"integer"},"drop_limit":{"type":"integer","default":1048576},"sock_type":{"enum":["tcp","udp"],"type":"string","default":"tcp"},"pool_size":{"minimum":5,"type":"integer","default":5},"host":{"type":"strin
 
g"},"timeout":{"minimum":1,"type":"integer","default":3000},"log_format":{"type":"object"},"flush_limit":{"minimum":1,"type":"integer","default":4096},"_meta":"table:
 
0x0110786c40","tls":{"type":"boolean","default":false},"name":{"type":"string","default":"stream
 sys 
logger"},"retry_delay":{"minimum":0,"type":"integer","default":1},"batch_max_size":{"minimum":1,"type":"integer","default":1000},"max_retry_count":{"minimum":0,"type":"integer","default":0},"inactive_timeout":{"minimum":1,"type":"integer","default":5},"buffer_duration":{"minimum":1,"type":"integer","default":60}}},"priority":401,"log":"function:
 
0x0110b3ca70","metadata_schema":{"type":"object","properties":{"log_format":{"type":"object","default":{"host":"$host","@timestamp":"$time_iso8601","client_ip":"$remote_addr"}}}},"flush_syslog":"function:
 0x0111135a48"}], context: init_worker_by_lua*
   # 2023/07/15 22:59:07 [info] 32849\#31262133: *1 [lua] plugin.lua:282: 
load_stream(): load stream plugin times: 1, context: init_worker_by_lua*
   # 2023/07/15 22:59:07 [notice] 32849\#31262133: *1 [lua] 
config_etcd.lua:980: new(): use loaded configuration /plugin_metadata, context: 
init_worker_by_lua*
   # '
   #   at 
/Users/jiangfucheng/projects/apisix/../test-nginx/lib/Test/Nginx/Socket.pm line 
1354.
   # Looks like you failed 1 test of 136.
   t/plugin/ua-restriction.t .. Dubious, test returned 1 (wstat 256, 0x100)
   Failed 1/136 subtests 
   
   ```
   
   ### Steps to Reproduce
   
   1.run any unit test case, eg: `FLUSH_ETCD=1 prove -I. -I../test-nginx/inc 
-I../test-nginx/lib -r t/plugin/ua-restriction.t   `
   
   ### Environment
   
   - APISIX version (run `apisix version`): 3.4.0
   - Operating system (run `uname -a`):  
   `Darwin jiangfuchengdeMacBook-Pro.local 22.4.0 Darwin Kernel Version 22.4.0: 
Mon Mar  6 20:59:28 PST 2023; root:xnu-8796.101.5~3/RELEASE_ARM64_T6000 arm64`
   - OpenResty / Nginx version (run `openresty -V` or `nginx -V`):
   ```
   nginx version: openresty/1.21.4.1
   built by clang 14.0.3 (clang-1403.0.22.14.1)
   built with OpenSSL 1.1.1n  15 Mar 2022
   TLS SNI support enabled
   configure arguments: --prefix=/usr/local/openresty/nginx --with-cc-opt='-O2 
-DAPISIX_BASE_VER=0.0.0 
-DNGX_GRPC_CLI_ENGINE_PATH=/usr/local/openresty/libgrpc_engine.so 
-DNGX_HTTP_GRPC_CLI_ENGINE_PATH=/usr/local/openresty/libgrpc_engine.so 
-I/opt/homebrew/opt/openresty-openssl111/include' 
--add-module=../ngx_devel_kit-0.3.1 --add-module=../echo-nginx-module-0.62 
--add-module=../xss-nginx-module-0.06 --add-module=../ngx_coolkit-0.2 
--add-module=../set-misc-nginx-module-0.33 
--add-module=../form-input-nginx-module-0.12 
--add-module=../encrypted-session-nginx-module-0.09 
--add-module=../srcache-nginx-module-0.32 --add-module=../ngx_lua-0.10.21 
--add-module=../ngx_lua_upstream-0.07 
--add-module=../headers-more-nginx-module-0.33 
--add-module=../array-var-nginx-module-0.05 
--add-module=../memc-nginx-module-0.19 --add-module=../redis2-nginx-module-0.15 
--add-module=../redis-nginx-module-0.3.9 --add-module=../ngx_stream_lua-0.0.11 
--with-ld-opt='-Wl,-rpath,/usr/local/openresty/luajit/lib -Wl
 ,-rpath,/usr/local/openresty/wasmtime-c-api/lib 
-L/opt/homebrew/opt/openresty-openssl111/lib' 
--add-module=/Users/jiangfucheng/learning/openresty/build-apisix-dev/openresty-1.21.4.1/../mod_dubbo
 
--add-module=/Users/jiangfucheng/learning/openresty/build-apisix-dev/openresty-1.21.4.1/../ngx_multi_upstream_module
 
--add-module=/Users/jiangfucheng/learning/openresty/build-apisix-dev/openresty-1.21.4.1/../apisix-nginx-module
 
--add-module=/Users/jiangfucheng/learning/openresty/build-apisix-dev/openresty-1.21.4.1/../apisix-nginx-module/src/stream
 
--add-module=/Users/jiangfucheng/learning/openresty/build-apisix-dev/openresty-1.21.4.1/../apisix-nginx-module/src/meta
 
--add-module=/Users/jiangfucheng/learning/openresty/build-apisix-dev/openresty-1.21.4.1/../wasm-nginx-module
 
--add-module=/Users/jiangfucheng/learning/openresty/build-apisix-dev/openresty-1.21.4.1/../lua-var-nginx-module
 
--add-module=/Users/jiangfucheng/learning/openresty/build-apisix-dev/openresty-1.21.4.1/../grpc-client-nginx-mo
 dule --with-poll_module --with-pcre-jit 
--with-pcre=/Users/jiangfucheng/learning/openresty/build-apisix-dev/pcre-8.45 
--with-stream --with-stream_ssl_module --with-stream_ssl_preread_module 
--with-http_v2_module --without-mail_pop3_module --without-mail_imap_module 
--without-mail_smtp_module --with-http_stub_status_module 
--with-http_realip_module --with-http_addition_module 
--with-http_auth_request_module --with-http_secure_link_module 
--with-http_random_index_module --with-http_gzip_static_module 
--with-http_sub_module --with-http_dav_module --with-http_flv_module 
--with-http_mp4_module --with-http_gunzip_module --with-threads --with-compat 
--with-pcre-opt=-g --with-stream --with-http_ssl_module
   ```
   - etcd version, if relevant (run `curl 
http://127.0.0.1:9090/v1/server_info`):
   - APISIX Dashboard version, if relevant:
   - Plugin runner version, for issues related to plugin runners:
   - LuaRocks version, for installation issues (run `luarocks --version`):
   


-- 
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]

Reply via email to