Open iamsanjay opened 1 month ago
Adding more info to it! We are benchmarking Jetty Http2 client and we are indexing document to different Shard-Replica configuration(along with different maxConnectionPerDestination and maxConcurrentStream) in Apache Solr project. However, sometimes our benchmark failed with below exception. Now It's not feasible to enable DEBUG logs in benchmark setting as it generate huge amount of logs, and also due to logging overhead we are not able to re-produce the error.
In above case, however, We tried to index one document using Jetty Http2 client and I see two different exception.
close no_error
I am not sure whether Unconsumed content related to Reset cancel_stream or not. But I had to start from somewhere!
Server exception => org.eclipse.jetty.io.EofException: Reset cancel_stream_error
at org.eclipse.jetty.http2.server.HTTP2ServerConnectionFactory$HTTPServerSessionListener.onReset(HTTP2ServerConnectionFactory.java:163)
org.eclipse.jetty.io.EofException: Reset cancel_stream_error
at org.eclipse.jetty.http2.server.HTTP2ServerConnectionFactory$HTTPServerSessionListener.onReset(HTTP2ServerConnectionFactory.java:163) ~[http2-server-10.0.20.jar:
10.0.20]
at org.eclipse.jetty.http2.HTTP2Stream.notifyReset(HTTP2Stream.java:853) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.http2.HTTP2Stream.onReset(HTTP2Stream.java:563) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.http2.HTTP2Stream.process(HTTP2Stream.java:392) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.http2.HTTP2Session.onReset(HTTP2Session.java:339) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.http2.HTTP2Connection.onReset(HTTP2Connection.java:260) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.http2.parser.BodyParser.notifyReset(BodyParser.java:139) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.http2.parser.ResetBodyParser.onReset(ResetBodyParser.java:94) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.http2.parser.ResetBodyParser.parse(ResetBodyParser.java:61) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.http2.parser.Parser.parseBody(Parser.java:240) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.http2.parser.Parser.parse(Parser.java:167) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.http2.parser.ServerParser.parse(ServerParser.java:126) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.http2.HTTP2Connection$HTTP2Producer.produce(HTTP2Connection.java:350) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.produceTask(AdaptiveExecutionStrategy.java:455) ~[jetty-util-10.0.20.jar:10.0.20]
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:248) ~[jetty-util-10.0.20.jar:10.0.20]
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.produce(AdaptiveExecutionStrategy.java:193) ~[jetty-util-10.0.20.jar:10.0.20]
at org.eclipse.jetty.http2.HTTP2Connection.produce(HTTP2Connection.java:208) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.http2.HTTP2Connection.onFillable(HTTP2Connection.java:155) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.http2.HTTP2Connection$FillableCallback.succeeded(HTTP2Connection.java:450) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100) ~[jetty-io-10.0.20.jar:10.0.20]
at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53) ~[jetty-io-10.0.20.jar:10.0.20]
at org.eclipse.jetty.util.thread.Invocable.invokeNonBlocking(Invocable.java:151) ~[jetty-util-10.0.20.jar:10.0.20]
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.invokeAsNonBlocking(AdaptiveExecutionStrategy.java:438) ~[jetty-util-10.0.20.jar:10.0.20]
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:380) ~[jetty-util-10.0.20.jar:10.0.20]
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:277) ~[jetty-util-10.0.20.jar:10.0.20]
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.produce(AdaptiveExecutionStrategy.java:193) ~[jetty-util-10.0.20.jar:10.0.20]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969) [jetty-util-10.0.20.jar:10.0.20]
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194) [jetty-util-10.0.20.jar:10.0.20]
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149) [jetty-util-10.0.20.jar:10.0.20]
at java.base/java.lang.Thread.run(Thread.java:829) [?:?]
Jetty 10 is at End of Community Support
Please try Jetty 12 and report back if the problem still happens.
However, I do not understand your issue. You are looking at DEBUG logs, and we do report internal exceptions that are part of the implementation, and you should not consider these as problems.
Rather than looking at exceptions reported in DEBUG logs, please report whether you have problems at all.
From your report, looks like everything works fine, you just don't like what we report in the DEBUG logs, which should not be your concern (DEBUG logs are mostly for us, to help troubleshooting).
Thanks for @sbordet for taking a look!
Apologies for mixing up the exception. But below is the exception that I am mainly concerned with which comes right after after benchmark stops abruptly. And DEBUG is not enabled here.
Server exception => org.eclipse.jetty.io.EofException: Reset cancel_stream_error
at org.eclipse.jetty.http2.server.HTTP2ServerConnectionFactory$HTTPServerSessionListener.onReset(HTTP2ServerConnectionFactory.java:163)
org.eclipse.jetty.io.EofException: Reset cancel_stream_error
at org.eclipse.jetty.http2.server.HTTP2ServerConnectionFactory$HTTPServerSessionListener.onReset(HTTP2ServerConnectionFactory.java:163) ~[http2-server-10.0.20.jar:
10.0.20]
at org.eclipse.jetty.http2.HTTP2Stream.notifyReset(HTTP2Stream.java:853) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.http2.HTTP2Stream.onReset(HTTP2Stream.java:563) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.http2.HTTP2Stream.process(HTTP2Stream.java:392) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.http2.HTTP2Session.onReset(HTTP2Session.java:339) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.http2.HTTP2Connection.onReset(HTTP2Connection.java:260) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.http2.parser.BodyParser.notifyReset(BodyParser.java:139) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.http2.parser.ResetBodyParser.onReset(ResetBodyParser.java:94) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.http2.parser.ResetBodyParser.parse(ResetBodyParser.java:61) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.http2.parser.Parser.parseBody(Parser.java:240) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.http2.parser.Parser.parse(Parser.java:167) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.http2.parser.ServerParser.parse(ServerParser.java:126) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.http2.HTTP2Connection$HTTP2Producer.produce(HTTP2Connection.java:350) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.produceTask(AdaptiveExecutionStrategy.java:455) ~[jetty-util-10.0.20.jar:10.0.20]
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:248) ~[jetty-util-10.0.20.jar:10.0.20]
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.produce(AdaptiveExecutionStrategy.java:193) ~[jetty-util-10.0.20.jar:10.0.20]
at org.eclipse.jetty.http2.HTTP2Connection.produce(HTTP2Connection.java:208) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.http2.HTTP2Connection.onFillable(HTTP2Connection.java:155) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.http2.HTTP2Connection$FillableCallback.succeeded(HTTP2Connection.java:450) ~[http2-common-10.0.20.jar:10.0.20]
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100) ~[jetty-io-10.0.20.jar:10.0.20]
at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53) ~[jetty-io-10.0.20.jar:10.0.20]
at org.eclipse.jetty.util.thread.Invocable.invokeNonBlocking(Invocable.java:151) ~[jetty-util-10.0.20.jar:10.0.20]
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.invokeAsNonBlocking(AdaptiveExecutionStrategy.java:438) ~[jetty-util-10.0.20.jar:10.0.20]
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:380) ~[jetty-util-10.0.20.jar:10.0.20]
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:277) ~[jetty-util-10.0.20.jar:10.0.20]
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.produce(AdaptiveExecutionStrategy.java:193) ~[jetty-util-10.0.20.jar:10.0.20]
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969) [jetty-util-10.0.20.jar:10.0.20]
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194) [jetty-util-10.0.20.jar:10.0.20]
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149) [jetty-util-10.0.20.jar:10.0.20]
at java.base/java.lang.Thread.run(Thread.java:829) [?:?]
Yes +1 to upgrade and see If the error still persists.
The main issue is that the benchmark stops unexpectedly before completion. We're currently debugging this problem, as it might be related to Apache Solr. However, I've also encountered the Reset cancel stream error exception, so I wanted to ask if this is something I should be concerned about.
@iamsanjay like @sbordet said, Jetty 10 is at end of community support.
If this occurs on Jetty 12 we can address it, otherwise this issue is considered out of support.
I completely understand, @joakime. I’ll look into the upgrade. I found the documentation on upgrading, though it's specifically for moving from Jetty 11 to 12, but I can start with that. Apache Solr is still on Java 11, but we're in the process of upgrading to Java 21. Once that's done, we can focus on this task. Thank you, @joakime and @sbordet!
jetty_logs.txt Jetty Version 10
Java Version 11
Question Why I am seeing Unconsumed content exception errors in the logs?
I am creating a POST request and sending a data to the Jetty server, and then receiving the response. From the logs, It seems that the server is able to process the stream without any issue. However, while parsing response it is throwing exception -- Unconsumed Content.
Attached the logs!
Basically we are indexing one document and then finally shutdown the server as we shut down we also see this exception.