[ https://issues.apache.org/jira/browse/CASSANDRA-5661?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Pavel Yaskevich updated CASSANDRA-5661: --------------------------------------- Attachment: CASSANDRA-5661-v2-global-multiway-per-sstable.patch bq. Can you elaborate? Please that a look to v2 patch PoolingSegmentFile.getSegment() method, I have added comment about that. v2 patch makes cache global and adds per borrow loading of missing items. The problem I encountered is that system is unable to start because of the following error: I'm not sure if I'm doing something wrong or it's a bug in multiway pool {noformat} INFO 22:19:07,254 Opening /var/lib/cassandra/data/system/local/system-local-ja-21 (520 bytes) ERROR 22:19:07,298 Exception encountered during startup com.google.common.util.concurrent.UncheckedExecutionException: java.lang.NullPointerException at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2258) at com.google.common.cache.LocalCache.get(LocalCache.java:3990) at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4793) at com.github.benmanes.multiway.TransferPool.newResourceHandle(TransferPool.java:206) at com.github.benmanes.multiway.TransferPool.tryToGetResourceHandle(TransferPool.java:186) at com.github.benmanes.multiway.TransferPool.getResourceHandle(TransferPool.java:167) at com.github.benmanes.multiway.TransferPool.borrow(TransferPool.java:152) at com.github.benmanes.multiway.TransferPool.borrow(TransferPool.java:143) at org.apache.cassandra.io.util.PoolingSegmentedFile.getSegment(PoolingSegmentedFile.java:64) at org.apache.cassandra.io.sstable.SSTableReader.getFileDataInput(SSTableReader.java:1040) at org.apache.cassandra.db.columniterator.SSTableNamesIterator.createFileDataInput(SSTableNamesIterator.java:96) at org.apache.cassandra.db.columniterator.SSTableNamesIterator.read(SSTableNamesIterator.java:109) at org.apache.cassandra.db.columniterator.SSTableNamesIterator.<init>(SSTableNamesIterator.java:62) at org.apache.cassandra.db.filter.NamesQueryFilter.getSSTableColumnIterator(NamesQueryFilter.java:87) at org.apache.cassandra.db.filter.QueryFilter.getSSTableColumnIterator(QueryFilter.java:62) at org.apache.cassandra.db.CollationController.collectTimeOrderedData(CollationController.java:124) at org.apache.cassandra.db.CollationController.getTopLevelColumns(CollationController.java:53) at org.apache.cassandra.db.ColumnFamilyStore.getTopLevelColumns(ColumnFamilyStore.java:1458) at org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1284) at org.apache.cassandra.db.Keyspace.getRow(Keyspace.java:332) at org.apache.cassandra.db.SliceByNamesReadCommand.getRow(SliceByNamesReadCommand.java:55) at org.apache.cassandra.cql3.statements.SelectStatement.readLocally(SelectStatement.java:227) at org.apache.cassandra.cql3.statements.SelectStatement.executeInternal(SelectStatement.java:245) at org.apache.cassandra.cql3.statements.SelectStatement.executeInternal(SelectStatement.java:56) at org.apache.cassandra.cql3.QueryProcessor.processInternal(QueryProcessor.java:154) at org.apache.cassandra.db.SystemKeyspace.checkHealth(SystemKeyspace.java:456) at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:237) at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:453) at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:496) Caused by: java.lang.NullPointerException at com.github.benmanes.multiway.TransferPool$2.call(TransferPool.java:209) at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4796) at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3589) at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2374) at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2337) at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2252) ... 28 more com.google.common.util.concurrent.UncheckedExecutionException: java.lang.NullPointerException at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2258) at com.google.common.cache.LocalCache.get(LocalCache.java:3990) at com.google.common.cache.LocalCache$LocalManualCache.get(LocalCache.java:4793) at com.github.benmanes.multiway.TransferPool.newResourceHandle(TransferPool.java:206) at com.github.benmanes.multiway.TransferPool.tryToGetResourceHandle(TransferPool.java:186) at com.github.benmanes.multiway.TransferPool.getResourceHandle(TransferPool.java:167) at com.github.benmanes.multiway.TransferPool.borrow(TransferPool.java:152) at com.github.benmanes.multiway.TransferPool.borrow(TransferPool.java:143) at org.apache.cassandra.io.util.PoolingSegmentedFile.getSegment(PoolingSegmentedFile.java:64) at org.apache.cassandra.io.sstable.SSTableReader.getFileDataInput(SSTableReader.java:1040) at org.apache.cassandra.db.columniterator.SSTableNamesIterator.createFileDataInput(SSTableNamesIterator.java:96) at org.apache.cassandra.db.columniterator.SSTableNamesIterator.read(SSTableNamesIterator.java:109) at org.apache.cassandra.db.columniterator.SSTableNamesIterator.<init>(SSTableNamesIterator.java:62) at org.apache.cassandra.db.filter.NamesQueryFilter.getSSTableColumnIterator(NamesQueryFilter.java:87) at org.apache.cassandra.db.filter.QueryFilter.getSSTableColumnIterator(QueryFilter.java:62) at org.apache.cassandra.db.CollationController.collectTimeOrderedData(CollationController.java:124) at org.apache.cassandra.db.CollationController.getTopLevelColumns(CollationController.java:53) at org.apache.cassandra.db.ColumnFamilyStore.getTopLevelColumns(ColumnFamilyStore.java:1458) at org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1284) at org.apache.cassandra.db.Keyspace.getRow(Keyspace.java:332) at org.apache.cassandra.db.SliceByNamesReadCommand.getRow(SliceByNamesReadCommand.java:55) at org.apache.cassandra.cql3.statements.SelectStatement.readLocally(SelectStatement.java:227) at org.apache.cassandra.cql3.statements.SelectStatement.executeInternal(SelectStatement.java:245) at org.apache.cassandra.cql3.statements.SelectStatement.executeInternal(SelectStatement.java:56) at org.apache.cassandra.cql3.QueryProcessor.processInternal(QueryProcessor.java:154) at org.apache.cassandra.db.SystemKeyspace.checkHealth(SystemKeyspace.java:456) at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:237) at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:453) at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:496) Caused by: java.lang.NullPointerException at com.github.benmanes.multiway.TransferPool$2.call(TransferPool.java:209) at com.google.common.cache.LocalCache$LocalManualCache$1.load(LocalCache.java:4796) at com.google.common.cache.LocalCache$LoadingValueReference.loadFuture(LocalCache.java:3589) at com.google.common.cache.LocalCache$Segment.loadSync(LocalCache.java:2374) at com.google.common.cache.LocalCache$Segment.lockedGetOrLoad(LocalCache.java:2337) at com.google.common.cache.LocalCache$Segment.get(LocalCache.java:2252) ... 28 more Exception encountered during startup: java.lang.NullPointerException {noformat} > Discard pooled readers for cold data > ------------------------------------ > > Key: CASSANDRA-5661 > URL: https://issues.apache.org/jira/browse/CASSANDRA-5661 > Project: Cassandra > Issue Type: Bug > Components: Core > Affects Versions: 1.2.1 > Reporter: Jonathan Ellis > Assignee: Pavel Yaskevich > Fix For: 2.0 > > Attachments: CASSANDRA-5661-multiway-per-sstable.patch, > CASSANDRA-5661.patch, CASSANDRA-5661-v2-global-multiway-per-sstable.patch, > DominatorTree.png, Histogram.png > > > Reader pooling was introduced in CASSANDRA-4942 but pooled > RandomAccessReaders are never cleaned up until the SSTableReader is closed. > So memory use is "the worst case simultaneous RAR we had open for this file, > forever." > We should introduce a global limit on how much memory to use for RAR, and > evict old ones. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira