Details
-
Bug
-
Status: Resolved
-
Low
-
Resolution: Fixed
-
None
-
Low
Description
Since 2.2 a failed bootstrap results in a org.apache.cassandra.exceptions.ConfigurationException: Found system keyspace files, but they couldn't be loaded! exception when the node is restarted. This did not happen in 2.1, it just tried to bootstrap again. I know that the workaround is relatively easy, just delete the system keyspace in the data folder on disk and try again, but its a bit annoying that you have to do that.
The problem seems to be that the creation of the system.local table has been moved to just before the bootstrap begins (in 2.1 it was done much earlier) and as a result its still in the memtable och commitlog if the bootstrap failes. Still a few values is inserted to the system.local table at an earlier point in the startup and they have been flushed from the memtable to an sstable. When the node is restarted the SystemKeyspace.checkHealth() is executed before the commitlog is replayed and therefore only see the sstable with an incomplete system.local table and throws an exception.
I think we could fix this very easily by forceFlush the system keyspace in the StorageServiceShutdownHook, I have included a patch that does this.
Attachments
Attachments
Issue Links
- is duplicated by
-
CASSANDRA-11934 System keyspace corruption
- Resolved
-
CASSANDRA-11813 Bad first start leaves node in invalid state.
- Resolved