> 1. With a ConsistencyLevel of quorum, does > FBUtilities.waitForFutures() wait for read repair to complete before > returning? No That's just a utility method. Nothing on the read path waits for Read Repair, and controlled by read_repair_chance CF property, it's all async to the client request. There is no CL, the messages are sent to individual nodes.
> 2. When read repair applies a mutation, it needs to obtain a lock for > the associated memtable. What lock are you referring to? When Read Repair (the RowDataResolver) wants to send a mutation it uses the MessageServer. On the write path there is a server wide RW lock call the sync lock. > I've seen readrepair spend a few seconds stalling in > org.apache.cassandra.db.Table.apply). This could be contention around the sync lock, look for blocked tasks in the flush writer thread pool. I did a talk on cassandra internals at Apache Con 3 weeks ago, not sure when the video is going to be up but here are the slides http://www.slideshare.net/aaronmorton/apachecon-nafeb2013 Cheers ----------------- Aaron Morton Freelance Cassandra Consultant New Zealand @aaronmorton http://www.thelastpickle.com On 16/03/2013, at 12:21 PM, Jasdeep Hundal <dsjas...@gmail.com> wrote: > I've got a couple of questions related issues I'm encountering using > Cassandra under a heavy write load: > > 1. With a ConsistencyLevel of quorum, does > FBUtilities.waitForFutures() wait for read repair to complete before > returning? > 2. When read repair applies a mutation, it needs to obtain a lock for > the associated memtable. Does compaction obtain this same lock? (I'm > asking because I've seen readrepair spend a few seconds stalling in > org.apache.cassandra.db.Table.apply). > > Thanks, > Jasdeep