[ 
https://issues.apache.org/jira/browse/CASSANDRA-658?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12795726#action_12795726
 ] 

Jonathan Ellis edited comment on CASSANDRA-658 at 1/1/10 2:23 AM:
------------------------------------------------------------------

this actually has a race for simple columns: if a value is preset for a given 
column name, and two threads (A and B) run the putIfAbsent part at the same 
time, then A goes into the synchronized block and changes the value, thread C 
could attempt addColumn and sync on the value put by A, while B syncs on the 
old value.

This should be fixable by using replace(), not put().

      was (Author: jbellis):
    this actually has a race for simple columns: if a value is preset for a 
given column name, and two threads (A and B) run the putIfAbsent part at the 
same time, then A goes into the synchronized block and changes the value, 
thread C could attempt addColumn and sync on the value put by A, while B syncs 
on the old value.
  
> Hinted Handoff CF contention
> ----------------------------
>
>                 Key: CASSANDRA-658
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-658
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 0.5
>         Environment: debian lenny amd64 OpenJDK 64-Bit Server VM (build 
> 1.6.0_0-b11, mixed mode)
>            Reporter: Brandon Williams
>            Assignee: Jonathan Ellis
>             Fix For: 0.9
>
>         Attachments: 
> 0001-use-throughput-and-op-count-instead-of-size-and-column.txt, 
> 0002-replace-sharded-row-locks-with-column-level-locking.txt, 
> 0003-remove-atomic-size-from-sc.txt
>
>
> Hinted handoff causes a lot of contention on the HH CF, causing insert speed 
> to massively drop.  Most of the row mutation stage threads end up blocking on 
> each other at Memtable.resolve.  This is because HH sends the hint to the 
> closest node, which will always be the node handling the write.
> To reproduce: start a cluster with even InitialTokens, and begin a constant 
> stream of writes to one node, with an even key distribution. (I used 4 nodes 
> and stress.py in random mode.)  Take a node down, and the insert rate begin 
> to drop, eventually settling between 100-300/s and sustaining there.  
> Bringing the down node back up will restore the original insert rate.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to