apache / apache/servicecomb-java-chassis

ProviderQpsFlowControlHandler不被执行的问题

Đang mở
#4,646 4 bình luận 0 reaction 0 người được giao Xem trên GitHub
Ngôn ngữ chính
Java
Star
1.9k
Fork
814
Merge trung bình
8 ngày 23 giờ
Pull request đã merge (30 ngày)
1

Mô tả

当请求走到doInvoke时
![image](https://github.com/user-attachments/assets/62a9b16f-1c9a-4d3b-826d-46e14338df5b)
由于在外部进行了++,导致handlerIndex已经是1了
![image](https://github.com/user-attachments/assets/5aec9dd6-68d8-422d-82c3-5a1b9c895909)
此时放在handlerList中的首个是ProviderQpsFlowControlHandler
![image](https://github.com/user-attachments/assets/02fc7631-27fa-4bc1-9ff1-18607c62c50e)
它的首行会判断invocation的hanlerIndex是否大于0,由于handlerIndex++放在入口前,且handlerIndex不能赋值初始值为-1,也没有其他途径修改值,所以进来这里的代码一定是大于0的,导致ProviderQpsFlowControlHandler可能永远不被执行
![image](https://github.com/user-attachments/assets/52bac518-b087-4c7c-aeb8-ee835bc25235)

我在走读代码的时候看到了这么个情况,绞尽脑子没有想到缘由,可能不是bug,而是有什么其他设计,希望能够得到解答,万分感谢!

Hướng dẫn đóng góp

Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này

Hướng nghiên cứu

Bắt đầu từ doInvoke và theo dõi cách handlerIndex thay đổi trước khi ProviderQpsFlowControlHandler được gọi đến. Đọc thứ tự của handlerList và kiểm tra handlerIndex ban đầu của handler, sau đó xác nhận liệu handler có bị bỏ qua trong luồng này hay không. Hoàn tất có nghĩa là ghi lại thiết kế dự kiến hoặc tạo ra một fix tập trung kèm bằng chứng rằng handler được thực thi đúng cách.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
java
Lĩnh vực
backend
Loại issue
Lỗi
Độ khó
4/5
Thời gian dự kiến
3-5 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Cần làm rõ
Mức phù hợp với người mới
25/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.