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

Aleksey Yeschenko commented on CASSANDRA-7107:
----------------------------------------------

Overall LGTM, some very welcome cleanup. Nice catch with the empty check in 
CollationController#collectTimeOrderedData(), too.

Squashed commit #1 and #3 together and added to extra commits with suggested 
changes, pushed to https://github.com/iamaleksey/cassandra/commits/7107

The second original commit is not included b/c I'm very uncomfortable with 
leaving a ColumnFamily#append() method around - it's going to be abused by some 
innocent sole, and there will be hard to debug suffering as a result. Inlined 
it into a new CF#maybeAppendColumn() method instead, that's less likely to be 
called by mistake (see the last commit).

The second commit has a bugfix, some improvements, nits fixed, some extra 
cleanup and prettiness:
- discovered only one bug - ABSC.CellCollection#size() was not calling 
maybeSortCells() - fixed in the commit #2
- refactored ABSC#slice() and ABTC#slice() for obviousness
- made the second binary search in ABSC#slice() use the updated lowerBound, 
reducing the range to search
- in CollationController#collectAllData(), in the memtable loop, using 
Iterables#transform() instead of copying the cells into a temporary ArrayList, 
to potentially reduce the amount of localCopy()-ing (esp. for low query LIMITs)
- rolled back MergeIterator#getSimple() - here, I don't think that 1-1 
duplication of MergeIterator#get() is worth removing a little bit of 
indirection, sorry. Hope you don't have a strong opinion here, because I, 
weirdly, do.

> General minor tidying of CollationController path
> -------------------------------------------------
>
>                 Key: CASSANDRA-7107
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-7107
>             Project: Cassandra
>          Issue Type: Improvement
>          Components: Core
>            Reporter: Benedict
>            Assignee: Benedict
>            Priority: Minor
>             Fix For: 2.1 rc1
>
>
> There is a lot of unnecessary boiler plate when grabbing an iterator from an 
> in-memory column family. This patch:
> * Removes FakeCellName
> * Avoids wrapping a non-OnDiskAtomIterator as an OnDiskAtomIterator except 
> when the wrapping is useful
> * Removes ColumnSlice.NavigableSetIterator and creates a simpler more direct 
> equivalent in ABTC
> * Does not construct a SliceIterator in either ABSC or ABTC if only one slice 
> is requested (just returns that slice as an Iterator)
> * Does not construct multiple list indirections in ABSC when constructing a 
> slice
> * Shares forward/reverse iterators in ABSC between slices and full-iteration
> * Avoids O(N) comparisons during collation of results into an ABSC, by using 
> the knowledge that all columns are provided in insertion order from a merge 
> iterator



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to