Skip to content
Snippets Groups Projects
Commit 9355933f authored by Mergen Imeev's avatar Mergen Imeev Committed by Alexander Turenko
Browse files

experimental: introduce call()

This patch introduces the call() function in the experiment.connpool
module. The function takes the name of the function to be executed,
arguments to the function to be executed, and options. Options are used
to select candidates, on one of which the provided function will be
remotely executed.

Closes #9842

@TarantoolBot document
Title: the experimental.connpool module

The experimental.connpool module contains some functions that allow you
to retrieve the names of instances from the configuration that satisfy
specified conditions, or to execute a function on one of these
instances. Additionally, this module has a function that returns the
active connection to the instance with the specified name.

Currently this module contains three functions:
1) `connect()` takes an instance name and options and returns the active
connection to the instance with the specified name. The
`connect_timeout` and `fetch_schema` options are passed directly to
`net.box.connect()`. The `wait_connected` option is also passed to
`net.box.connect()`, but here it can be `true` or `false`, numeric
values are not allowed.
2) `filter()` accepts only options as its only argument. It returns an
array of instance names that match the provided options. Currently only
two options are supported:
    a) `labels` that instances must have;
    b) `roles` that instances must have.
3) `call` takes the name of the function to execute, arguments for this
function, and options. The `labels` and `roles` options are used to
select candidates on which the function will be executed. If the
`prefer_local` option is false, `call` will try to connect to a random
candidate until a connection is established or there are no more
candidates. If the `prefer_local` option is true or nil and the instance
in which `call` is executed is one of the candidates, `call` will
attempt to connect to that instance first. Moreover, `call` has options
`timeout`, `buffer`, `on_push`, `on_push_ctx` and `is_async`, which are
passed directly to `net.box.call()`. Note that the `connection` option
works for the `net.box.call()` part. The potential maximum execution
time is `<number of candidates> * <default connect_timeout for
net.box.connect()> + connection`.
parent 196e647e
No related branches found
No related tags found
No related merge requests found
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment