lua-upstream-nginx-module icon indicating copy to clipboard operation
lua-upstream-nginx-module copied to clipboard

get_primary_peers doesn't return name

Open r--w opened this issue 9 years ago • 4 comments

Hello, it seems that when "zone" is defined the name filed is returned only for the first peer.

nginx version: ./nginx -v nginx version: openresty/1.9.15.1

upstreams.conf:

upstream http_local { zone local_zone 64k; server 127.0.0.1:80 ; server 127.0.0.2:80 ; keepalive 16; }

access.lua:

log(ERR, cjson.encode(upstream.get_primary_peers(upstream_name))) log(ERR, cjson.encode(upstream.get_servers(upstream_name)))

log.txt:

016/07/19 13:50:00 [error] 80976#0: *92 [lua] access.lua:91: [{"weight":1,"id":0,"conns":0,"fails":0,"current_weight":0,"fail_timeout":10,"effective_weight":1,"name":"127.0.0.1:80","max_fails":1},{"weight":0,"id":1,"conns":0,"fails":0,"current_weight":0,"down":true,"effective_weight":0,"fail_timeout":12,"checked":1.4057793776513e+14,"name":"","max_fails":16}], client: 127.0.0.1, server: _, request: "GET /index.php HTTP/1.1", host: "xxxxx"

2016/07/19 13:50:00 [error] 80976#0: *92 [lua] access.lua:92: [{"addr":"127.0.0.1:80","weight":1,"fail_timeout":10,"name":"127.0.0.1:80","max_fails":1},{"addr":"127.0.0.2:80","weight":1,"fail_timeout":10,"name":"127.0.0.2:80","max_fails":1}], client: 127.0.0.1, server: _, request: "GET /index.php HTTP/1.1", host: "xxxxx"

As you can see in the first log, the second "name " field is empty. If "zone" definition is removed than the result is ok. In contrast the upstream.get_servers method returns always good results.

This issue affects https://github.com/openresty/lua-resty-upstream-healthcheck

r--w avatar Jul 19 '16 12:07 r--w

@r--w Right, the zone directive of the nginx core is relatively new and has not yet supported in this module. Are you willing to contribute a patch for it to speed up the support? Thanks!

agentzh avatar Jul 19 '16 16:07 agentzh

I understand, seems that enabling "zone" parameter also couses segmentation faults in workers. Unfortunatelly I don't have requirered C/nginx skills to fix that. I simply stopped using this parameter.

r--w avatar Jul 22 '16 08:07 r--w

@agentzh Possible to get any pointers on how to fix this issue? I have looked in the code, but have a hard time finding the parsing of upstreams.

quezacoatl avatar Sep 05 '18 08:09 quezacoatl

+1 => I got some segmentation faults when using "zone" parameter in an upstream with this module

'seems to be fixed with #67 (in my use case)

thefab avatar May 13 '19 10:05 thefab