beginnerWJC
beginnerWJC
这个我已经测试过了,取消ext-plugin-post-resp插件使用是正常的。上游只会收到一次请求。 路由配置如下,取消了ext-plugin-post-resp插件的使用: ``` { "uri": "/robot-monitor/v1/*", "name": "test204", "methods": [ "GET", "POST", "PUT", "DELETE" ], "plugins": { "ext-plugin-post-resp": { "conf": [ { "name": "TestPostFilter", "value": "{}" } ], "disable": true...
其实我感觉是ext-plugin-post-resp这个插件的问题
我不太了解APISIX的处理逻辑,但是我发现处理200和204的日志有所不同,从这里面可以看出问题吗? 响应码为204的APISIX的处理日志 ``` 2022/08/26 07:10:50 [info] 54#54: *147075 [lua] init.lua:380: http_access_phase(): matched route: {"value":{"name":"test204","upstream":{"timeout":{"connect":6,"send":6,"read":6},"parent":{"value":"table: 0x7fea60263578","modifiedIndex":240389,"clean_handlers":{},"has_domain":false,"update_count":0,"orig_modifiedIndex":240389,"key":"\/apisix\/routes\/422552840368554762","createdIndex":240257},"pass_host":"pass","nodes":[{"port":8900,"weight":1,"upstream_host":"192.168.2.120:8900","host":"192.168.2.120","priority":0}],"keepalive_pool":{"size":320,"idle_timeout":60,"requests":1000},"nodes_ref":"table: 0x7fea602638f8","type":"roundrobin","hash_on":"vars","scheme":"http","original_nodes":"table: 0x7fea602638f8"},"uri":"\/robot-monitor\/v1\/*","update_time":1661493500,"id":"422552840368554762","create_time":1661390719,"plugins":{"ext-plugin-post-resp":{"allow_degradation":false,"conf":[{"name":"TestPostFilter","value":"{}"}],"disable":false}},"priority":0,"methods":["GET","POST","PUT","DELETE"],"status":1},"modifiedIndex":240389,"clean_handlers":"table: 0x7fea5e844f28","has_domain":false,"update_count":0,"orig_modifiedIndex":240389,"key":"\/apisix\/routes\/422552840368554762","createdIndex":240257}, client: 172.17.67.1, server: _, request: "GET /robot-monitor/v1/robotMonitor/test204 HTTP/1.1", host: "192.168.40.174:30880" 2022/08/26 07:10:50...
不是APISIX向Java Plugin Runner 发送了两个请求,是开启了APISIX的ext-plugin-post-resp插件然后使用Java Plugin Runner的postFilter方法用于改写上游返回的请求头时,发现在这种情况下,如果上游返回的状态码是204的话,上游会收到两次请求,如果将上游返回的状态码改为200则正常了,或者不使用APISIX的ext-plugin-post-resp插件,也都是正常的。
我还发现了个问题,我想在插件里面将返回值改成200规避这个问题,然后发现无法修改响应码 插件代码: ``` public void postFilter(PostRequest request, PostResponse response, PluginFilterChain chain) { logger.info("TestPostFilter插件开始执行!"); Map headersMap = request.getUpstreamHeaders(); logger.info("上游返回的headers:{}",JSON.toJSONString(headersMap)); int statusCode = request.getUpstreamStatusCode(); logger.info("上游返回的状态码为:{}",statusCode); if(statusCode == 204) { logger.info("修改上游的状态码为200"); response.setStatusCode(200); }...
如果statusCode为204,则改写成200。日志里面显示走到if语句里面了,但是没有替换成功
0.3.0版本还是没有支持获取上游响应的body,我也需要这个功能
这个和下面这个问题应该是一类问题 https://github.com/apache/apisix-java-plugin-runner/issues/234
@frankqoqo8 好的,感谢,我找时间验证一下
l use apisix-java-plugin , the method requiredBody() default value is false ,l set true to find this issuce   the router : `{ "uri": "/oam/2.0/tenant/upload/vox", "name": "testfile", "methods": [...