[
https://issues.apache.org/jira/browse/CASSANDRA-6692?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Benedict updated CASSANDRA-6692:
--------------------------------
Attachment: 6692.fix
Hmm. This actually exposed a bug we already had: reuse of the ThreadLocal
cached instance of the BTree.Builder, through nested BTree updates. This
basically completely breaks everything with SecondaryIndex updates, as we apply
the SI update whilst performing the BTree.update(). I've converted the
ThreadLocal to a queue instead of an instance.
Investigating this I also exposed another bug in the same area, with
CASSANDRA-6655, where we would lose topLevel deletionInfo. I've included the
fix for that in the attached patch.
> 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 beta2
>
> Attachments: 6692.fix
>
>
> 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)