[ https://issues.apache.org/jira/browse/CASSANDRA-12796?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Milan Majercik updated CASSANDRA-12796: --------------------------------------- Description: We have a table with rather wide partition with a secondary index defined over it. As soon as we try to rebuild the index we observed exhaustion of Java heap and eventual OOM error. After a lengthy investigation we have managed to find a culprit which appears to be a wrong granule of barrier issuances in method {{org.apache.cassandra.db.Keyspace.indexRow}}: {code} *try (OpOrder.Group opGroup = cfs.keyspace.writeOrder.start())* { Set<SecondaryIndex> indexes = cfs.indexManager.getIndexesByNames(idxNames); Iterator<ColumnFamily> pager = QueryPagers.pageRowLocally(cfs, key.getKey(), DEFAULT_PAGE_SIZE); while (pager.hasNext()) { ColumnFamily cf = pager.next(); ColumnFamily cf2 = cf.cloneMeShallow(); for (Cell cell : cf) { if (cfs.indexManager.indexes(cell.name(), indexes)) cf2.addColumn(cell); } cfs.indexManager.indexRow(key.getKey(), cf2, opGroup); } *}* {code} > Heap exhaustion when rebuilding secondary index over a table with wide > partitions > --------------------------------------------------------------------------------- > > Key: CASSANDRA-12796 > URL: https://issues.apache.org/jira/browse/CASSANDRA-12796 > Project: Cassandra > Issue Type: Bug > Components: Core > Reporter: Milan Majercik > Priority: Critical > > We have a table with rather wide partition with a secondary index defined > over it. As soon as we try to rebuild the index we observed exhaustion of > Java heap and eventual OOM error. After a lengthy investigation we have > managed to find a culprit which appears to be a wrong granule of barrier > issuances in method {{org.apache.cassandra.db.Keyspace.indexRow}}: > {code} > *try (OpOrder.Group opGroup = cfs.keyspace.writeOrder.start())* > { > Set<SecondaryIndex> indexes = > cfs.indexManager.getIndexesByNames(idxNames); > Iterator<ColumnFamily> pager = QueryPagers.pageRowLocally(cfs, > key.getKey(), DEFAULT_PAGE_SIZE); > while (pager.hasNext()) > { > ColumnFamily cf = pager.next(); > ColumnFamily cf2 = cf.cloneMeShallow(); > for (Cell cell : cf) > { > if (cfs.indexManager.indexes(cell.name(), indexes)) > cf2.addColumn(cell); > } > cfs.indexManager.indexRow(key.getKey(), cf2, opGroup); > } > *}* > {code} -- This message was sent by Atlassian JIRA (v6.3.4#6332)