Behaviour that the top-level actor of a processing stage must implement
Processes raw Redis commands and forwards them to the Dispatcher if they are valid.
Delegate to perform the actual adding of the node to the redis cluster.
Delegate to perform the actual adding of the node to the redis cluster. If the adding of a node to the cluster is a
success, then send Passthrough
message to sender. If the adding of a node fails due to a Redis connection error,
then send a Fail
message to sender
The supervisor actor for the join redis node action is used to signal a failed attempt to join a node by throwing an exception.
This actor exists to be the parent of the overseer.
Implements the work-pulling pattern to rate-limit the migrate slot operations
Actor hierarchy for doing the actual work during a reshard, which is to migrate slots between Redis nodes.
The overseer subscribes to Redis commands that have been published by the dispatcher.
The overseer subscribes to Redis commands that have been published by the dispatcher. This actor is the parent actor of all actors that process Redis cluster commands. Cluster commands include adding and removing nodes.
Supervises the resharding of the cluster
The dispatcher publishes redis cluster commands to be performed, and waits for them to be completed.
The dispatcher publishes redis cluster commands to be performed, and waits for them to be completed. The
dispatcher subscribes to events on the message bus indicating when an operation has completed successfully or
unsuccessfully. The dispatcher is completely decoupled from the actor hierarchy performing Redis cluster operations.
The dispatcher can process a Redis command one at a time. When processing a Redis command, it uses become
to
change its state to running
. When the dispatcher is running it will no longer accept other Redis cluster commands
to publish. When it receives a success message on the message bus, the dispatcher will change its state back to
accepting
, and it will message the client ActorRef of the success.
When removing a redis node, it is necessary to specify whether a master or slave node should be removed, and the URI of the node that should be removed.
When removing a redis node, it is necessary to specify whether a master or slave node should be removed, and the URI
of the node that should be removed. In some cases, if it's requested to remove a master node at a given URI, the
redis cluster node at that given URI is not a master. The same is the case when removing a slave node. In those
cases, it is necessary to run a FAILOVER
command on the slave node that should become the master node. Once the
failover is complete, the redis node at the given URI now has the desired role--master or slave, and it can then be
removed.
The message bus interface.
The message bus interface. This contains all the case class messages that can be published to and subscribed to on the message bus.
Processes raw Redis commands and forwards them to the Dispatcher if they are valid. If the commands are invalid, sends a TaskDenied response back to client ActorRef.