使用body_filter_by_lua时ngx.say的奇怪表现

115 views
Skip to first unread message

年轮蛋糕

unread,
Dec 26, 2022, 9:04:39 AM12/26/22
to openresty
当使用body_filter_by_lua时,即使 body_filter_by_lua 为空(或者是我把他原本要进行的操作去掉了?)的情况下,当运行多条ngx.say的情况下,会有一定概率出现给了chunk,但是不发信息的情况。
测试了2个版本的,一个是自己编的,一个是ubuntu默认安装的,都是最新版1.21.4.1
复现配置以及测试结果:

这个配置在Tengine 1.17.3测试没问题,不清楚是nginx版本更新导致还是openresty修改导致的。
简单总结:
使用body_filter_by_lua后需要配置chunked_transfer_encoding off ,否则输出有问题

最后请问:这个现象是符合预期的吗?

Junlong li

unread,
Dec 26, 2022, 10:02:16 AM12/26/22
to openresty
不符合预期。
应该是个bug

年轮蛋糕

unread,
Feb 14, 2023, 10:11:16 PM2/14/23
to openresty
补充一些近期测试:
1.之前结果漏掉了:
     body_filter_by_lua 空 +  chunked_transfer_encoding off 情况,有几率导致返回值重复,并且乱序
           https://gist.github.com/9268/a9491787efa50201fbc48d82e5de1406#file-curl-filterandchunkoff-out-L110
2.body_filter_by_lua_block   { ngx.arg[1] = ngx.arg[1] } block里修改(或者这样赋值自己)ngx.arg[1],表现就正常了

ex: 我应该吧这个bug提到 https://github.com/openresty/lua-nginx-module 这个项目吗,或者哪个项目?

Junlong Li

unread,
Feb 14, 2023, 10:56:57 PM2/14/23
to openresty

这个你提交到 https://github.com/openresty/lua-nginx-module 项目。
如果能够把你的测试结果转成测试用例最好了,这是最好的沟通了,既能复现问题,也可以作为一行的用例覆盖。

年轮蛋糕

unread,
Feb 21, 2023, 2:40:46 AM2/21/23
to openresty

Junlong Li

unread,
Feb 21, 2023, 3:00:28 AM2/21/23
to open...@googlegroups.com
这个测试的输出 response_body 是不是就是你要的输出结果?
这两个测试就是跟你写的case修改的,只不过你的test case里面还有一些笔误,修改过来而已。

年轮蛋糕 <9268...@gmail.com> 于2023年2月21日周二 15:40写道:
--
--
邮件来自列表“openresty”,专用于技术讨论!
订阅: 请发空白邮件到 openresty...@googlegroups.com
发言: 请发邮件到 open...@googlegroups.com
退订: 请发邮件至 openresty+...@googlegroups.com
归档: http://groups.google.com/group/openresty
官网: http://openresty.org/
仓库: https://github.com/agentzh/ngx_openresty
教程: http://openresty.org/download/agentzh-nginx-tutorials-zhcn.html
---
您收到此邮件是因为您订阅了Google网上论坛上的“openresty”群组。
要退订此群组并停止接收此群组的电子邮件,请发送电子邮件到openresty+...@googlegroups.com
要在网络上查看此讨论,请访问https://groups.google.com/d/msgid/openresty/74418e62-56a9-432d-b9e0-18f36e93906fn%40googlegroups.com

年轮蛋糕

unread,
Feb 21, 2023, 6:24:23 AM2/21/23
to openresty
response_body 里的内容是我期望的输出结果,但是我无法和pr里的测试结果对应上,没有找到测试结果在哪
Reply all
Reply to author
Forward
0 new messages