[ https://issues.apache.org/jira/browse/CASSANDRA-9635?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14607578#comment-14607578 ]
Stefania commented on CASSANDRA-9635: ------------------------------------- On 2.1 the {{die}} commit policy works as expected and the process terminates immediately. The {{stop}} policy leaves the main thread blocked but there is an error printed out: {code} ERROR 06:06:59 Failed managing commit log segments. Commit disk failure policy is stop; terminating thread java.lang.IndexOutOfBoundsException: null at java.nio.Buffer.checkIndex(Buffer.java:546) ~[na:1.8.0_45] at java.nio.DirectByteBuffer.putInt(DirectByteBuffer.java:711) ~[na:1.8.0_45] at org.apache.cassandra.db.commitlog.CommitLogDescriptor.writeHeader(CommitLogDescriptor.java:72) ~[main/:na] at org.apache.cassandra.db.commitlog.CommitLogSegment.<init>(CommitLogSegment.java:168) ~[main/:na] at org.apache.cassandra.db.commitlog.CommitLogSegment.freshSegment(CommitLogSegment.java:119) ~[main/:na] at org.apache.cassandra.db.commitlog.CommitLogSegmentManager$1.runMayThrow(CommitLogSegmentManager.java:119) ~[main/:na] at org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:28) [main/:na] at java.lang.Thread.run(Thread.java:745) [na:1.8.0_45] {code} The stack trace of the main thread is: {code} "main" #1 prio=5 os_prio=0 tid=0x00007efcf800c800 nid=0x4e93 waiting on condition [0x00007efcfe35e000] java.lang.Thread.State: WAITING (parking) at sun.misc.Unsafe.park(Native Method) at java.util.concurrent.locks.LockSupport.park(LockSupport.java:304) at org.apache.cassandra.utils.concurrent.WaitQueue$AbstractSignal.awaitUninterruptibly(WaitQueue.java:283) at org.apache.cassandra.db.commitlog.CommitLogSegmentManager.advanceAllocatingFrom(CommitLogSegmentManager.java:271) at org.apache.cassandra.db.commitlog.CommitLogSegmentManager.allocatingFrom(CommitLogSegmentManager.java:203) at org.apache.cassandra.db.commitlog.CommitLog.getContext(CommitLog.java:166) at org.apache.cassandra.db.Memtable.<init>(Memtable.java:66) at org.apache.cassandra.db.DataTracker.init(DataTracker.java:372) at org.apache.cassandra.db.DataTracker.<init>(DataTracker.java:56) at org.apache.cassandra.db.ColumnFamilyStore.<init>(ColumnFamilyStore.java:341) at org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:503) - locked <0x000000009f1b96c0> (a java.lang.Class for org.apache.cassandra.db.ColumnFamilyStore) at org.apache.cassandra.db.ColumnFamilyStore.createColumnFamilyStore(ColumnFamilyStore.java:474) at org.apache.cassandra.db.Keyspace.initCf(Keyspace.java:328) at org.apache.cassandra.db.Keyspace.<init>(Keyspace.java:279) at org.apache.cassandra.db.Keyspace.open(Keyspace.java:121) - locked <0x000000009f1f6080> (a java.lang.Class for org.apache.cassandra.db.Keyspace) at org.apache.cassandra.db.Keyspace.open(Keyspace.java:98) at org.apache.cassandra.db.SystemKeyspace.checkHealth(SystemKeyspace.java:599) at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:284) at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:524) at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:613) Locked ownable synchronizers: - None {code} I was incorrect to say that there is a static deadlock, it's just the main thread is blocked during initialization, nothing else. Given that there is an error printed out, I think we should leave it as is. cc [~jbellis] and [~blambov] Should we ever need to support 2.0, there is an incomplete patch [here|https://github.com/stef1927/cassandra/commits/9635-2.0]. In addition to backporting the die policy, there is indeed a static deadlock when initializing {{CommitLog}}, the solution is to move {{handleCommitFailure}} to a different class, e.g. a standalone class. > Silent startup failure with filesystem that does not support mmap > ----------------------------------------------------------------- > > Key: CASSANDRA-9635 > URL: https://issues.apache.org/jira/browse/CASSANDRA-9635 > Project: Cassandra > Issue Type: Bug > Components: Core > Reporter: Kevin McLaughlin > Assignee: Stefania > Fix For: 2.1.x > > Attachments: c_tdump.txt > > > C* version 2.0.9. > When running C* in virtualbox on OS X via boot2docker with the data directory > on a shared volume from the host system (vboxfs), C* fails to start without > printing any errors. > I do not know if C* is supposed to support filesystems that do not support > mmap (does not appear so), however, I think the failure exposes a static > initialization deadlock > (http://ternarysearch.blogspot.ru/2013/07/static-initialization-deadlock.html). > I believe the virtualbox "bug" is https://www.virtualbox.org/ticket/819. > Stacktrace of the deadlock is attached. When placing a t.printStackTrace() > between lines 115 and 116 in > https://github.com/apache/cassandra/blob/cassandra-2.0.9/src/java/org/apache/cassandra/db/commitlog/CommitLogAllocator.java, > the stack trace at startup is: > {quote} > DEBUG 21:16:54,716 Creating new commit log segment > /var/lib/cassandra/commitlog/CommitLog-3-1435007814714.log > FSWriteError in /var/lib/cassandra/commitlog/CommitLog-3-1435007814714.log > at > org.apache.cassandra.db.commitlog.CommitLogSegment.<init>(CommitLogSegment.java:143) > at > org.apache.cassandra.db.commitlog.CommitLogSegment.freshSegment(CommitLogSegment.java:90) > at > org.apache.cassandra.db.commitlog.CommitLogAllocator.createFreshSegment(CommitLogAllocator.java:263) > at > org.apache.cassandra.db.commitlog.CommitLogAllocator.access$500(CommitLogAllocator.java:50) > at > org.apache.cassandra.db.commitlog.CommitLogAllocator$1.runMayThrow(CommitLogAllocator.java:109) > at org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:28) > at java.lang.Thread.run(Thread.java:745) > Caused by: java.io.IOException: Invalid argument > at sun.nio.ch.FileChannelImpl.map0(Native Method) > at sun.nio.ch.FileChannelImpl.map(FileChannelImpl.java:893) > at > org.apache.cassandra.db.commitlog.CommitLogSegment.<init>(CommitLogSegment.java:133) > ... 6 more > {quote} -- This message was sent by Atlassian JIRA (v6.3.4#6332)