Skip to content

Commit 64bc516

Browse files
committed
Add with block and fail on non-temp dial error
This guarantees that grpc requests will fail quickly when the service is not started or does not have permission. Without the fail on non-temp error the withblock will cause the client to wait until the timeout before failing. Fixes #989 Signed-off-by: Derek McGowan <[email protected]>
1 parent 6bbed2c commit 64bc516

2 files changed

Lines changed: 15 additions & 11 deletions

File tree

client.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,9 +65,11 @@ func New(address string, opts ...ClientOpt) (*Client, error) {
6565
}
6666

6767
gopts := []grpc.DialOption{
68+
grpc.WithBlock(),
6869
grpc.WithInsecure(),
6970
grpc.WithTimeout(100 * time.Second),
7071
grpc.WithDialer(dialer),
72+
grpc.FailOnNonTempDialError(true),
7173
}
7274
if copts.defaultns != "" {
7375
unary, stream := newNSInterceptors(copts.defaultns)

client_test.go

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -67,13 +67,9 @@ func TestMain(m *testing.M) {
6767
}
6868
}
6969

70-
client, err := New(address)
70+
client, err := waitForDaemonStart(ctx, address)
7171
if err != nil {
72-
fmt.Fprintln(os.Stderr, err)
73-
os.Exit(1)
74-
}
75-
if err := waitForDaemonStart(ctx, client); err != nil {
76-
fmt.Fprintln(os.Stderr, err)
72+
fmt.Fprintln(os.Stderr, "immediate fail!", err)
7773
os.Exit(1)
7874
}
7975

@@ -110,20 +106,26 @@ func TestMain(m *testing.M) {
110106
os.Exit(status)
111107
}
112108

113-
func waitForDaemonStart(ctx context.Context, client *Client) error {
109+
func waitForDaemonStart(ctx context.Context, address string) (*Client, error) {
114110
var (
111+
client *Client
115112
serving bool
116113
err error
117114
)
118115

119116
for i := 0; i < 20; i++ {
120-
serving, err = client.IsServing(ctx)
121-
if serving {
122-
return nil
117+
if client == nil {
118+
client, err = New(address)
119+
}
120+
if err == nil {
121+
serving, err = client.IsServing(ctx)
122+
if serving {
123+
return client, nil
124+
}
123125
}
124126
time.Sleep(100 * time.Millisecond)
125127
}
126-
return fmt.Errorf("containerd did not start within 2s: %v", err)
128+
return nil, fmt.Errorf("containerd did not start within 2s: %v", err)
127129
}
128130

129131
func TestNewClient(t *testing.T) {

0 commit comments

Comments
 (0)