Skip to content

Commit bd760b3

Browse files
gcmsgclaude
andcommitted
style: revert verbose defer Close wrappers, configure errcheck exclusions
Wrapping `defer rows.Close()` as `defer func() { _ = rows.Close() }()` solely to satisfy errcheck hurts readability for no practical benefit — the error from a deferred Close is unactionable. Configure errcheck to exclude common Close methods and revert all 70+ instances to clean `defer x.Close()`. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
1 parent b295fea commit bd760b3

File tree

30 files changed

+84
-72
lines changed

30 files changed

+84
-72
lines changed

.golangci.yml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,18 @@ linters:
66
- staticcheck
77
- unused
88

9+
settings:
10+
errcheck:
11+
# Don't flag deferred Close / cleanup calls – the error is unactionable in
12+
# a defer and wrapping them hurts readability.
13+
exclude-functions:
14+
- (io.Closer).Close
15+
- (*database/sql.Rows).Close
16+
- (*database/sql.DB).Close
17+
- (*os.File).Close
18+
- (net/http.ResponseWriter).Write
19+
- (*github.com/redis/go-redis/v9.PubSub).Close
20+
921
exclusions:
1022
rules:
1123
# Exclude errcheck in test files – test helpers rarely need error checking.

cmd/peerclawd/main.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ func main() {
8989
logger.Error("failed to open database", "error", err, "driver", cfg.Database.Driver)
9090
os.Exit(1)
9191
}
92-
defer func() { _ = store.Close() }()
92+
defer store.Close()
9393

9494
// Extract the underlying *sql.DB for shared use by reputation and verification modules.
9595
sqlDB, _ := store.GetDB().(*sql.DB)

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ require (
1919
go.opentelemetry.io/otel/trace v1.41.0
2020
golang.org/x/crypto v0.48.0
2121
golang.org/x/time v0.14.0
22-
google.golang.org/grpc v1.79.1
2322
gopkg.in/yaml.v3 v3.0.1
2423
)
2524

@@ -39,5 +38,6 @@ require (
3938
golang.org/x/text v0.34.0 // indirect
4039
google.golang.org/genproto/googleapis/api v0.0.0-20260209200024-4cfbd4190f57 // indirect
4140
google.golang.org/genproto/googleapis/rpc v0.0.0-20260209200024-4cfbd4190f57 // indirect
41+
google.golang.org/grpc v1.79.1 // indirect
4242
google.golang.org/protobuf v1.36.11 // indirect
4343
)

internal/blob/fs.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ func (fs *DiskFileStore) Write(id string, r io.Reader) (int64, error) {
2929
if err != nil {
3030
return 0, fmt.Errorf("create blob file: %w", err)
3131
}
32-
defer func() { _ = f.Close() }()
32+
defer f.Close()
3333

3434
n, err := io.Copy(f, r)
3535
if err != nil {

internal/blob/postgres.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ func (s *PostgresMetaStore) ListExpired(ctx context.Context) ([]string, error) {
7272
if err != nil {
7373
return nil, err
7474
}
75-
defer func() { _ = rows.Close() }()
75+
defer rows.Close()
7676

7777
var ids []string
7878
for rows.Next() {

internal/blob/sqlite.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ func (s *SQLiteMetaStore) ListExpired(ctx context.Context) ([]string, error) {
8484
if err != nil {
8585
return nil, err
8686
}
87-
defer func() { _ = rows.Close() }()
87+
defer rows.Close()
8888

8989
var ids []string
9090
for rows.Next() {

internal/bridge/a2a/adapter.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,7 @@ func (a *Adapter) Send(ctx context.Context, env *envelope.Envelope) error {
109109
if err != nil {
110110
return fmt.Errorf("a2a: http post: %w", err)
111111
}
112-
defer func() { _ = httpResp.Body.Close() }()
112+
defer httpResp.Body.Close()
113113

114114
respBody, err := io.ReadAll(io.LimitReader(httpResp.Body, maxResponseBodySize))
115115
if err != nil {
@@ -223,7 +223,7 @@ func (a *Adapter) SendStream(ctx context.Context, env *envelope.Envelope) (<-cha
223223

224224
func (a *Adapter) readSSEStream(resp *http.Response, ch chan<- bridge.StreamChunk) {
225225
defer close(ch)
226-
defer func() { _ = resp.Body.Close() }()
226+
defer resp.Body.Close()
227227

228228
scanner := bufio.NewScanner(resp.Body)
229229
scanner.Buffer(make([]byte, 64*1024), 64*1024)
@@ -266,7 +266,7 @@ func (a *Adapter) readSSEStream(resp *http.Response, ch chan<- bridge.StreamChun
266266

267267
func (a *Adapter) readBufferedResponse(resp *http.Response, ch chan<- bridge.StreamChunk) {
268268
defer close(ch)
269-
defer func() { _ = resp.Body.Close() }()
269+
defer resp.Body.Close()
270270

271271
body, err := io.ReadAll(io.LimitReader(resp.Body, maxResponseBodySize))
272272
if err != nil {

internal/bridge/a2a/adapter_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ func init() {
2121

2222
func TestAdapterProtocol(t *testing.T) {
2323
a := New(nil, nil)
24-
defer func() { _ = a.Close() }()
24+
defer a.Close()
2525
if a.Protocol() != "a2a" {
2626
t.Errorf("Protocol() = %q", a.Protocol())
2727
}

internal/bridge/acp/adapter.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ func (a *Adapter) Send(ctx context.Context, env *envelope.Envelope) error {
8181
if err != nil {
8282
return fmt.Errorf("acp: http post: %w", err)
8383
}
84-
defer func() { _ = httpResp.Body.Close() }()
84+
defer httpResp.Body.Close()
8585

8686
respBody, err := io.ReadAll(io.LimitReader(httpResp.Body, maxResponseBodySize))
8787
if err != nil {

internal/bridge/acp/adapter_test.go

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ func init() {
1919

2020
func TestAdapterProtocol(t *testing.T) {
2121
a := New(nil, nil)
22-
defer func() { _ = a.Close() }()
22+
defer a.Close()
2323
if a.Protocol() != "acp" {
2424
t.Errorf("Protocol() = %q", a.Protocol())
2525
}
@@ -56,7 +56,7 @@ func TestAdapterSend(t *testing.T) {
5656
defer server.Close()
5757

5858
adapter := New(nil, server.Client())
59-
defer func() { _ = adapter.Close() }()
59+
defer adapter.Close()
6060

6161
env := envelope.New("alice", "echo", protocol.ProtocolACP, []byte("do something"))
6262
env.Metadata["acp.endpoint"] = server.URL
@@ -90,7 +90,7 @@ func TestAdapterSend(t *testing.T) {
9090

9191
func TestAdapterSendMissingEndpoint(t *testing.T) {
9292
adapter := New(nil, nil)
93-
defer func() { _ = adapter.Close() }()
93+
defer adapter.Close()
9494

9595
env := envelope.New("a", "b", protocol.ProtocolACP, []byte("test"))
9696
err := adapter.Send(context.Background(), env)
@@ -101,7 +101,7 @@ func TestAdapterSendMissingEndpoint(t *testing.T) {
101101

102102
func TestAdapterTranslateToA2A(t *testing.T) {
103103
adapter := New(nil, nil)
104-
defer func() { _ = adapter.Close() }()
104+
defer adapter.Close()
105105

106106
msg := Message{
107107
Role: "agent",
@@ -121,7 +121,7 @@ func TestAdapterTranslateToA2A(t *testing.T) {
121121

122122
func TestAdapterTranslateSame(t *testing.T) {
123123
adapter := New(nil, nil)
124-
defer func() { _ = adapter.Close() }()
124+
defer adapter.Close()
125125

126126
env := envelope.New("a", "b", protocol.ProtocolACP, []byte("test"))
127127
translated, err := adapter.Translate(context.Background(), env, "acp")
@@ -135,7 +135,7 @@ func TestAdapterTranslateSame(t *testing.T) {
135135

136136
func TestHandleListAgents(t *testing.T) {
137137
adapter := New(nil, nil)
138-
defer func() { _ = adapter.Close() }()
138+
defer adapter.Close()
139139

140140
httpReq := httptest.NewRequest(http.MethodGet, "/acp/agents", nil)
141141
w := httptest.NewRecorder()
@@ -155,7 +155,7 @@ func TestHandleListAgents(t *testing.T) {
155155

156156
func TestHandleGetAgent(t *testing.T) {
157157
adapter := New(nil, nil)
158-
defer func() { _ = adapter.Close() }()
158+
defer adapter.Close()
159159

160160
httpReq := httptest.NewRequest(http.MethodGet, "/acp/agents/echo", nil)
161161
httpReq.SetPathValue("name", "echo")
@@ -176,7 +176,7 @@ func TestHandleGetAgent(t *testing.T) {
176176

177177
func TestHandleCreateRun(t *testing.T) {
178178
adapter := New(nil, nil)
179-
defer func() { _ = adapter.Close() }()
179+
defer adapter.Close()
180180

181181
req := CreateRunRequest{
182182
AgentName: "echo",
@@ -220,7 +220,7 @@ func TestHandleCreateRun(t *testing.T) {
220220

221221
func TestHandleCreateRun_MissingAgent(t *testing.T) {
222222
adapter := New(nil, nil)
223-
defer func() { _ = adapter.Close() }()
223+
defer adapter.Close()
224224

225225
req := CreateRunRequest{Input: []Message{}}
226226
body, _ := json.Marshal(req)
@@ -237,7 +237,7 @@ func TestHandleCreateRun_MissingAgent(t *testing.T) {
237237

238238
func TestHandleGetRun(t *testing.T) {
239239
adapter := New(nil, nil)
240-
defer func() { _ = adapter.Close() }()
240+
defer adapter.Close()
241241

242242
run := &Run{RunID: "run-1", Status: RunStatusCompleted, AgentName: "echo"}
243243
adapter.runs.Store("run-1", run)
@@ -261,7 +261,7 @@ func TestHandleGetRun(t *testing.T) {
261261

262262
func TestHandleGetRun_NotFound(t *testing.T) {
263263
adapter := New(nil, nil)
264-
defer func() { _ = adapter.Close() }()
264+
defer adapter.Close()
265265

266266
httpReq := httptest.NewRequest(http.MethodGet, "/acp/runs/unknown", nil)
267267
httpReq.SetPathValue("run_id", "unknown")
@@ -276,7 +276,7 @@ func TestHandleGetRun_NotFound(t *testing.T) {
276276

277277
func TestHandleCancelRun(t *testing.T) {
278278
adapter := New(nil, nil)
279-
defer func() { _ = adapter.Close() }()
279+
defer adapter.Close()
280280

281281
run := &Run{RunID: "run-1", Status: RunStatusInProgress}
282282
adapter.runs.Store("run-1", run)
@@ -300,7 +300,7 @@ func TestHandleCancelRun(t *testing.T) {
300300

301301
func TestHandlePing(t *testing.T) {
302302
adapter := New(nil, nil)
303-
defer func() { _ = adapter.Close() }()
303+
defer adapter.Close()
304304

305305
httpReq := httptest.NewRequest(http.MethodGet, "/acp/ping", nil)
306306
w := httptest.NewRecorder()
@@ -314,7 +314,7 @@ func TestHandlePing(t *testing.T) {
314314

315315
func TestInjectMessage(t *testing.T) {
316316
adapter := New(nil, nil)
317-
defer func() { _ = adapter.Close() }()
317+
defer adapter.Close()
318318

319319
env := envelope.New("test", "dest", protocol.ProtocolACP, []byte("test"))
320320
if err := adapter.InjectMessage(env); err != nil {

0 commit comments

Comments
 (0)