Hi,

Cassandra expects a replication strategy to accept a description of a 
consistent hash ring and then use that description to determine what ranges on 
the consistent hash ring each node replicates.

If you implement the API those operations should all just work. 

I'm not sure what the implicit expectations of rebalancing and add/remove/node 
and so on are. This is despite the fact that I was staring at that code for 6 
months 6 months ago. Most of the code basically looks at a before picture from 
the replication strategy, and an after picture and moves data around until 
those two match.

Depending on the changes your replication strategy makes in responses to 
changes in the ring that code might not ship the data around. There are 
assumptions like when you move a node the data that needs to be streamed and 
fetched can all be done at that one node. You need to make sure that whatever 
state changes occur on ring changes can actually be realized by the 
add/remove/rebalance code. They also need to be done online in a system that is 
continuing to accept reads and writes so things like overlapping group 
memberships need to be taken into account.

It's a hard problem, but easier to talk about once we know what you want the 
replication strategy to do.

Ariel


On Tue, Jan 29, 2019, at 3:52 PM, Seyed Hossein Mortazavi wrote:
> I'm working on changing Cassandra for an academic project where the goal is
> to change the replicas are determined for each partition using static
> parameters that are set outside of Cassandra. I've read online that this
> can be achieved by extending the AbstractReplicationStrategy class. I have
> the following questions
> 
> 1- If we add/remove nodes, and Cassandra goes through the process of
> re-balancing, are functions from my class called?
> 2- For Paxos lightweight transactions, are my functions called?
> 3- Can I run into other problems? If yes, where?
> 
> Thank you very much

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@cassandra.apache.org
For additional commands, e-mail: dev-h...@cassandra.apache.org

Reply via email to