apache / apache/servicecomb-java-chassis

ProviderQpsFlowControlHandler不被执行的问题

Ouverte
#4,646 4 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
Langage dominant
Java
Étoiles
1.9k
Forks
814
Merge moyen
8 j 23 h
PR mergées (30 j)
1

Description

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

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Piste de recherche

Commencez par doInvoke et suivez l’évolution de handlerIndex avant que ProviderQpsFlowControlHandler ne soit atteint. Lisez l’ordre de handlerList ainsi que la vérification initiale de handlerIndex du handler, puis confirmez si le handler est ignoré dans ce chemin. C’est terminé lorsque la conception prévue est documentée ou qu’un correctif ciblé est produit, avec des éléments montrant que le handler s’exécute correctement.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
java
Domaine
backend
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
25/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.