eclipse-ee4j / eclipse-ee4j/tyrus
java.lang.StringIndexOutOfBoundsException on large message?
- 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
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