You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "Jonathan Ellis (JIRA)" <ji...@apache.org> on 2012/10/30 05:26:14 UTC

[jira] [Updated] (CASSANDRA-4850) RuntimeException when bootstrapping a node without an explicitely set token

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

Jonathan Ellis updated CASSANDRA-4850:
--------------------------------------

    Affects Version/s:     (was: 1.2.0 beta 1)
                       1.2.0 beta 2
             Assignee: Pavel Yaskevich

IMO we should not include system tables in serializedSchema at all, for version or for sending to other nodes, since they are hardcoded.  (Sending a diff to another node will not have the desired effects.)
                
> RuntimeException when bootstrapping a node without an explicitely set token
> ---------------------------------------------------------------------------
>
>                 Key: CASSANDRA-4850
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-4850
>             Project: Cassandra
>          Issue Type: Bug
>    Affects Versions: 1.2.0 beta 2
>            Reporter: Sylvain Lebresne
>            Assignee: Pavel Yaskevich
>             Fix For: 1.2.0 beta 2
>
>
> Trying to boostrap a node for which no initial token has been set result in:
> {noformat}
> java.lang.RuntimeException: No other nodes seen!  Unable to bootstrap.If you intended to start a single-node cluster, you should make sure your broadcast_address (or listen_address) is listed as a seed.  Otherwise, you need to determine why the seed being contacted has no knowledge of the rest of the cluster.  Usually, this can be solved by giving all nodes the same seed list.
> 	at org.apache.cassandra.dht.BootStrapper.getBootstrapSource(BootStrapper.java:154)
> 	at org.apache.cassandra.dht.BootStrapper.getBalancedToken(BootStrapper.java:135)
> 	at org.apache.cassandra.dht.BootStrapper.getBootstrapTokens(BootStrapper.java:115)
> 	at org.apache.cassandra.service.StorageService.joinTokenRing(StorageService.java:603)
> 	at org.apache.cassandra.service.StorageService.initServer(StorageService.java:490)
> 	at org.apache.cassandra.service.StorageService.initServer(StorageService.java:386)
> 	at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:305)
> 	at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:393)
> 	at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:436)
> {noformat}
> This has been broken by CASSANDRA-4416. More specifically, now that we storage the system metadata in the schema on startup, the check
> {noformat}
>                 // if we see schema, we can proceed to the next check directly
>                 if (!Schema.instance.getVersion().equals(Schema.emptyVersion))
>                 {
>                     logger.debug("got schema: {}", Schema.instance.getVersion());
>                     break;
>                 }
> {noformat}
> in StorageService.joinTokenRing is broken. This result in the node trying to check the Load map to pick a token before any gossip state has been received.
> Note sure what is the best fix (an easy would be to always wait RING_DELAY before attempting to pick the token, at least in the case where an initial token isn't set, but that's a big hammer).

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