Skip to content

Commit decad42

Browse files
committed
Fail fast if driver is not running
When waiting for SHS server, check if driver is running after errors. If the driver state is not "running" fail quickly with a clear error.
1 parent 4cc755f commit decad42

1 file changed

Lines changed: 10 additions & 2 deletions

File tree

pkg/drivers/common/ssh.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@ limitations under the License.
1717
package common
1818

1919
import (
20+
"fmt"
2021
"io"
2122
"net"
2223
"strconv"
2324
"time"
2425

2526
"github.com/docker/machine/libmachine/drivers"
2627
"github.com/docker/machine/libmachine/log"
28+
"github.com/docker/machine/libmachine/state"
2729
)
2830

2931
var (
@@ -49,15 +51,21 @@ func WaitForSSHAccess(d drivers.Driver) error {
4951
log.Debugf("Dialing to %q", addr)
5052
conn, err := net.Dial("tcp", addr)
5153
if err != nil {
52-
log.Debugf("Failed to dial, retrying in 1 second: %v", err)
54+
log.Debugf("Failed to dial: %v", err)
55+
if ds, err := d.GetState(); ds != state.Running {
56+
return fmt.Errorf("Driver is %v: %w", ds, err)
57+
}
5358
time.Sleep(retryDelay)
5459
continue
5560
}
5661

5762
defer conn.Close()
5863
log.Debugf("Reading from SSH server %q", addr)
5964
if _, err := conn.Read(make([]byte, 1)); err != nil && err != io.EOF {
60-
log.Debugf("Failed to read from SSH server: %v: retrying in 1 second", err)
65+
log.Debugf("Failed to read from SSH server: %v", err)
66+
if ds, err := d.GetState(); ds != state.Running {
67+
return fmt.Errorf("Driver is %v: %w", ds, err)
68+
}
6169
time.Sleep(retryDelay)
6270
continue
6371
}

0 commit comments

Comments
 (0)