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) { DialTLS: func(network, address string, cfg *tls.Config) (net.Conn, error) {
debug.Log("new connection requested, %v %v", network, address) debug.Log("new connection requested, %v %v", network, address)
if dialCount > 0 { 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++ dialCount++
return conn, nil return conn, nil

View File

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