Details
-
Bug
-
Status: Resolved
-
Normal
-
Resolution: Fixed
-
None
-
Availability - Process Crash
-
Normal
-
Normal
-
Unit Test
-
All
-
None
-
Description
Found in CASSANDRA-17085.
https://app.circleci.com/pipelines/github/dcapwell/cassandra/1069/workflows/26b7b83a-686f-4516-a56a-0709d428d4f2/jobs/7264
https://app.circleci.com/pipelines/github/dcapwell/cassandra/1069/workflows/26b7b83a-686f-4516-a56a-0709d428d4f2/jobs/7256
ERROR [Stream-Deserializer-/127.0.0.1:7000-f2eb1a15] 2021-11-02 21:35:40,983 DefaultFSErrorHandler.java:104 - Exiting forcefully due to file system exception on startup, disk failure policy "stop" org.apache.cassandra.io.FSWriteError: java.nio.channels.ClosedChannelException at org.apache.cassandra.io.sstable.format.big.BigTableZeroCopyWriter.write(BigTableZeroCopyWriter.java:227) at org.apache.cassandra.io.sstable.format.big.BigTableZeroCopyWriter.writeComponent(BigTableZeroCopyWriter.java:206) at org.apache.cassandra.db.streaming.CassandraEntireSSTableStreamReader.read(CassandraEntireSSTableStreamReader.java:125) at org.apache.cassandra.db.streaming.CassandraIncomingFile.read(CassandraIncomingFile.java:84) at org.apache.cassandra.streaming.messages.IncomingStreamMessage$1.deserialize(IncomingStreamMessage.java:51) at org.apache.cassandra.streaming.messages.IncomingStreamMessage$1.deserialize(IncomingStreamMessage.java:37) at org.apache.cassandra.streaming.messages.StreamMessage.deserialize(StreamMessage.java:50) at org.apache.cassandra.streaming.StreamDeserializingTask.run(StreamDeserializingTask.java:62) at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) at java.lang.Thread.run(Thread.java:748) Caused by: java.nio.channels.ClosedChannelException: null at org.apache.cassandra.net.AsyncStreamingInputPlus.reBuffer(AsyncStreamingInputPlus.java:136) at org.apache.cassandra.net.AsyncStreamingInputPlus.consume(AsyncStreamingInputPlus.java:155) at org.apache.cassandra.io.sstable.format.big.BigTableZeroCopyWriter.write(BigTableZeroCopyWriter.java:217) ... 9 common frames omitted
When bootstrap fails and streaming is closed, this triggers the disk failure policy which causes the JVM to halt by default (if this happens outside of bootstrap, then we stop transports and keep the JVM up).
org.apache.cassandra.streaming.StreamDeserializingTask attempts to handle this by ignoring this exception, but the call to org.apache.cassandra.streaming.messages.IncomingStreamMessage$1.deserialize
Does try/catch and inspects exception; triggering this condition.
Attachments
Issue Links
- is related to
-
CASSANDRA-17076 Fix failing test: test_bootstrap_with_reset_bootstrap_state - bootstrap_test.TestBootstrap
- Resolved
-
CASSANDRA-17081 Fix test: bootstrap_test.py::TestBootstrap::test_bootstrap_with_reset_bootstrap_state
- Resolved
-
CASSANDRA-17085 commit log was switched from non-daemon to daemon threads, which causes the JVM to exit in some case as no non-daemon threads are active
- Resolved
-
CASSANDRA-18733 Waiting indefinitely on ReceivedMessage response in StreamSession#receive() can cause deadlock
- Resolved
- links to