$filterdir/nbdkit-retry-filter.so
The filter.
Use "nbdkit --dump-config" to find the location of $filterdir.
Reopen connection on error
nbdkit --filter=retry
PLUGIN
[retries=N]
[retry-delay=N]
[{retry-exponential=yes | no}]
[{retry-readonly=yes | no}]
"nbdkit-retry-filter" is a filter that transparently reopens the plugin connection when an error is encountered. It can be used to make long-running copy operations reliable in the presence of temporary network failures, without requiring any changes to the plugin or the NBD client.
An alternative and more fine-grained filter is nbdkit-retry-request-filter(1) which will retry only single requests that fail.
Several optional parameters are available to control:
how many times we retry,
the delay between retries, and whether we wait longer each time (known as “exponential back-off”),
if we reopen the plugin in read-only mode after the first failure.
The default (with no parameters) is designed to offer a happy medium between recovering from short temporary failures but not doing anything too bad when permanent or unrecoverable failures happen. The default behaviour is: we retry 5 times with exponential back-off, waiting in total about 1 minute before we give up.
In this example we copy and convert a large file using nbdkit-ssh-plugin(1), qemu-img(1) and nbdkit-captive(1).
nbdkit \ssh host=remote.example.com /var/tmp/test.iso \--filter=retry \--run 'qemu-img convert -p -f raw "$uri" -O qcow2 test.qcow2'
Without --filter=retry a temporary failure would cause the copy to fail (for example, the remote host’s firewall is restarted causing the SSH connection to be dropped). Adding this filter means that it may be possible to transparently recover.
retries=NThe number of times any single operation will be retried before we give up and fail the operation. The default is 5.
retry-delay=NThe number of seconds to wait before retrying. The default is 2 seconds. Any format supported by nbdkit_parse_delay(3) is allowed here.
retry-exponential=yesUse exponential back-off. The retry delay is doubled between each retry. This is the default.
retry-exponential=noDo not use exponential back-off. The retry delay is the same between each retry.
retry-readonly=yesAs soon as a failure occurs, switch the underlying plugin to read-only mode for the rest of this connection. (A new NBD client connection will still open the plugin in the original mode.)
retry-readonly=noDo not change the read-write/read-only mode of the plugin when retrying. This is the default.
$filterdir/nbdkit-retry-filter.so
The filter.
Use "nbdkit --dump-config" to find the location of $filterdir.
"nbdkit-retry-filter" first appeared in nbdkit 1.16.
3 releases since Debian 11 (Bullseye); the text changed 2 times.