apache / apisix

The Cloud-Native API Gateway
https://apisix.apache.org/blog/
Apache License 2.0
14.44k stars 2.51k forks source link

bug: runtime error- attempt to perform arithmetic on a nil value #10926

Open ali-mahdavi-mehr opened 8 months ago

ali-mahdavi-mehr commented 8 months ago

Current Behavior

We have encountered this error in APISIX, and we are unsure when it occurs. Additionally, we do not know which library calls this function, but an error has occurred for us occasionally, not always. Please let us know the reason for this error and how to prevent it. Thank you

Expected Behavior

129 => local milliseconds = tonumber(seconds) * 1000 (in lua-resty-core)

I think that wherever this function is called, it sends a nil value as "seconds".

Error Logs

[error]: * lua user thread aborted: runtime error: /usr/local/openresty/lualib/ngx/semaphore.lua:129: attempt to perform arithmetic on a nil value

Steps to Reproduce

We couldn't figure out where and when in the code this function is being called. and we do not use this library in any of our plugins

Environment

shreemaan-abhishek commented 8 months ago

please update this thread when you encounter any clues on how to reproduce this.

johnxiaohe commented 2 months ago

please update this thread when you encounter any clues on how to reproduce this.

2024/07/22 06:27:39 [error] 58#58: *29775831 lua user thread aborted: runtime error: /usr/local/openresty/lualib/ngx/semaphore.lua:129: attempt to perform arithmetic on a nil value stack traceback: coroutine 0: /usr/local/openresty/lualib/ngx/semaphore.lua: in function 'wait' /usr/local/apisix//deps/share/lua/5.1/resty/etcd/v3.lua:510: in function 'refresh_jwt_token' /usr/local/apisix//deps/share/lua/5.1/resty/etcd/v3.lua:205: in function 'keepalive' /usr/local/apisix/apisix/core/etcd.lua:515: in function 'keepalive' /usr/local/apisix/apisix/plugins/server-info.lua:221: in function 'report' /usr/local/apisix/apisix/plugins/server-info.lua:292: in function </usr/local/apisix/apisix/plugins/server-info.lua:287> coroutine 1: [C]: in function 'thread_wait' /usr/local/apisix/apisix/timers.lua:52: in function </usr/local/apisix/apisix/timers.lua:32> [C]: in function 'pcall' /usr/local/apisix/apisix/core/timer.lua:40: in function </usr/local/apisix/apisix/core/timer.lua:36> [C]: in function 'pcall' /usr/local/apisix/apisix/core/timer.lua:63: in function </usr/local/apisix/apisix/core/timer.lua:56>, context: ngx.timer 2024/07/22 06:27:39 [error] 58#58: *29775831 [lua] timers.lua:54: failed to wait threads, context: ngx.timer

The phenomenon does not occur regularly, sometimes it takes a few hours, sometimes a few days