apache / apache/servicecomb-java-chassis

ProviderQpsFlowControlHandler不被执行的问题

Abierto
#4,646 4 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Java
Estrellas
1.9k
Forks
814
Merge medio
8 d 23 h
PR fusionados (30 d)
1

Descripción

当请求走到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,而是有什么其他设计,希望能够得到解答,万分感谢!

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Línea de trabajo

Comienza en doInvoke y sigue cómo cambia handlerIndex antes de que se alcance ProviderQpsFlowControlHandler. Lee el orden de handlerList y la comprobación inicial de handlerIndex del handler; después, confirma si el handler se omite en este flujo. Se considera terminado cuando se documenta el diseño previsto o se produce un fix específico con evidencias de que el handler se ejecuta correctamente.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
java
Área
backend
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
25/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.