Skip to content

Commit b06c795

Browse files
committed
feat: add more detailed error messages to TCP client
1 parent b41f763 commit b06c795

File tree

2 files changed

+6
-3
lines changed

2 files changed

+6
-3
lines changed

internal/transport/client.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,11 +136,12 @@ func (c *Client) conn(addr string) (net.Conn, error) {
136136
// Wrap the net.Conn to implement timeout logic
137137
conn = NewConnWithTimeout(conn, c.config.ReadTimeout, c.config.WriteTimeout)
138138
}
139-
return conn, err
139+
return conn, nil
140140
}
141141

142142
func (c *Client) teardownConnWithTimeout(conn *ConnWithTimeout, dead bool) {
143143
if dead {
144+
CurrentConnections.Decrease(1)
144145
conn.MarkUnusable()
145146
} else {
146147
if err := conn.UnsetDeadline(); err != nil {
@@ -194,7 +195,7 @@ func (c *Client) RequestTo(addr string, req protocol.EncodeDecoder) (protocol.En
194195
nr, err := req.Buffer().WriteTo(conn)
195196
if err != nil {
196197
dead = true
197-
return nil, err
198+
return nil, fmt.Errorf("failed to write message: %w", err)
198199
}
199200
WrittenBytesTotal.Increase(nr)
200201

@@ -204,7 +205,7 @@ func (c *Client) RequestTo(addr string, req protocol.EncodeDecoder) (protocol.En
204205
if err != nil {
205206
// Failed to read message from the TCP socket. Close it.
206207
dead = true
207-
return nil, err
208+
return nil, fmt.Errorf("failed to read message: %w", err)
208209
}
209210

210211
ReadBytesTotal.Increase(protocol.HeaderLength + int64(h.MessageLength))

internal/transport/timeout_test.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ package transport
1717
import (
1818
"bytes"
1919
"context"
20+
"errors"
2021
"net"
2122
"sync/atomic"
2223
"testing"
@@ -57,6 +58,7 @@ func TestConnWithTimeout(t *testing.T) {
5758
defer cancel()
5859
req := protocol.NewDMapMessage(protocol.OpPut)
5960
_, err := c.RequestTo(s.listener.Addr().String(), req)
61+
err = errors.Unwrap(err)
6062
if err.(*net.OpError).Err.Error() != "i/o timeout" {
6163
t.Errorf("Expected i/o timeout. Got: %v", err)
6264
}

0 commit comments

Comments
 (0)