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

Sylvain Lebresne commented on CASSANDRA-2893:
---------------------------------------------

bq. should we just get rid of AbstractColumnContainer now since it's basically 
just a wrapper around ISortedColumns?

It's still useful to factor the code between ColumnFamily and SuperColumn. If 
we remove it, we'll basically have to duplicate ACC into both CF and SC. But 
I'll be more than happy to remove it when/if we remove SCs :P

bq. Doesn't Guava Functions.identity do the same as ACC.identity?

Totally, I guess I don't know Guava too well. I'll replace it.

bq. I wonder if this is premature optimization or even counterproductive for 
the uncontended case. Did you do any testing around this?

To be honest, I did not test it. But the rational is that I would be surprised 
if checking an atomic ref get (even on each iteration) has any kind of visible 
impact (compared to adding a column to a snaptree), while I have no doubt that 
in the contended case with non trivially small batches not doing this will have 
a visible impact. That was more about trading a probably non-noticeable hit on 
non-contended to avoid any bad outliers.

I also though about doing the the reference check only every few iterations, 
but I figured that would likely don't change anything since again an atomic ref 
get should be really fast.

But obviously it doesn't cost much to check those assumptions and I'll do some 
testing.


I'll also note that we could easily change snaptree by a persistent sorted map. 
This could be faster than snaptree because there would be any internal 
synchronization (while snaptree has internal synchronization, that we mostly 
don't use, except for the fact that they allow a concurrently safe 
copy-on-write). I have a persistent store map implementation almost ready so 
I'll probably do that test at some point, but if we think snaptree is 
acceptable I suggest we go with that at first since it is absolutely unclear 
the persistent sorted map will be faster (it will generate more garbage for 
instance) and I'm sure how long it will take to do such a test.
                
> Add row-level isolation
> -----------------------
>
>                 Key: CASSANDRA-2893
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-2893
>             Project: Cassandra
>          Issue Type: Improvement
>            Reporter: Jonathan Ellis
>            Assignee: Sylvain Lebresne
>            Priority: Minor
>             Fix For: 1.1
>
>         Attachments: 0001-Move-deletion-infos-into-ISortedColumns-v2.patch, 
> 0001-Move-deletion-infos-into-ISortedColumns.patch, 
> 0002-Make-memtable-use-CF.addAll-v2.patch, 
> 0002-Make-memtable-use-CF.addAll.patch, 
> 0003-Add-AtomicSortedColumn-and-snapTree-v2.patch, 
> 0003-Add-AtomicSortedColumn-and-snapTree.patch, latency-plain.svg, 
> latency.svg, snaptree-0.1-SNAPSHOT.jar
>
>
> This could be done using an the atomic ConcurrentMap operations from the 
> Memtable and something like http://code.google.com/p/pcollections/ to replace 
> the ConcurrentSkipListMap in ThreadSafeSortedColumns.  The trick is that 
> pcollections does not provide a SortedMap, so we probably need to write our 
> own.
> Googling [persistent sortedmap] I found 
> http://code.google.com/p/actord/source/browse/trunk/actord/src/main/scala/ff/collection
>  (in scala) and http://clojure.org/data_structures#Data Structures-Maps.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to