Details

    • Type: Sub-task Sub-task
    • Status: Resolved
    • Priority: Major Major
    • Resolution: Invalid
    • Fix Version/s: 0.7 beta 1
    • Component/s: None
    • Labels:
      None

      Description

      Implement a replication strategy for the KS that holds KS/CF defnitions.
      It ignores replication factor and replicates to all nodes.

        Activity

        Hide
        Gary Dusbabek added a comment -

        I decided not to take this approach.

        Show
        Gary Dusbabek added a comment - I decided not to take this approach.
        Hide
        Gary Dusbabek added a comment -

        We will not use a replication strategy to maintain the schema keyspace.

        Show
        Gary Dusbabek added a comment - We will not use a replication strategy to maintain the schema keyspace.
        Hide
        Jonathan Ellis added a comment -

        I like the simplicity of the ReplicationStrategy approach, but the corner cases (e.g. bootstrapping) are a bitch. So I think I lean towards pull too.

        Show
        Jonathan Ellis added a comment - I like the simplicity of the ReplicationStrategy approach, but the corner cases (e.g. bootstrapping) are a bitch. So I think I lean towards pull too.
        Hide
        Gary Dusbabek added a comment -

        you're not missing anything. I've been experimenting with both and am leaning towards pull, in which case, this strategy is not needed.

        Show
        Gary Dusbabek added a comment - you're not missing anything. I've been experimenting with both and am leaning towards pull, in which case, this strategy is not needed.
        Hide
        Jonathan Ellis added a comment -

        if we're going w/ a pull model (each node is responsible for requesting changes) then why do we need this new Strategy? (which is only useful for a push model, unless I am missing something)

        Show
        Jonathan Ellis added a comment - if we're going w/ a pull model (each node is responsible for requesting changes) then why do we need this new Strategy? (which is only useful for a push model, unless I am missing something)
        Hide
        Gary Dusbabek added a comment -

        That's one way of doing it, but the more I've thought about it and worked on it, I'm not sure that replicating everywhere is the best approach. I prefer using a pure gossip approach: NodeA has schema updated via thrift, makes local changes and then gossips it to all nodes. Those nodes realize they are on an older version and request all migrations between their versions and the version that was gossiped. The migrations are then applied.

        The main advantage is that it is a one-size-fits all approach: it works for a live cluster, it works for a bootstrapping node (re: your comment), it works for a node coming back into the cluster.

        It also avoids any synchronization issues involved with a mutation arriving after the version is gossiped.

        Show
        Gary Dusbabek added a comment - That's one way of doing it, but the more I've thought about it and worked on it, I'm not sure that replicating everywhere is the best approach. I prefer using a pure gossip approach: NodeA has schema updated via thrift, makes local changes and then gossips it to all nodes. Those nodes realize they are on an older version and request all migrations between their versions and the version that was gossiped. The migrations are then applied. The main advantage is that it is a one-size-fits all approach: it works for a live cluster, it works for a bootstrapping node (re: your comment), it works for a node coming back into the cluster. It also avoids any synchronization issues involved with a mutation arriving after the version is gossiped.
        Hide
        Jonathan Ellis added a comment -

        metadata.getEndpoints won't include bootstrapping nodes though, will it?

        speaking of bootstrapping nodes, this approach of "just use a Strategy that replicates everywhere" means you have to send a mutation containing the whole, most-recent-schema at once, right? (which I think is okay, just want to make sure.)

        Show
        Jonathan Ellis added a comment - metadata.getEndpoints won't include bootstrapping nodes though, will it? speaking of bootstrapping nodes, this approach of "just use a Strategy that replicates everywhere" means you have to send a mutation containing the whole, most-recent-schema at once, right? (which I think is okay, just want to make sure.)

          People

          • Assignee:
            Gary Dusbabek
            Reporter:
            Gary Dusbabek
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development