Module cartridge.rpc
Remote procedure calls between cluster instances.
List candidates suitable for performing a remote call.
Candidates are deduced from a local config and membership, which may
differ from replica to replica (e.g. during patch_clusterwide
). It
may produce invalid candidates.
Parameters:
- role_name: (string)
- opts:
- leader_only: (optional boolean) Filter instances which are leaders now.(default: false)
- healthy_only: (optional boolean) The member is considered healthy ifit reports either
ConfiguringRoles
orRolesConfigured
stateand its SWIM status is eitheralive
orsuspect
(added in v1.1.0-11, default: true) - labels: (optional table) Filter instances that have the specified labels. Adding labels is possible via theedit_topology method or via graphqlExample: rpc.get_candidates(„role“, { labels = {[„msk“] = „dc“} })
Returns:
({string,…}) URIs
Perform a remote procedure call.
Find a suitable healthy instance with an enabled role and
perform a [ net.box
conn:call
](
https://tarantool.io/en/doc/latest/reference/reference_lua/net_box/#net-box-call)
on it. rpc.call()
can only be used for functions defined in role return table
unlike net.box
conn:call()
, which is used for global functions as well.
Parameters:
- role_name: (string)
- fn_name: (string)
- args: (table) (optional)
- opts:
- prefer_local: (optional boolean) Don’t perform a remote call if possible. When the role is enabledlocally and current instance is healthy the remote netbox call issubstituted with a local Lua function call. When the option isdisabled it never tries to perform call locally and always usesnetbox connection, even to connect self.(default: true)
- leader_only: (optional boolean) Perform a call only on the replica set leaders.(default: false)
- uri: (optional string) Force a call to be performed on this particular uri.Disregards member status and
opts.prefer_local
.Conflicts withopts.leader_only = true
.(added in v1.2.0-63) - labels: (optional table) Filter instances that have the specified labels. Adding labels is possible via theedit_topology method or via graphql.Example: rpc.call(„role“, „func“, {}, { labels = { [„msk“] = „dc“ } })
- remote_only: (deprecated) Use
prefer_local
instead. - timeout: passed to
net.box
conn:call
options. - buffer: passed to
net.box
conn:call
options. - on_push: passed to
net.box
conn:call
options. - on_push_ctx: passed to
net.box
conn:call
options. - is_async: passed to
net.box
conn:call
options.
Returns:
conn:call()
result
Or
(nil)
(table) Error description
Connect to an instance with an enabled role.
Candidates to connect are deduced from a local config and membership,
which may differ from replica to replica (e.g. during patch_clusterwide
).
It may produce invalid candidates.
Parameters:
- role_name: (string)
- opts:
- prefer_local: (optional boolean)
- leader_only: (optional boolean)
- labels: (optional table)
Returns:
net.box
connection
Or
(nil)
(table) Error description