Module cartridge.twophase
Clusterwide configuration propagation two-phase algorithm.
(Added in v1.2.0-19)
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:
- Patches the current configuration.
- 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
Forcefully apply config to the given instances.
In particular:
- Abort two-phase commit (remove
config.prepare
lock) - Upload the active config from the current instance.
- Apply it (reconfigure all roles)
(Added in v2.3.0-68)
Parameters:
- uuids: ({string,…})
Returns:
(boolean) true
Or
(nil)
(table) Error description
Get clusterwide DDL schema.
(Added in v1.2.0-28)
Returns:
(string) Schema in YAML format
Or
(nil)
(table) Error description
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
Set up trigger for for patch_clusterwide.
It will be executed before new new config applied.
If the parameters are (nil, old_trigger)
, then the old trigger is
deleted.
The trigger function is called with two argument:
- conf_new
( ClusterwideConfig
)
- conf_old
( ClusterWideConfig
)
It is allowed to modify conf_new
, but not conf_old
.
Return values are ignored. If calling a trigger raises an error,
patch_clusterwide
returns it as nil, err
.
(Added in v2.1.0-4)
Parameters:
- trigger_new: (function)
- trigger_old: (function)
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
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