Merge pull request #4394 from laurazard/fix-flaky-ssh

commandconn: return original error while closing
This commit is contained in:
Sebastiaan van Stijn 2023-06-30 19:25:22 +02:00 committed by GitHub
commit dc2eb3bf7c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 8 deletions

View File

@ -163,9 +163,8 @@ func (c *commandConn) Read(p []byte) (int, error) {
// Close might get called
if c.closing.Load() {
// If we're currently closing the connection
// we don't want to call onEOF, but we do want
// to return an io.EOF
return 0, io.EOF
// we don't want to call onEOF
return n, err
}
return n, c.handleEOF(err)
@ -178,9 +177,8 @@ func (c *commandConn) Write(p []byte) (int, error) {
// Close might get called
if c.closing.Load() {
// If we're currently closing the connection
// we don't want to call onEOF, but we do want
// to return an io.EOF
return 0, io.EOF
// we don't want to call onEOF
return n, err
}
return n, c.handleEOF(err)

View File

@ -5,6 +5,7 @@ package commandconn
import (
"context"
"io"
"io/fs"
"testing"
"time"
@ -178,7 +179,8 @@ func TestCloseWhileWriting(t *testing.T) {
assert.Check(t, !process.Alive(cmdConn.cmd.Process.Pid))
writeErr := <-writeErrC
assert.ErrorContains(t, writeErr, "EOF")
assert.ErrorContains(t, writeErr, "file already closed")
assert.Check(t, is.ErrorIs(writeErr, fs.ErrClosed))
}
func TestCloseWhileReading(t *testing.T) {
@ -208,5 +210,5 @@ func TestCloseWhileReading(t *testing.T) {
assert.Check(t, !process.Alive(cmdConn.cmd.Process.Pid))
readErr := <-readErrC
assert.ErrorContains(t, readErr, "EOF")
assert.Check(t, is.ErrorIs(readErr, fs.ErrClosed))
}