[alibaba/tengine]dyups灌入consistent_hash时,hash key使用新变量时导致worker coredump问题

2024-08-21 13 views
9

dyups灌入开启consistent hash策略的upstream数据时,如果hash key使用了新变量,比如$arg_FengXingYuXin,那么会通过ngx_http_get_variable_index新增一个变量结构体,默认get_handler、set_handler设置为NULL,data、flags设置为0,没有对新变量做进一步的初始化工作。 worker进程处理请求时,转发请求前,会对consistent hash的变量进行运行时渲染,在ngx_http_get_indexed_variable中调用变量arg_FengXingYuXin的get_handler导致段错误,调用栈如下: image 这里是否可以参考Nginx reload后的ngx_http_variables_init_vars调用一样,增加对新变量的初始化设置工作。

回答

0

好的 多谢

1

因为Nginx官方1.13.6中有prefix flag,所以参考ngx_http_variables_init_vars进行了修复,整体代码会简介些。