Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-10134

Always require replace_address to replace existing address

Agile BoardAttach filesAttach ScreenshotBulk Copy AttachmentsBulk Move AttachmentsVotersWatch issueWatchersCreate sub-taskConvert to sub-taskMoveLinkCloneLabelsUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

Details

    • Docs

    Description

      Normally, when a node is started from a clean state with the same address as an existing down node, it will fail to start with an error like this:

      ERROR [main] 2015-08-19 15:07:51,577 CassandraDaemon.java:554 - Exception encountered during startup
      java.lang.RuntimeException: A node with address /127.0.0.3 already exists, cancelling join. Use cassandra.replace_address if you want to replace this node.
      	at org.apache.cassandra.service.StorageService.checkForEndpointCollision(StorageService.java:543) ~[main/:na]
      	at org.apache.cassandra.service.StorageService.prepareToJoin(StorageService.java:783) ~[main/:na]
      	at org.apache.cassandra.service.StorageService.initServer(StorageService.java:720) ~[main/:na]
      	at org.apache.cassandra.service.StorageService.initServer(StorageService.java:611) ~[main/:na]
      	at org.apache.cassandra.service.CassandraDaemon.setup(CassandraDaemon.java:378) [main/:na]
      	at org.apache.cassandra.service.CassandraDaemon.activate(CassandraDaemon.java:537) [main/:na]
      	at org.apache.cassandra.service.CassandraDaemon.main(CassandraDaemon.java:626) [main/:na]
      

      However, if auto_bootstrap is set to false or the node is in its own seed list, it will not throw this error and will start normally. The new node then takes over the host ID of the old node (even if the tokens are different), and the only message you will see is a warning in the other nodes' logs:

      logger.warn("Changing {}'s host ID from {} to {}", endpoint, storedId, hostId);
      

      This could cause an operator to accidentally wipe out the token information for a down node without replacing it. To fix this, we should check for an endpoint collision even if auto_bootstrap is false or the node is a seed.

      Attachments

        Activity

          This comment will be Viewable by All Users Viewable by All Users
          Cancel

          People

            samt Sam Tunnicliffe Assign to me
            thobbs Tom Hobbs
            Sam Tunnicliffe
            Joel Knighton
            Votes:
            0 Vote for this issue
            Watchers:
            15 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Slack

                Issue deployment