zrlw commented on issue #15233:
URL: https://github.com/apache/dubbo/issues/15233#issuecomment-2864877424
The reason is the triple client sended header with large size meta data
(131072) to server before calling ```HpackEncoder#setMaxHeaderListSize``` for
the inboud settings (MAX_HEADER_LIST_SIZE=32768) received from the server, the
header size exceeded max allowed size (40960), so the sever responded GO_AWAY
frame.
set breakpoint at the client OUTBOUND:
```
09:33:19.333 |-DEBUG [NettyClientWorker-4-1]
H2_CLIENT:214 -| [id: 0x760dcf34, L:/192.168.122.75:64974 -
R:/192.168.122.75:50052] OUTBOUND HEADERS: streamId=3
headers=DefaultHttp2Headers[:scheme: http, :authority: 127.0.0.1:50052,
:method: POST, :path: /org.apache.dubbo.sample.tri.Greeter/greet, content-type:
application/grpc+proto, te: trailers, grpc-timeout: 300000m,
tri-consumer-appname: org.apache.dubbo.sample.tri.direct.TriDirectClientTest,
grpc-accept-encoding: gzip,snappy, timeout: 300000, large-size-meta:
aaaaaaaaaa...] padding=0 endStream=false
<== the length of 'aaaa...' is 131072
09:34:26.676 |-DEBUG [NettyClientWorker-4-1]
H2_CLIENT:214 -| [id: 0x760dcf34, L:/192.168.122.75:64974 -
R:/192.168.122.75:50052] INBOUND SETTINGS: ack=false
settings={HEADER_TABLE_SIZE=4096, MAX_CONCURRENT_STREAMS=2147483647,
INITIAL_WINDOW_SIZE=8388608, MAX_FRAME_SIZE=8388608, MAX_HEADER_LIST_SIZE=32768}
<== received setting frame which contains MAX_HEADER_LIST_SIZE=32768
```
server log:
```
09:34:26.622 |-WARN [NettyServerWorker-5-1]
.transport.TripleServerConnectionHandler: -| [DUBBO] Channel:[id:
0x6b546e25, L:/192.168.122.75:50052 - R:/192.168.122.75:64889] Error, dubbo
version: 3.3.4-SNAPSHOT, current host: 192.168.122.75, error code: 4-14. This
may be caused by , go to https://dubbo.apache.org/faq/4/14 to find
instructions.
io.netty.handler.codec.http2.Http2Exception: Header size exceeded max
allowed size (40960)
at
io.netty.handler.codec.http2.Http2Exception.connectionError(Http2Exception.java:98)
~[netty-codec-http2-4.2.0.Final.jar:4.2.0.Final]
at
io.netty.handler.codec.http2.Http2CodecUtil.headerListSizeExceeded(Http2CodecUtil.java:243)
~[netty-codec-http2-4.2.0.Final.jar:4.2.0.Final]
<== received large header
... ... ...
09:34:26.670 |-DEBUG [NettyServerWorker-5-2]
H2_SERVER:214 -| [id: 0x9e812d00, L:/192.168.122.75:50052 -
R:/192.168.122.75:64974] OUTBOUND SETTINGS: ack=false
settings={HEADER_TABLE_SIZE=4096, MAX_CONCURRENT_STREAMS=2147483647,
INITIAL_WINDOW_SIZE=8388608, MAX_FRAME_SIZE=8388608, MAX_HEADER_LIST_SIZE=32768}
<== sent setting frame to client
09:34:26.671 |-DEBUG [NettyServerWorker-5-2]
H2_SERVER:214 -| [id: 0x9e812d00, L:/192.168.122.75:50052 -
R:/192.168.122.75:64974] OUTBOUND WINDOW_UPDATE: streamId=0
windowSizeIncrement=16646146
09:34:26.672 |-DEBUG [NettyServerWorker-5-1]
H2_SERVER:214 -| [id: 0x6b546e25, L:/192.168.122.75:50052 -
R:/192.168.122.75:64889] OUTBOUND GO_AWAY: lastStreamId=0 errorCode=0 length=0
bytes=
<== sent go away frame to client
```
--
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]