Skip to content

Commit 9d1beeb

Browse files
committed
refactor(dialer): wrap returned errors with context
1 parent 649ff2b commit 9d1beeb

File tree

1 file changed

+13
-12
lines changed

1 file changed

+13
-12
lines changed

dialer.go

+13-12
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package kafka
33
import (
44
"context"
55
"crypto/tls"
6+
"errors"
67
"fmt"
78
"io"
89
"net"
@@ -276,23 +277,23 @@ func (d *Dialer) connect(ctx context.Context, network, address string, connCfg C
276277

277278
c, err := d.dialContext(ctx, network, address)
278279
if err != nil {
279-
return nil, err
280+
return nil, fmt.Errorf("failed to dial: %w", err)
280281
}
281282

282283
conn := NewConnWith(c, connCfg)
283284

284285
if d.SASLMechanism != nil {
285286
host, port, err := splitHostPortNumber(address)
286287
if err != nil {
287-
return nil, err
288+
return nil, fmt.Errorf("could not determine host/port for SASL authentication: %w", err)
288289
}
289290
metadata := &sasl.Metadata{
290291
Host: host,
291292
Port: port,
292293
}
293294
if err := d.authenticateSASL(sasl.WithMetadata(ctx, metadata), conn); err != nil {
294295
_ = conn.Close()
295-
return nil, err
296+
return nil, fmt.Errorf("could not successfully authenticate to %s:%d with SASL: %w", host, port, err)
296297
}
297298
}
298299

@@ -307,19 +308,19 @@ func (d *Dialer) connect(ctx context.Context, network, address string, connCfg C
307308
// responsibility of the caller.
308309
func (d *Dialer) authenticateSASL(ctx context.Context, conn *Conn) error {
309310
if err := conn.saslHandshake(d.SASLMechanism.Name()); err != nil {
310-
return err
311+
return fmt.Errorf("SASL handshake failed: %w", err)
311312
}
312313

313314
sess, state, err := d.SASLMechanism.Start(ctx)
314315
if err != nil {
315-
return err
316+
return fmt.Errorf("SASL authentication process could not be started: %w", err)
316317
}
317318

318319
for completed := false; !completed; {
319320
challenge, err := conn.saslAuthenticate(state)
320-
switch err {
321-
case nil:
322-
case io.EOF:
321+
switch {
322+
case err == nil:
323+
case errors.Is(err, io.EOF):
323324
// the broker may communicate a failed exchange by closing the
324325
// connection (esp. in the case where we're passing opaque sasl
325326
// data over the wire since there's no protocol info).
@@ -330,7 +331,7 @@ func (d *Dialer) authenticateSASL(ctx context.Context, conn *Conn) error {
330331

331332
completed, state, err = sess.Next(ctx, challenge)
332333
if err != nil {
333-
return err
334+
return fmt.Errorf("SASL authentication process has failed: %w", err)
334335
}
335336
}
336337

@@ -340,7 +341,7 @@ func (d *Dialer) authenticateSASL(ctx context.Context, conn *Conn) error {
340341
func (d *Dialer) dialContext(ctx context.Context, network string, addr string) (net.Conn, error) {
341342
address, err := lookupHost(ctx, addr, d.Resolver)
342343
if err != nil {
343-
return nil, err
344+
return nil, fmt.Errorf("failed to resolve host: %w", err)
344345
}
345346

346347
dial := d.DialFunc
@@ -355,7 +356,7 @@ func (d *Dialer) dialContext(ctx context.Context, network string, addr string) (
355356

356357
conn, err := dial(ctx, network, address)
357358
if err != nil {
358-
return nil, err
359+
return nil, fmt.Errorf("failed to open connection to %s: %w", address, err)
359360
}
360361

361362
if d.TLS != nil {
@@ -469,7 +470,7 @@ func lookupHost(ctx context.Context, address string, resolver Resolver) (string,
469470
if resolver != nil {
470471
resolved, err := resolver.LookupHost(ctx, host)
471472
if err != nil {
472-
return "", err
473+
return "", fmt.Errorf("failed to resolve host %s: %w", host, err)
473474
}
474475

475476
// if the resolver doesn't return anything, we'll fall back on the provided

0 commit comments

Comments
 (0)