You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Eric Evans (JIRA)" <ji...@apache.org> on 2012/09/04 22:32:07 UTC

[jira] [Reopened] (CASSANDRA-4383) Binary encoding of vnode tokens

     [ https://issues.apache.org/jira/browse/CASSANDRA-4383?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Eric Evans reopened CASSANDRA-4383:
-----------------------------------


I'm seeing these:

{noformat}
java.lang.NullPointerException
	at org.apache.cassandra.utils.UUIDGen.decompose(UUIDGen.java:120)
	at org.apache.cassandra.db.HintedHandOffManager.deliverHintsToEndpointInternal(HintedHandOffManager.java:304)
	at org.apache.cassandra.db.HintedHandOffManager.deliverHintsToEndpoint(HintedHandOffManager.java:250)
	at org.apache.cassandra.db.HintedHandOffManager.access$400(HintedHandOffManager.java:87)
	at org.apache.cassandra.db.HintedHandOffManager$4.runMayThrow(HintedHandOffManager.java:433)
	at org.apache.cassandra.utils.WrappedRunnable.run(WrappedRunnable.java:28)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:662)
{noformat}

... and some of these:

{noformat}
java.lang.NullPointerException
        at org.apache.cassandra.service.StorageService.getApplicationStateValue(StorageService.java:1117)
        at org.apache.cassandra.service.StorageService.getTokensFor(StorageService.java:1125)
        at org.apache.cassandra.service.StorageService.handleStateNormal(StorageService.java:1196)
        at org.apache.cassandra.service.StorageService.onChange(StorageService.java:1103)
        at org.apache.cassandra.gms.Gossiper.doNotifications(Gossiper.java:915)
        at org.apache.cassandra.gms.Gossiper.applyNewStates(Gossiper.java:906)
        at org.apache.cassandra.gms.Gossiper.applyStateLocally(Gossiper.java:868)
        at org.apache.cassandra.gms.GossipDigestAck2VerbHandler.doVerb(GossipDigestAck2VerbHandler.java:43)
        at org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:55)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
        at java.lang.Thread.run(Thread.java:662)
{noformat}

In both cases it looks like an event is firing before HOST_ID or TOKENS respectively are being set.

To reproduce I use ccm to run a 3 node cluster, replication factor 2.  I load about 70k rows at CL = ONE, read them back at CL = ALL, and then restart all of the nodes.
                
> Binary encoding of vnode tokens
> -------------------------------
>
>                 Key: CASSANDRA-4383
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-4383
>             Project: Cassandra
>          Issue Type: Sub-task
>            Reporter: Brandon Williams
>            Assignee: Brandon Williams
>             Fix For: 1.2.0 beta 1
>
>         Attachments: 0001-Add-HOST_ID-and-TOKENS-app-states-binary-serialization.txt, 0002-Fix-tests.txt
>
>
> Since after CASSANDRA-4317 we can know which version a remote node is using (that is, whether it is vnode-aware or not) this a good opportunity to change the token encoding to binary, since with a default of 256 tokens per node even a fixed-length 16 byte encoding per token provides a great deal of savings in gossip traffic over a text representation.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira