Jetty Client using UnixSocket - IllegalArgumentException newPosition > limit
- Dominant language
- Java
- Stars
- 4.1k
- Forks
- 2k
- Avg merge
- 3d 56m
- Merged PRs (30d)
- 48
Description
**Jetty version(s)**
12.0.22
**Jetty Environment**
ee10
**Java version/vendor** `(use: java -version)`
JDK 21
**OS type/version**
Linux
**Description**
```
java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: newPosition > limit: (27 > 0)
at java.base/java.util.concurrent.CompletableFuture.reportGet(Unknown Source)
at java.base/java.util.concurrent.CompletableFuture.get(Unknown Source)
Caused by: java.lang.IllegalArgumentException: newPosition > limit: (27 > 0)
at java.base/java.nio.Buffer.createPositionException(Unknown Source)
at java.base/java.nio.Buffer.position(Unknown Source)
at java.base/java.nio.ByteBuffer.position(Unknown Source)
at java.base/java.nio.MappedByteBuffer.position(Unknown Source)
at java.base/java.nio.MappedByteBuffer.position(Unknown Source)
at java.base/sun.nio.ch.IOUtil.readIntoNativeBuffer(Unknown Source)
at java.base/sun.nio.ch.IOUtil.read(Unknown Source)
at java.base/sun.nio.ch.IOUtil.read(Unknown Source)
at java.base/sun.nio.ch.SocketChannelImpl.read(Unknown Source)
at org.eclipse.jetty.io.SocketChannelEndPoint.fill(SocketChannelEndPoint.java:84)
at org.eclipse.jetty.client.transport.internal.HttpReceiverOverHTTP.parseAndFill(HttpReceiverOverHTTP.java:272)
at org.eclipse.jetty.client.transport.internal.HttpReceiverOverHTTP.receive(HttpReceiverOverHTTP.java:77)
at org.eclipse.jetty.client.transport.internal.HttpChannelOverHTTP.receive(HttpChannelOverHTTP.java:97)
at org.eclipse.jetty.client.transport.internal.HttpConnectionOverHTTP.onFillable(HttpConnectionOverHTTP.java:250)
at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:322)
at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:99)
at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:480)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:443)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:293)
at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:201)
at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:311)
at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:981)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1211)
at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1166)
at java.base/java.lang.Thread.run(Unknown Source)
```
Also seen with different numbers:
```
java.util.concurrent.ExecutionException: java.lang.IllegalArgumentException: newPosition > limit: (1 > 0)
```
**How to reproduce?**
I have seen the above trace occur a handful of times / very rarely, and I am afraid I am not sure how to reproduce.
This happens when talking to an HTTP server via a Unix socket, client config:
```java
ClientConnector unixDomainClientConnector = ClientConnector.forUnixDomain(Path.of(socketPath));
unixDomainClientConnector.setConnectTimeout(connectTimeout);
HttpClientTransportOverHTTP http1Transport = new HttpClientTransportOverHTTP(unixDomainClientConnector);
HttpClient httpClient = new HttpClient(http1Transport);
httpClient.start();
```
Contributor guide
Assessment
This issue has not been assessed yet.