zrlw opened a new pull request, #15436:
URL: https://github.com/apache/dubbo/pull/15436

   ## What is the purpose of the change?
   submit pr again for https://github.com/apache/dubbo/pull/15368 which has 
been reverted because it has defects should be fixed.
   
   try to fix #15233 ```No provider available``` issue, the roots of the issue 
is client sent large headers frame before receiving server connection preface 
(http2 settings frame), which cause server sent back go away frame and the 
connection was disconnected by the server.
   ![go away 
issue](https://github.com/user-attachments/assets/a60f02eb-1817-4bd7-ae6a-ecc4989d289a)
   see details at https://httpwg.org/specs/rfc7540.html#ConnectionHeader
   ```
   3.5. HTTP/2 Connection Preface
   In HTTP/2, each endpoint is required to send a connection preface as a final 
confirmation of the protocol in use and to establish the initial settings for 
the HTTP/2 connection. The client and server each send a different connection 
preface.
   The client connection preface starts with a sequence of 24 octets, which in 
hex notation is:
   0x505249202a20485454502f322e300d0a0d0a534d0d0a0d0a
   That is, the connection preface starts with the string PRI * 
HTTP/2.0\r\n\r\nSM\r\n\r\n). This sequence MUST be followed by a SETTINGS frame 
(Section 6.5), which MAY be empty. 
   ... ...
   The server connection preface consists of a potentially empty SETTINGS frame 
(Section 6.5) that MUST be the first frame the server sends in the HTTP/2 
connection.
   ```
   
   
https://quafoo.gitbooks.io/http2-rfc7540-zh-cn-en/content/chapter3/section3.5.html
   ```
   HTTP/2 Connection Preface / HTTP/2连接前奏
   在HTTP/2中,要求两端都要发送一个连接前奏,作为对所使用协议的最终确认,并确定HTTP/2连接的初始设置。客户端和服务端各自发送不同的连接前奏。
   客户端连接前奏以一个24字节的序列开始,用十六进制表示为:
   0x505249202a20485454502f322e300d0a0d0a534d0d0a0d0a
   即,连接前奏以字符串"PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n"开始。这个序列后面必须跟一个可以为空的 SETTINGS 帧( 
6.5节 )。
   ... ...
   服务端连接前奏包含一个可能为空的 SETTINGS 帧( 6.5节 ),它必须由服务端在HTTP/2连接中首先发送。
   ```
   
   ## Checklist
   - [x] Make sure there is a 
[GitHub_issue](https://github.com/apache/dubbo/issues) field for the change.
   - [x] Write a pull request description that is detailed enough to understand 
what the pull request does, how, and why.
   - [x] Write necessary unit-test to verify your logic correction. If the new 
feature or significant change is committed, please remember to add sample in 
[dubbo samples](https://github.com/apache/dubbo-samples) project.
   - [x] Make sure gitHub actions can pass. [Why the workflow is failing and 
how to fix it?](../CONTRIBUTING.md)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to