[ https://issues.apache.org/jira/browse/CASSANDRA-6692?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13906400#comment-13906400 ]
Aleksey Yeschenko commented on CASSANDRA-6692: ---------------------------------------------- This seems to have broken a bunch of tests (getting NPE from isLeaf()). For example, {noformat} [junit] Testcase: testIndexUpdate(org.apache.cassandra.db.ColumnFamilyStoreTest): Caused an ERROR [junit] null [junit] java.lang.NullPointerException [junit] at org.apache.cassandra.utils.btree.BTree.isLeaf(BTree.java:302) [junit] at org.apache.cassandra.utils.btree.NodeBuilder.update(NodeBuilder.java:131) [junit] at org.apache.cassandra.utils.btree.Builder.update(Builder.java:74) [junit] at org.apache.cassandra.utils.btree.BTree.update(BTree.java:157) [junit] at org.apache.cassandra.db.AtomicBTreeColumns.addAllWithSizeDelta(AtomicBTreeColumns.java:254) [junit] at org.apache.cassandra.db.Memtable.put(Memtable.java:195) [junit] at org.apache.cassandra.db.ColumnFamilyStore.apply(ColumnFamilyStore.java:1096) [junit] at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:370) [junit] at org.apache.cassandra.db.Keyspace.apply(Keyspace.java:328) [junit] at org.apache.cassandra.db.Mutation.apply(Mutation.java:205) [junit] at org.apache.cassandra.db.ColumnFamilyStoreTest.testIndexUpdate(ColumnFamilyStoreTest.java:389) {noformat} > AtomicBTreeColumns Improvements > ------------------------------- > > Key: CASSANDRA-6692 > URL: https://issues.apache.org/jira/browse/CASSANDRA-6692 > Project: Cassandra > Issue Type: Improvement > Components: Core > Reporter: Benedict > Assignee: Benedict > Priority: Minor > Labels: easyfix, performance > Fix For: 2.1 > > > There are two improvements to make to the BTree code that should help: > 1) It turns out Stack Allocation is more rubbish than we had hoped, and so > the fast route actually allocates garbage. It's unlikely this reduces > throughput, but the increased young-gen pressure is probably unwelcome. I > propose to remove the fast route for now. > 2) It is not uncommon to race to perform an update, so that the new values > are actually out-of-date when we come to modify the tree. In this case the > update should recognise that the original (portion of) the tree has not been > modified, and simply return it, without allocating a new one. -- This message was sent by Atlassian JIRA (v6.1.5#6160)