eclipse-ee4j / eclipse-ee4j/tyrus

java.lang.StringIndexOutOfBoundsException on large message?

Open
#632 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Java
Stars
128
Forks
49
PR merge metrics
No merged PRs in 30d

Description

```
Exception in thread "tyrus-1-thread-1" java.lang.StringIndexOutOfBoundsException: String index out of range: 2048
at java.lang.AbstractStringBuilder.getChars(AbstractStringBuilder.java:385)
at java.lang.StringBuffer.getChars(StringBuffer.java:245)
at org.glassfish.tyrus.core.ReaderBuffer.getNextChars(ReaderBuffer.java:127)
at org.glassfish.tyrus.core.BufferedStringReader.read(BufferedStringReader.java:66)
at java.io.Reader.read(Reader.java:140)
at com.google.common.io.CharStreams.copyReaderToBuilder(CharStreams.java:120)
at com.google.common.io.CharStreams.toStringBuilder(CharStreams.java:178)
at com.google.common.io.CharStreams.toString(CharStreams.java:164)
at com.devinrsmith.TextMessageBuildingEndpoint.onTextMessage(TextMessageBuildingEndpoint.java:32)
at com.devinrsmith.MessageBuildingEndpoint$TextHandler.onMessage(MessageBuildingEndpoint.java:297)
at com.devinrsmith.MessageBuildingEndpoint$TextHandler.onMessage(MessageBuildingEndpoint.java:287)
at org.glassfish.tyrus.core.ReaderBuffer$1.run(ReaderBuffer.java:179)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
```

My implementation is basically:
```java
class TextHandler implements MessageHandler.Whole {
@Override
public void onMessage(Reader reader) {
String x = com.google.common.io.CharStreams.toString(reader);
...
}
}
```

This looks like a potential problem with the underlying `Reader`, `ReaderBuffer`?

Contributor guide

Open the contributing guide

Research direction

Start with the ReaderBuffer.getNextChars stack frame in ReaderBuffer.java, then inspect BufferedStringReader.read and the supplied Reader-based message handler. Reproduce the failure with a message large enough to reach index 2048 and determine whether the reader completes without StringIndexOutOfBoundsException.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
backend, networking
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.