Netty Decoding failed DefaultFullHttpRequest
Asked Answered
I

2

8

I am currently developing using spring boot webflux. I am using websocket clients and APIs clients, but this error occurs a few hours after deployment. I couldn't figure out where this error was coming from. Where does this problem come from?

The error log is as below.

[reactor-http-epoll-2] r.n.http.server.HttpServerOperations     : [9c0c3ede, L:/172.25.0.8:8080 - R:/94.232.43.63:34534] Decoding failed: DefaultFullHttpRequest(decodeResult: failure(java.lang.IllegalArgumentException: text is empty (possibly HTTP/0.9)), version: HTTP/1.0, content: UnpooledByteBufAllocator$InstrumentedUnpooledUnsafeHeapByteBuf(ridx: 0, widx: 0, cap: 0))
GET /bad-request HTTP/1.0 :

java.lang.IllegalArgumentException: text is empty (possibly HTTP/0.9)
        at io.netty.handler.codec.http.HttpVersion.valueOf(HttpVersion.java:65) ~[netty-codec-http-4.1.72.Final.jar:4.1.72.Final]
        at io.netty.handler.codec.http.HttpRequestDecoder.createMessage(HttpRequestDecoder.java:126) ~[netty-codec-http-4.1.72.Final.jar:4.1.72.Final]
        at io.netty.handler.codec.http.HttpObjectDecoder.decode(HttpObjectDecoder.java:273) ~[netty-codec-http-4.1.72.Final.jar:4.1.72.Final]
        at io.netty.handler.codec.http.HttpServerCodec$HttpServerRequestDecoder.decode(HttpServerCodec.java:140) ~[netty-codec-http-4.1.72.Final.jar:4.1.72.Final]
        at io.netty.handler.codec.ByteToMessageDecoder.decodeRemovalReentryProtection(ByteToMessageDecoder.java:507) ~[netty-codec-4.1.72.Final.jar:4.1.72.Final]
        at io.netty.handler.codec.ByteToMessageDecoder.callDecode(ByteToMessageDecoder.java:446) ~[netty-codec-4.1.72.Final.jar:4.1.72.Final]

Sometimes broken characters are also found along with the sentence 'text is empty'. If this is an encoding issue, how should I set it up?

Ironsides answered 31/12, 2021 at 6:47 Comment(1)
did you get any solution for this issue? I am facing the same issue that it fails while decoding.Beutler
J
13

You may be running the spring boot app on http only and then hitting it via https (or your browser is redirecting to https), so the http version is not parsed appropriately. You should have also:

java.lang.IllegalArgumentException: invalid version format: S���JZ
        at io.netty.handler.codec.http.HttpVersion.<init>(HttpVersion.java:116) ~[netty-codec-http-4.1.73.Final.jar!/:4.1.73.Final]

Please assure the proper browser/request/protocol/encoding.

Jarrod answered 7/3, 2022 at 1:28 Comment(1)
Thanks! Sometimes how the errors description can be so misleadingProthalamium
M
0

Found the issue to occur, when was delegating all headers from one microservice to another. Now had removed this and i'm selecting specific headers for delegating further.

Masteratarms answered 15/7, 2022 at 9:56 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.