jtuglu1 opened a new issue, #19458:
URL: https://github.com/apache/druid/issues/19458
### Affected Version
All Druid versions containing stream supervisor.
### Description
Druid stream supervisor task runner code has racy logic with the `sequences`
copy-on-write list which is accessed by both the main thread (thread doing the
processing) and the publishing thread (committing the segments). These two
threads can race on the `sequences` list and cause the task to subsequently
crash with the following exception:
```
java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
at
java.base/java.util.concurrent.CopyOnWriteArrayList.elementAt(CopyOnWriteArrayList.java:385)
~[?:?]
at
java.base/java.util.concurrent.CopyOnWriteArrayList.get(CopyOnWriteArrayList.java:398)
~[?:?]
at
org.apache.druid.indexing.seekablestream.SeekableStreamIndexTaskRunner.getLastSequenceMetadata(SeekableStreamIndexTaskRunner.java:1302)
~[druid-indexing-service-34.0.0.jar:34.0.0]
at
org.apache.druid.indexing.seekablestream.SeekableStreamIndexTaskRunner.runInternal(SeekableStreamIndexTaskRunner.java:631)
~[druid-indexing-service-34.0.0.jar:34.0.0]
at
org.apache.druid.indexing.seekablestream.SeekableStreamIndexTaskRunner.run(SeekableStreamIndexTaskRunner.java:295)
[druid-indexing-service-34.0.0.jar:34.0.0]
at
org.apache.druid.indexing.seekablestream.SeekableStreamIndexTask.runTask(SeekableStreamIndexTask.java:159)
[druid-indexing-service-34.0.0.jar:34.0.0]
at
org.apache.druid.indexing.common.task.AbstractTask.run(AbstractTask.java:179)
[druid-indexing-service-34.0.0.jar:34.0.0]
at
org.apache.druid.indexing.overlord.SingleTaskBackgroundRunner$SingleTaskBackgroundRunnerCallable.call(SingleTaskBackgroundRunner.java:478)
[druid-indexing-service-34.0.0.jar:34.0.0]
at
org.apache.druid.indexing.overlord.SingleTaskBackgroundRunner$SingleTaskBackgroundRunnerCallable.call(SingleTaskBackgroundRunner.java:450)
[druid-indexing-service-34.0.0.jar:34.0.0]
at
com.google.common.util.concurrent.TrustedListenableFutureTask$TrustedFutureInterruptibleTask.runInterruptibly(TrustedListenableFutureTask.java:131)
[guava-32.1.3-jre.jar:?]
at
com.google.common.util.concurrent.InterruptibleTask.run(InterruptibleTask.java:76)
[guava-32.1.3-jre.jar:?]
at
com.google.common.util.concurrent.TrustedListenableFutureTask.run(TrustedListenableFutureTask.java:82)
[guava-32.1.3-jre.jar:?]
at
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[?:?]
at
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[?:?]
at java.base/java.lang.Thread.run(Thread.java:840) [?:?]
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]