apache / apache/servicecomb-java-chassis

ProviderQpsFlowControlHandler不被执行的问题

Aperta
#4,646 4 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Java
Stelle
1.9k
Fork
814
Merge medio
8g 23h
PR unite (30g)
1

Descrizione

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

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Direzione di ricerca

Inizia da doInvoke e segui come cambia handlerIndex prima che venga raggiunto ProviderQpsFlowControlHandler. Leggi l’ordine di handlerList e il controllo iniziale di handlerIndex del handler, quindi conferma se il handler viene saltato in questo percorso. Il lavoro è completato quando viene documentato il design previsto oppure viene prodotto un fix mirato con evidenze che il handler venga eseguito correttamente.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
java
Ambito
backend
Tipo di issue
Bug
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.