Details

    • Type: Improvement
    • Status: Resolved
    • Priority: Minor
    • Resolution: Fixed
    • Fix Version/s: 1.0.0
    • Component/s: None
    • Labels:
      None

      Description

      We already optimize auto-bootstrap to be no-op if there are no non-system tables.

      Given that, the only penalty imposed by autobootstrap is a 30s sleep waiting for gossip. Feels worth it to avoid the confusion this option causes, and the problems if you don't turn it on when it should be.

      1. 2447-v2.txt
        7 kB
        Jonathan Ellis

        Issue Links

          Activity

          Hide
          scode Peter Schuller added a comment -

          While I think the auto_bootstrap token is probably very confusing to users, and simply not exposing it by default is a good idea, I don't think the ability to join the cluster without bootstrapping should be removed entirely.

          An example use case of joining the ring without bootstrap is: You have a multi-DC cluster and need to bootstrap new nodes into a DC, but you want to avoid streaming from other DC:s. Provided you know what you're doing and are willing to accept the consequences in terms of consistency, you can do stuff like copy sstables from local nodes manually and bring the node into the ring and trigger AES. Similarly for adding a completely new DC to an existing cluster.

          I have a vague feeling that it's generally useful in various "panicy" types of situations where you want to bypass the normal procedures.

          Maybe just make the default true always and remove it form the default configuration; or maybe even rename it and revert it's meaning, to something like force_join_without_bootstrap?

          Show
          scode Peter Schuller added a comment - While I think the auto_bootstrap token is probably very confusing to users, and simply not exposing it by default is a good idea, I don't think the ability to join the cluster without bootstrapping should be removed entirely. An example use case of joining the ring without bootstrap is: You have a multi-DC cluster and need to bootstrap new nodes into a DC, but you want to avoid streaming from other DC:s. Provided you know what you're doing and are willing to accept the consequences in terms of consistency, you can do stuff like copy sstables from local nodes manually and bring the node into the ring and trigger AES. Similarly for adding a completely new DC to an existing cluster. I have a vague feeling that it's generally useful in various "panicy" types of situations where you want to bypass the normal procedures. Maybe just make the default true always and remove it form the default configuration; or maybe even rename it and revert it's meaning, to something like force_join_without_bootstrap?
          Hide
          jbellis Jonathan Ellis added a comment -

          maybe just make the default true always and remove it form the default configuration

          Good idea. Done in r1156837

          Show
          jbellis Jonathan Ellis added a comment - maybe just make the default true always and remove it form the default configuration Good idea. Done in r1156837
          Hide
          hudson Hudson added a comment -

          Integrated in Cassandra #1019 (See https://builds.apache.org/job/Cassandra/1019/)
          change auto_bootstrap default to true and remove from example config file
          patch by jbellis as suggested by Peter Schullerfor CASSANDRA-2447

          jbellis : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1156837
          Files :

          • /cassandra/trunk/CHANGES.txt
          • /cassandra/trunk/conf/cassandra.yaml
          • /cassandra/trunk/src/java/org/apache/cassandra/config/Config.java
          Show
          hudson Hudson added a comment - Integrated in Cassandra #1019 (See https://builds.apache.org/job/Cassandra/1019/ ) change auto_bootstrap default to true and remove from example config file patch by jbellis as suggested by Peter Schullerfor CASSANDRA-2447 jbellis : http://svn.apache.org/viewcvs.cgi/?root=Apache-SVN&view=rev&rev=1156837 Files : /cassandra/trunk/CHANGES.txt /cassandra/trunk/conf/cassandra.yaml /cassandra/trunk/src/java/org/apache/cassandra/config/Config.java
          Hide
          jbellis Jonathan Ellis added a comment -

          I forgot that we ammended bootstrap to wait for SLB.BROADCAST_INTERVAL as well as RING_DELAY. This is silly; it won't matter if we bootstrap based on current load (as propagated by gossip from last "broadcast") or wait another minute for another broadcast. And if you are bootstrapping before any load has been gossipped? It will pick a random token, but I'm okay with that because (1) you shouldn't be letting autobootstrap pick the token in the first place and (2) the workaround is simple: wait until your cluster has been up 60s before bootstrapping more nodes.
          v2 attached that fixes this and also amends tests to not wait the full ring_delay.

          Show
          jbellis Jonathan Ellis added a comment - I forgot that we ammended bootstrap to wait for SLB.BROADCAST_INTERVAL as well as RING_DELAY. This is silly; it won't matter if we bootstrap based on current load (as propagated by gossip from last "broadcast") or wait another minute for another broadcast. And if you are bootstrapping before any load has been gossipped? It will pick a random token, but I'm okay with that because (1) you shouldn't be letting autobootstrap pick the token in the first place and (2) the workaround is simple: wait until your cluster has been up 60s before bootstrapping more nodes. v2 attached that fixes this and also amends tests to not wait the full ring_delay.
          Hide
          brandon.williams Brandon Williams added a comment -

          +1

          Show
          brandon.williams Brandon Williams added a comment - +1
          Hide
          jbellis Jonathan Ellis added a comment -

          committed

          Show
          jbellis Jonathan Ellis added a comment - committed

            People

            • Assignee:
              jbellis Jonathan Ellis
              Reporter:
              jbellis Jonathan Ellis
              Reviewer:
              Brandon Williams
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Development