Miscellaneous
Runtime Directories & UNIX Sockets
The zrepl daemon needs to open various UNIX sockets in a runtime directory:
a
control
socket that the CLI commands use to interact with the daemonthe ssh+stdinserver Transport listener opens one socket per configured client, named after
client_identity
parameter
There is no authentication on these sockets except the UNIX permissions. The zrepl daemon will refuse to bind any of the above sockets in a directory that is world-accessible.
The following sections of the global
config shows the default paths.
The shell script below shows how the default runtime directory can be created.
global:
control:
sockpath: /var/run/zrepl/control
serve:
stdinserver:
sockdir: /var/run/zrepl/stdinserver
mkdir -p /var/run/zrepl/stdinserver
chmod -R 0700 /var/run/zrepl
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.