Miscellaneous
Runtime Directories & UNIX Sockets
zrepl daemon creates various UNIX sockets to allow communicating with it:
the ssh+stdinserver Transport transport connects to a socket named after
client_identityparameterthe
controlCLI subcommand connects to a defined control socket
There is no further authentication on these sockets.
Therefore we have to make sure they can only be created and accessed by zrepl daemon.
In fact, zrepl daemon will not bind a socket to a path in a directory that is world-accessible.
The directories can be configured in the main configuration file, the defaults are provided below:
global:
control:
sockpath: /var/run/zrepl/control
serve:
stdinserver:
sockdir: /var/run/zrepl/stdinserver
Durations & Intervals
Interval & duration fields in job definitions, pruning configurations, etc. must match the following regex:
var durationStringRegex *regexp.Regexp = regexp.MustCompile(`^\s*(\d+)\s*(s|m|h|d|w)\s*$`)
// s = second, m = minute, h = hour, d = day, w = week (7 days)
Super-Verbose Job Debugging
You have probably landed here because you opened an issue on GitHub and some developer told you to do this… So just read the annotated comments ;)
job:
- name: ...
...
# JOB DEBUGGING OPTIONS
# should be equal for all job types, but each job implements the debugging itself
debug:
conn: # debug the io.ReadWriteCloser connection
read_dump: /tmp/connlog_read # dump results of Read() invocations to this file
write_dump: /tmp/connlog_write # dump results of Write() invocations to this file
rpc: # debug the RPC protocol implementation
log: true # log output from rpc layer to the job log
Attention
Connection dumps will almost certainly contain your or other’s private data. Do not share it in a bug report.