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

Sylvain Lebresne commented on CASSANDRA-1034:
---------------------------------------------

No, no, the patch does use the same think. I merely said that the patch does 
some attempt at a better encapsulation, as it seems better to use the 
Token.{upper|lower}BoundKey to creates those fake keys that inlining the call 
to the constructor all over the code (which we do now). It makes the use of 
null more of an internal detail of DecoratedKey (not completely, granted, but 
it's a little bit better). It also makes it simpler to check we don't 
accidentally construct a DK with a null key by accident (the goal of the 
assertion in the first DK constructor in the patch).

But let it be clear that I'm not making any claim that this patch "cleans" some 
ugliness in the current code. It mainly try to solve the problem at hand, which 
is basically to be able to do range_slices and getting the right result even 
when multiple keys have the same token.

This is not saying it wouldn't be good to fix any current ugliness at the same 
time if possible, but in truth, I don't find that using special DK to represent 
special keys is such an ugly hack (not either claiming it's super beautiful, I 
just don't have a particular hatred of this). Besides, I don't have tons of 
ideas to fix the issue at end (the priority) and make the code clearly cleaner. 
And I do think that whatever ugliness the current have, this patch doesn't make 
it worst.

Anyway, I'll try to see if I can improve the encapsulation of the 
Token.{upper|lower}BoundKey representation and see if I can come with something 
slightly cleaner.
                
> Remove assumption that Key to Token is one-to-one
> -------------------------------------------------
>
>                 Key: CASSANDRA-1034
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-1034
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Stu Hood
>            Assignee: Sylvain Lebresne
>            Priority: Minor
>             Fix For: 1.1
>
>         Attachments: 0001-Generify-AbstractBounds.patch, 
> 0002-Remove-assumption-that-token-and-keys-are-one-to-one.patch, 
> 0003-unit-test.patch, 1034_v1.txt, CASSANDRA-1034.patch
>
>
> get_range_slices assumes that Tokens do not collide and converts a KeyRange 
> to an AbstractBounds. For RandomPartitioner, this assumption isn't safe, and 
> would lead to a very weird heisenberg.
> Converting AbstractBounds to use a DecoratedKey would solve this, because the 
> byte[] key portion of the DecoratedKey can act as a tiebreaker. 
> Alternatively, we could make DecoratedKey extend Token, and then use 
> DecoratedKeys in places where collisions are unacceptable.

--
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