Christian Schwarz
f8200a6386
replication/driver: regulate per-filesystem step planning through stepQueue
...
before this patch, we'd have unbounded parallelism for ListFilesystemVersions RPCs
2020-02-14 21:42:03 +01:00
Christian Schwarz
e35320f8ee
zfs: make StreamCopier wrapper for io.ReadCloser public
2020-02-14 21:42:03 +01:00
Christian Schwarz
5b52e5e331
rpc: fix missing logger context vars in control connection handlers
...
use ctxInterceptor in gRPC interceptors
also panic if the unimplemented stream interceptor is used
2020-02-14 21:42:03 +01:00
Christian Schwarz
6ebd9f1037
zfs: recv: fix deadlock if streamCopier returns io.EOF
...
Close the write end of the pipe
* before we start waiting on the error channels
* and after everything from streamCopier has been written to the pipe
2020-02-14 21:42:03 +01:00
Christian Schwarz
99ab16d7be
zfs: send: improve error reporting by capturing stderr
2020-02-14 21:42:03 +01:00
Christian Schwarz
e675b35cda
platformtest: harness: run filter + summary
2020-02-14 21:42:01 +01:00
Christian Schwarz
ddd7acec49
platformtest: harness: refactor + support SkipNow
2020-02-14 21:40:48 +01:00
Christian Schwarz
e7aa08564b
platformtest: harness: fix FailNow (harness wouldn't detect FailNow)
...
(harness checks for recover() != nil)
2020-02-14 21:40:48 +01:00
Christian Schwarz
93ccdb8024
docs: prune: fix typo
2020-02-14 21:40:48 +01:00
Christian Schwarz
501645f918
docs: filter syntax: reference 'snap' job type
2020-02-14 21:40:48 +01:00
Matthias Freund
4fd9d30c98
build: add linux/armhf target
2020-02-10 12:09:11 +01:00
Ben Woods
e2b9c16959
build: fix freebsd/aarch64
...
by updating golang:sys dependency
This was original reported here:
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=242456
And originally fixed upstream here:
https://go.googlesource.com/sys/+/33540a1f6037
2020-02-01 12:53:59 +01:00
Matthias Freund
4ba85c40cc
daemon/job/build_jobs: fix validateReceivingSidesDoNotOverlap
2020-01-30 10:46:32 +01:00
Matthias Freund
cca95f613b
client/status: add ETA calculation
2020-01-26 14:45:01 +01:00
Christian Schwarz
5b50a66c6c
daemon/snapper: refactor sync-up algorithm + warn about FSes awaiting first sync point
...
refs https://github.com/zrepl/zrepl/issues/256
2020-01-15 19:20:37 +01:00
Christian Schwarz
dd508280f0
docs: tutorial: minor typo + language fixes
2020-01-15 19:12:09 +01:00
Christian Schwarz
2927d0ca15
rpc: use grpchelper package, add grpc.KeepaliveEnforcementPolicy, fix 'transport is closing' error
...
Symptom: zrepl log message:
rpc error: code = Unavailable desc = transport is closing
Underlying Problem:
* rpc.NewServer was not using grpchelper.NewServer and not setting Server KeepaliveParams by itself
* and even grpchelper.NewServer didn't set a KeepaliveEnforcementPolicy
* However, KeepaliveEnforcementPolicy is necessary if the client keepalive is configured with non-default values
* .. which grpchelper.ClientConn does, and that method is used by rpc.NewClient
* rpc.Client was sending pings
* lacking server-side KeepaliveEnforcementPolicy caused grpc-hard-coded `pingStrikes` counter to go past limit of 2:
021bd5734e/internal/transport/http2_server.go (L726)
How was this debugged:
* GRPC_GO_LOG_VERBOSITY_LEVEL=99 GRPC_GO_LOG_SEVERITY_LEVEL=info PATH=/root/mockpath:$PATH zrepl daemon
* with a patch on grpc package to get more log messages on pingStrikes increases:
diff --git a/internal/transport/http2_server.go b/internal/transport/http2_server.go
index 8b04b039..f68f55ea 100644
--- a/internal/transport/http2_server.go
+++ b/internal/transport/http2_server.go
@@ -214,6 +214,7 @@ func newHTTP2Server(conn net.Conn, config *ServerConfig) (_ ServerTransport, err
if kep.MinTime == 0 {
kep.MinTime = defaultKeepalivePolicyMinTime
}
+ errorf("effective keepalive enforcement policy: %#v", kep)
done := make(chan struct{})
t := &http2Server{
ctx: context.Background(),
@@ -696,6 +697,7 @@ func (t *http2Server) handlePing(f *http2.PingFrame) {
t.controlBuf.put(pingAck)
now := time.Now()
+ errorf("transport:ping handlePing, last ping %s ago", now.Sub(t.lastPingAt))
defer func() {
t.lastPingAt = now
}()
@@ -713,11 +715,13 @@ func (t *http2Server) handlePing(f *http2.PingFrame) {
// Keepalive shouldn't be active thus, this new ping should
// have come after at least defaultPingTimeout.
if t.lastPingAt.Add(defaultPingTimeout).After(now) {
+ errorf("transport:ping strike ns < 1 && !t.kep.PermitWithoutStream")
t.pingStrikes++
}
} else {
// Check if keepalive policy is respected.
if t.lastPingAt.Add(t.kep.MinTime).After(now) {
+ errorf("transport:ping strike !(ns < 1 && !t.kep.PermitWithoutStream) kep.MinTime=%s ns=%d", t.kep.MinTime, ns)
t.pingStrikes++
}
}
fixes #181
2020-01-04 21:10:41 +01:00
Juergen Hoetzel
d35e2400b2
transport/{TCP,TLS}: optional IP_FREEBIND / IP_BINDANY bind socketops
...
Allows to bind to an address even if it is not actually (yet or ever)
configured. Fixes #238
Rationale:
https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget/#whatdoesthismeanformeadeveloper
2020-01-04 17:21:48 +01:00
Frans Bergman
47ed599db7
docs: add Void Linux to installation instructions
2019-12-28 12:43:53 +01:00
Christian Schwarz
f899f4cbe4
build: go.mod: bump go-netssh and drop go-critic replaces
...
(go-netssh vendored util/circlog, so the circular dep is gone)
fixes build failure reported by @poetterl-ric
```
make ZREPL_VERSION=0.2.1 zrepl-bin
GO111MODULE=on go build -mod=readonly -ldflags "-X github.com/zrepl/zrepl/version.zreplVersion=0.2.1" -o "artifacts/zrepl-linux-amd64"
go: github.com/problame/go-netssh@v0.0.0-20191026123024-f34099f4f6b1 requires
github.com/zrepl/zrepl@v0.2.0 requires
github.com/golangci/lint-1@v0.0.0-20181222135242-d2cdd8c08219: invalid version: git fetch --unshallow -f origin in /builddir/go/pkg/mod/cache/vcs/ca789ff49d608cda239a48837cfeea6e9dcdb2bce20051383910eef46b623a33: exit status 128:
fatal: git fetch-pack: expected shallow list
```
2019-12-28 12:42:33 +01:00
Juergen Hoetzel
b3231d2bed
daemon: fix typos in error messages
...
closes #255
2019-12-11 21:30:48 +01:00
Christian Schwarz
c24c327151
build: fix build.Dockerfile + integrate into CircleCI
...
fixup of 080f2c0616
fixup of 4994b7a9ea
2019-11-28 15:19:46 +01:00
Christian Schwarz
5e17d7ba80
docs: add recent supporters
2019-11-26 00:45:13 +01:00
Christian Schwarz
0261dbfe3d
docs: 0.2.1 changelog
2019-11-20 20:16:41 +01:00
Christian Schwarz
4301f741db
dist/systemd: remove @privileged from SystemCallFilter + cleanup comments
...
fixes #237
2019-11-20 18:44:14 +01:00
Christian Schwarz
7e743c74dc
docs + samples: adjust ssh 'Compression' arg in examples
2019-11-20 18:19:16 +01:00
Christian Schwarz
ad0b055245
daemon/prometheus: fix crash if listener cannot be created
...
refs #238
zrepl version=v0.2.0-11-gdc39c81 GOOS=linux GOARCH=amd64 Compiler=gc
starting daemon
[pull_source]: starting job
[_prometheus]: starting job
[connection_loss_tidyup]: starting job
[connection_loss_tidyup]: wait for wakeups
[_control]: starting job
[_prometheus]: cannot listen err="listen tcp 10.0.0.200:9091: bind: cannot assign requested add
[_prometheus]: job exited
panic: runtime error: invalid memory address or nil pointer dereference
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x28 pc=0x81ea4d]
goroutine 25 [running]:
net/http.(*onceCloseListener).close(...)
/usr/local/go/src/net/http/server.go:3330
sync.(*Once).doSlow(0xc00018b060, 0xc0000c7bc0)
/usr/local/go/src/sync/once.go:66 +0xe3
sync.(*Once).Do(...)
/usr/local/go/src/sync/once.go:57
net/http.(*onceCloseListener).Close(0xc00018b050, 0xc0003a6000, 0xe0)
/usr/local/go/src/net/http/server.go:3326 +0x77
panic(0xb1d1c0, 0x11d7d90)
/usr/local/go/src/runtime/panic.go:679 +0x1b2
net/http.(*onceCloseListener).Accept(0xc00018b050, 0xc000120020, 0xb0fd20, 0x11d7ce0, 0xbee6e0)
<autogenerated>:1 +0x32
net/http.(*Server).Serve(0xc0003a6000, 0x0, 0x0, 0x0, 0x0)
/usr/local/go/src/net/http/server.go:2896 +0x286
net/http.Serve(...)
/usr/local/go/src/net/http/server.go:2468
github.com/zrepl/zrepl/daemon.(*prometheusJob).Run(0xc000109940, 0xd19ec0, 0xc00018a930)
/go/src/github.com/zrepl/zrepl/daemon/prometheus.go:75 +0x23e
github.com/zrepl/zrepl/daemon.(*jobs).start.func1(0xc0000f68c0, 0xd22c40, 0xc000116ee0, 0xd1ba4
/go/src/github.com/zrepl/zrepl/daemon/daemon.go:220 +0x121
created by github.com/zrepl/zrepl/daemon.(*jobs).start
/go/src/github.com/zrepl/zrepl/daemon/daemon.go:216 +0x52e
zrepl.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
zrepl.service: Failed with result 'exit-code'.
2019-11-16 22:11:13 +01:00
Christian Schwarz
27db3e6f70
docs: supporters: update & add viz for different kinds of support
2019-11-16 22:11:07 +01:00
Christian Schwarz
4994b7a9ea
rpc/dataconn + build: support GOOS={solaris,illumos}
2019-11-16 22:07:47 +01:00
Christian Schwarz
080f2c0616
build: Makefile: refactor cross-builds + release, add i386 targets
2019-11-16 22:07:47 +01:00
Christian Schwarz
d469cc04b6
transports/ssh: bump go-netssh to improve dial errors
...
from go-netssh changelog:
dial: better error handling if ssh command exits with non-zero exit status
SSHError.Error() relied on go-rwccmd behavior of returning io.EOF if the
ssh binary exited with status code 0.
We no longe ruse go-rwccmd => capture Stderr ourselves using zrepl's
circlog (depending on zrepl is not pretty, but since this package is supposedly
only used by zrepl ATM, this is fine)
refs https://github.com/zrepl/zrepl/issues/237
2019-11-16 22:07:47 +01:00
Christian Schwarz
e0a25d04ac
build: Makefile: set GO111MODULE=on for all go commands
2019-11-16 22:07:47 +01:00
Christian Schwarz
b0f2c79944
build: go mods: split build deps into subgomod, bump prometheus to 1.2.1, tweaked go mod tidy
...
tweaked go mod tidy: see comment in go.mod
2019-11-16 22:07:47 +01:00
Christian Schwarz
d2bc40f78d
docs: transports: ssh: better copy-pastable connect section
2019-11-16 22:07:47 +01:00
Christian Schwarz
9e54f11960
dist/systemd: fix ssh-transport: create stdinserver runtime directory
...
tested to work on Debian Stretch
refs #237
2019-11-16 22:07:38 +01:00
Andy Fiddaman
6eda1f743f
Fix typo in tutorial.rst
2019-11-05 09:57:30 -08:00
Andy Fiddaman
6787decef1
Add OmniOS (illumos distribution) to list of OSs
2019-11-05 09:49:57 -08:00
Christian Schwarz
d56d45a2ab
docs: install: apt: fix snippet display & link to packaging repo
2019-10-21 16:35:23 +02:00
Christian Schwarz
fcf16a163a
docs: install: apt snippet: idempotent, bash compat, multiarch compat
...
Co-authored-by: Janis Streib <me@janis-streib.de>
Co-authored-by: Christian Schwarz <me@cschwarz.com>
2019-10-21 16:21:51 +02:00
Christian Schwarz
dc39c819a3
docs: add debian + ubuntu installation
2019-10-18 20:18:42 +02:00
Christian Schwarz
1048b09487
build: include config examples and dist in noarch tarball
2019-10-18 20:18:42 +02:00
Richard Poettler
3806e97404
docs: add copr repo for Fedora/CentOS
...
closes #229
2019-10-16 10:46:02 +02:00
chenhao
c396f9508a
zfs: replace hard coded zfs command in ZFSDestroy
...
fixes #231
2019-10-16 10:22:53 +02:00
Christian Schwarz
b9933f6cb2
platformtest: add zfsGet bookmark handling & replicationCursor tests
...
This encodes the observation made in issue #230 :
In the ZFS version shipped in Ubuntu 16.04 where
`zfs get someprop a#bookmark` does not work.
2019-10-14 17:54:14 +02:00
Christian Schwarz
0ba4b5eda6
zfs: helper for ZFSGet guid
and createtxg
2019-10-14 17:54:14 +02:00
Christian Schwarz
18d2c350de
platformtest: harness: -failure.stop-and-keep-pool mode, prettier logging
2019-10-14 17:54:14 +02:00
Christian Schwarz
f8f9fd11cd
platformtest: logging-related refactorings
2019-10-14 17:32:58 +02:00
John Ramsden
b422e6f12e
docs: installation: add Arch Linux 'from source' package
2019-10-13 12:33:27 +02:00
Christian Schwarz
f8d5082bdd
docs: remove outdated implementation references + remove 0.2-rc* from published docs
2019-10-13 12:26:39 +02:00
Christian Schwarz
ffe677e55a
docs: snapshotting: command hook type: not the only hook type anymore
2019-10-13 12:16:31 +02:00