Module cartridge.twophase
Clusterwide configuration propagation two-phase algorithm.
(Added in v1.2.0-19)
Functions
patch_clusterwide (patch) | Edit the clusterwide configuration. |
get_schema () | Get clusterwide DDL schema. |
set_schema (schema) | Apply clusterwide DDL schema. |
Local Functions
prepare_2pc (data) | Two-phase commit - preparation stage. |
commit_2pc () | Two-phase commit - commit stage. |
abort_2pc () | Two-phase commit - abort stage. |
Functions
- patch_clusterwide (patch)
-
Edit the clusterwide configuration.
Top-level keys are merged with the current configuration.
To remove a top-level section, use
patch_clusterwide{key = box.NULL}
.The function uses a two-phase commit algorithm with the following steps:
I. Patches the current configuration.
II. Validates topology on the current server.
III. Executes the preparation phase (prepare_2pc) on every server excluding expelled and disabled servers.
IV. If any server reports an error, executes the abort phase (abort_2pc). All servers prepared so far are rolled back and unlocked.
V. Performs the commit phase (commit_2pc). In case the phase fails, an automatic rollback is impossible, the cluster should be repaired manually.
Parameters:
- patch table
Returns:
-
boolean
true
Or
- nil
- table Error description
- get_schema ()
-
Get clusterwide DDL schema.
(Added in v1.2.0-28)
Returns:
-
string
Schema in YAML format
Or
- nil
- table Error description
- set_schema (schema)
-
Apply clusterwide DDL schema.
(Added in v1.2.0-28)
Parameters:
- schema string in YAML format
Returns:
-
string
The same new schema
Or
- nil
- table Error description
Local Functions
- prepare_2pc (data)
-
Two-phase commit - preparation stage.
Validate the configuration and acquire a lock setting local variable and writing "config.prepare.yml" file. If the validation fails, the lock isn't acquired and doesn't have to be aborted.
Parameters:
- data table clusterwide config content
Returns:
-
boolean
true
Or
- nil
- table Error description
- commit_2pc ()
-
Two-phase commit - commit stage.
Back up the active configuration, commit changes to filesystem by renaming prepared file, release the lock, and configure roles. If any errors occur, configuration is not rolled back automatically. Any problem encountered during this call has to be solved manually.
Returns:
-
boolean
true
Or
- nil
- table Error description
- abort_2pc ()
-
Two-phase commit - abort stage.
Release the lock for further commit attempts.
Returns:
-
boolean
true