Replication provider and cluster address changes

Registered by Seppo Jaakola

wsrep replication initialization is controlled by two parameters:

* wsrep_provider -
    path to wsrep replication provider library
    Value is filesystem path or NULL | "none", if no provider is specified

* wsrep_cluster_address -
    Address for the node to connect with cluster.
    Value can be provider specific address or special address: "dummy://".
    The "dummy://" address tells, that provider must not replicate anything.

These parameters can be modified dynamically and this blueprint defines the semantics of dynamic changes.

Two other variables define if replication will be used or not:
* wsrep_on -
   is thread specific variable telling, if connection will use replication
* wsrep_ready -
  is status variable, which replication provider sets to value "yes", when node has fully connected with cluster

Replication will happen only when connection has wsrep_on=="on" and wsrep_ready=="yes".

wsrep_provider:
=============
If value is initially NULL or "none", no provider library will be loaded. This will force status variable wsrep_ready to value "no", and replication calls will be tried. The value of replication variable wsrep_on, is not meaningful in this case.

If wsrep_provider has initially a value, the corresponding replication provider will be loaded and wsrep_ready will be set to "yes", when provider determines that node has fully connected with the cluster.

If wsrep_provider is changed changed (any combination, "none" to real value or vice versa), then following happens:
1. if provider was specified, then old provider is disconnected
2. if provider was specified, then old provider is unloaded
3. provider applier threads are terminated
4. client connections are closed
5. new provider is loaded
6. new provider is initialized
7. provider is connected

(note that rollbacker thread remains intact in this procedure)

wsrep_cluster_address:
=============
If wsrep_provider == NULL or "none", then nothing of the following is applicable.

If value is initially "dummy://", provider will not perform replication. I this case, wsrep_ready is set to "yes", but provider does not process any replication calls, but returns WSREP_OK for all calls.

If wsrep_cluster_address has initially a value, then provider tries to establish connection with that address and rest is up to provider library. Eventually wsrep_ready will be set to "yes", when provider determines that node has fully connected with the cluster.

If wsrep_cluster_address is changed (any combination, "dummy://" to real value or vice versa), then following happens:
1. provider is disconnected
2. provider applier threads are terminated
3. client connections are closed
4. provider is connected

(note that rollbacker thread remains intact in this procedure)

Both wsrep_provider and wsrep_cluster_address manipulations must be restricted to system administator role only.

Blueprint information

Status:
Complete
Approver:
Codership
Priority:
Medium
Drafter:
Seppo Jaakola
Direction:
Approved
Assignee:
Codership
Definition:
New
Series goal:
Accepted for 0.7
Implementation:
Implemented
Milestone target:
milestone icon 0.7.3
Started by
Seppo Jaakola
Completed by
Seppo Jaakola

Related branches

Sprints

Whiteboard

 prototype under development

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.