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

Sylvain Lebresne commented on CASSANDRA-9705:
---------------------------------------------

Pushed a branch for this 
[here|https://github.com/pcmanus/cassandra/commits/9705]. It removes all use of 
flyweights, and basically rewrite all Row, Cell and Partition implementations. 
The result is admittedly a lot simpler and less error prone. I suspect it's 
also faster but haven't looked at that much yet.

The patch is actually not very small because the change of implementation 
allowed a lot of related simplifications. Hopefully this won't be too 
disruptive on other patches, but I'd still be happy if we can get that in as 
fast as possible, if only because I'd rather not spend too much time fixing 
unit tests and dtests that are fixed with this or easier to.

Concretely there is 3 commits:
* the first one update the implementations of {{ClusteringPrefix}} and its 
subclasses. That one is pretty simple and self-contained.
* the second one is the main meat. It rewrites most of the rest and was 
unfortunately much harder to split in smaller pieces.
* the last one if kind of a follow-up: we're currently using {{LivenessInfo}} 
for both {{Row}} and {{Cell}}, but after the previous patches it's barely used 
by {{Cell}}. So that 3rd patch make it be only for rows, which make things 
cleaner/simpler anyways.

I plan on doing another review of the whole patch on Monday and to add comments 
where they are missing so there may be a few minor updates then, but it's 
basically ready for review otherwise.



> Simplify some of 8099's concrete implementations
> ------------------------------------------------
>
>                 Key: CASSANDRA-9705
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-9705
>             Project: Cassandra
>          Issue Type: Sub-task
>            Reporter: Sylvain Lebresne
>            Assignee: Sylvain Lebresne
>             Fix For: 3.0 beta 1
>
>
> As mentioned in the ticket comments, some of the concrete implementations 
> (for Cell, Row, Clustering, PartitionUpdate, ...) of the initial patch for 
> CASSANDRA-8099 are more complex than they should be (the use of flyweight is 
> typically probably ill-fitted), which probably has performance consequence. 
> This ticket is to track the refactoring/simplifying those implementation 
> (mainly by removing the use of flyweights and simplifying accordingly).



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to