jetty / jetty/jetty.project

Jetty Client using UnixSocket - IllegalArgumentException newPosition > limit

Open
#13,400 1 comment 0 reactions 1 assignee Claimed by @sbordet View on GitHub
Bug
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

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.