question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

io.helidon.webserver.HttpPipelineTest hangs periodically

See original GitHub issue

Periodically the io.helidon.webserver.HttpPipelineTest test case hangs seemingly indefinitely. I wanted to capture this issue here. There is no output.

Issue Analytics

  • State:closed
  • Created 2 years ago
  • Comments:16 (16 by maintainers)

github_iconTop GitHub Comments

1reaction
barchettacommented, Apr 19, 2022

The above PRs seem to fix the issue (fingers crossed). Closing.

0reactions
barchettacommented, Apr 13, 2022

I’m seeing this more often in helidon-2.x when upgrading netty to 4.1.76.Final in my local repo. The test fails with java.net.SocketTimeoutException:

java.net.SocketTimeoutException: Read timed out
	at java.base/java.net.SocketInputStream.socketRead0(Native Method)
	at java.base/java.net.SocketInputStream.socketRead(SocketInputStream.java:115)
	at java.base/java.net.SocketInputStream.read(SocketInputStream.java:168)
	at java.base/java.net.SocketInputStream.read(SocketInputStream.java:140)
	at java.base/sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
	at java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
	at java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
	at java.base/java.io.InputStreamReader.read(InputStreamReader.java:181)
	at java.base/java.io.BufferedReader.fill(BufferedReader.java:161)
	at java.base/java.io.BufferedReader.readLine(BufferedReader.java:326)
	at java.base/java.io.BufferedReader.readLine(BufferedReader.java:392)
	at io.helidon.webserver.utils.SocketHttpClient.receive(SocketHttpClient.java:266)
	at io.helidon.webserver.HttpPipelineTest.testPipelining(HttpPipelineTest.java:116)

I did not see this in helidon 3 (master). Here is the test output (I added the request number to one of the log output – that’s why it might look slightly different than what is in the helidon-2.x branch):

2022.04.13 11:16:26 INFO io.helidon.webserver.NettyWebServer Thread[nioEventLoopGroup-62-1,10,main]: Channel '@default' started: [id: 0xed5f5988, L:/127.0.0.1:61259]
2022.04.13 11:16:26 INFO io.helidon.webserver.HttpPipelineTest Thread[main,5,main]: Started server at: https://localhost:61259
2022.04.13 11:16:26 INFO io.helidon.webserver.HttpPipelineTest Thread[main,5,main]: put client Thread[main,5,main]
2022.04.13 11:16:27 INFO io.helidon.webserver.HttpPipelineTest Thread[nioEventLoopGroup-63-1,10,main]: put server Thread[nioEventLoopGroup-63-1,10,main]
2022.04.13 11:16:27 INFO io.helidon.webserver.HttpPipelineTest Thread[nioEventLoopGroup-63-1,10,main]: put: / Thread[nioEventLoopGroup-63-1,10,main]
2022.04.13 11:16:27 INFO io.helidon.webserver.HttpPipelineTest Thread[main,5,main]: request0 client Thread[main,5,main]
2022.04.13 11:16:27 INFO io.helidon.webserver.HttpPipelineTest Thread[nioEventLoopGroup-63-1,10,main]: get server 0 Thread[nioEventLoopGroup-63-1,10,main]
2022.04.13 11:16:27 INFO io.helidon.webserver.HttpPipelineTest Thread[nioEventLoopGroup-63-1,10,main]: get server 1 Thread[nioEventLoopGroup-63-1,10,main]
2022.04.13 11:16:27 INFO io.helidon.webserver.HttpPipelineTest Thread[pool-305-thread-1,5,main]: get server schedule 1 Thread[pool-305-thread-1,5,main]
2022.04.13 11:16:28 INFO io.helidon.webserver.HttpPipelineTest Thread[pool-305-thread-1,5,main]: get server schedule 0 Thread[pool-305-thread-1,5,main]
2022.04.13 11:16:28 INFO io.helidon.webserver.HttpPipelineTest Thread[main,5,main]: request1 client Thread[main,5,main]
2022.04.13 11:16:38 INFO io.helidon.webserver.NettyWebServer Thread[nioEventLoopGroup-62-1,10,main]: Channel '@default' closed: [id: 0xed5f5988, L:/127.0.0.1:61259]

I think this output looks OK. We do a PUT and two GETs. The server sends the GET responses out of order (that’s what we are testing). The client reads the first GET response and it’s correct (0), but it blocks when it reads the second response.

Read more comments on GitHub >

github_iconTop Results From Across the Web

io.helidon.webserver.HttpPipelineTest hangs periodically #3301
Periodically the io.helidon.webserver.HttpPipelineTest test case hangs seemingly indefinitely. I wanted to capture this issue here.
Read more >
Package io.helidon.webserver
declaration: module: io.helidon.webserver, package: io.helidon.webserver. ... This package contains JAX-RS (Jersey based) support for WebServer 's Routing .
Read more >
WebServer (Helidon Project 2.5.4 API)
Represents a immutably configured WEB server. Provides basic lifecycle and monitoring API. Instance can be created from Routing and optionally from Config ...
Read more >
ResponseHeaders (Helidon Project 2.5.4 API)
Extends Parameters interface by adding HTTP response headers oriented constants and convenient methods. Use constants located in Http.Header as standard ...
Read more >
Module io.helidon.webserver
Utilities for PKI configuration and loading of certificates and keys. Helidon Common Reactive Library.
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found