Summary
When using in-memory tables in DSE. The setting of disk_access_mode
in the cassandra.yaml
must be mmap
Applies to
- DSE 5.1 and earlier
Symptoms
If a a table with the compaction strategy org.apache.cassandra.db.compaction.MemoryOnlyStrategy
is created and the node has disk_access_mode: standard
set in the cassandra.yaml
, DSE can fail to start with the following error:
ERROR [main] 2019-01-22 12:15:38,368 MemoryOnlyStrategy.java:401 - There was a problem mlocking a segment for file BigTableReader(path='/var/lib/cassandra/data/mykeyspace/mytable-81718281fa3511e7b2f67198b740403f/.mms_hier_lfd/mc-13-big-Data.db') ERROR [main] 2018-06-22 12:15:38,368 MemoryOnlyStrategy.java:402 - Exception: java.lang.IllegalArgumentException: SSTable Index is not mmapped, is compression turned off? BufferedSegmentedFile(path='/var/lib/cassandra/data/mykeyspace/mytable -81718281fa3511e7b2f67198b740403f/.mms_hier_lfd/mc-13-big-Index.db', length=355)
Cause
Memory only SSTables have to be mapped into off-heap memory. Therefore, the disk_access_mode
setting must use a mode that supports this.
Solution
Ensure the disk_access_mode
setting in cassandra.yaml
is set to mmap
.
See also
- DataStax Enterprise documentation cassandra.yaml
- Support KB article FAQ - Use of disk_access_mode in DSE 5.1 and earlier
- Support KB article Increased memory use on nodes after upgrading to DSE 5.0 or DSE 5.1