Merge pull request #2861 from MichaelEischer/fix-rclone-crash

rclone: Don't panic after unexpected subprocess exit
This commit is contained in:
Alexander Neumann 2020-08-01 13:08:50 +02:00 committed by GitHub
commit 4cf9656f12
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 9 additions and 6 deletions

View File

@ -173,7 +173,8 @@ func newBackend(cfg Config, lim limiter.Limiter) (*Backend, error) {
DialTLS: func(network, address string, cfg *tls.Config) (net.Conn, error) {
debug.Log("new connection requested, %v %v", network, address)
if dialCount > 0 {
panic("dial count > 0")
// the connection to the child process is already closed
return nil, errors.New("rclone stdio connection already closed")
}
dialCount++
return conn, nil

View File

@ -29,9 +29,11 @@ func TestRcloneExit(t *testing.T) {
rtest.OK(t, err)
t.Log("killed rclone")
_, err = be.Stat(context.TODO(), restic.Handle{
Name: "foo",
Type: restic.DataFile,
})
rtest.Assert(t, err != nil, "expected an error")
for i := 0; i < 10; i++ {
_, err = be.Stat(context.TODO(), restic.Handle{
Name: "foo",
Type: restic.DataFile,
})
rtest.Assert(t, err != nil, "expected an error")
}
}