Skip to content

Commit 89be918

Browse files
author
Armin
committed
add golangci-lint configuration and improve error handling in consumers
1 parent 77fdfa8 commit 89be918

File tree

6 files changed

+68
-6
lines changed

6 files changed

+68
-6
lines changed

.github/workflows/go.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,14 @@ jobs:
2121
with:
2222
go-version: '1.25'
2323

24+
- name: Install golangci-lint
25+
uses: golangci/golangci-lint-action@v3
26+
with:
27+
version: v1.55.2
28+
29+
- name: Lint
30+
run: golangci-lint run ./...
31+
2432
- name: Build
2533
run: go build -v ./...
2634

.golangci.yml

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
version: 2
2+
3+
run:
4+
timeout: 5m
5+
tests: true
6+
issues-exit-code: 1
7+
8+
linters:
9+
enable:
10+
- errcheck
11+
- govet
12+
- bodyclose
13+
- errorlint
14+
- sloglint
15+
- sqlclosecheck
16+
17+
linters-settings:
18+
revive:
19+
severity: warning
20+
rules:
21+
- name: exported
22+
severity: warning
23+
gocritic:
24+
enabled-checks:
25+
- ifElseChain
26+
- sloppyReassign
27+
- unnecessaryDefer
28+
gofmt:
29+
simplify: true
30+
31+
issues:
32+
exclude-rules:
33+
- path: "_test\\.go"
34+
linters:
35+
- errcheck
36+
- dupl
37+
- path: "docs/.*"
38+
linters:
39+
- gofmt
40+
- revive
41+
max-same-issues: 0
42+
43+
output:
44+
format: colored-line-number

cmd/api/main.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,10 @@ func CreateHermesAndIVRQueue() {
5959
panic(err)
6060
}
6161

62-
defer ch.Close()
62+
defer func() {
63+
_ = ch.Close()
64+
_ = conn.Close()
65+
}()
6366

6467
if err = ch.ExchangeDeclare(config.SmsExchange, "direct", true, false, false, false, amqp091.Table{}); err != nil {
6568
panic(err)

internal/sms/consumer.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@ func StartConsumers(ctx context.Context) error {
2222
10,
2323
func(ctx context.Context, evt amqp091.Delivery) error {
2424
defer func() {
25-
evt.Ack(false)
25+
if err := evt.Ack(false); err != nil {
26+
app.Logger.Error("ack failed", "err", err)
27+
}
2628
}()
2729
var message model.SMS
2830
if err := json.Unmarshal(evt.Body, &message); err != nil {
@@ -50,7 +52,9 @@ func StartConsumers(ctx context.Context) error {
5052
10,
5153
func(ctx context.Context, evt amqp091.Delivery) error {
5254
defer func() {
53-
evt.Ack(false)
55+
if err := evt.Ack(false); err != nil {
56+
app.Logger.Error("ack failed", "err", err)
57+
}
5458
}()
5559
var message model.SMS
5660
if err := json.Unmarshal(evt.Body, &message); err != nil {

pkg/circuitbreaker/circuitbreaker.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,7 @@ func (cb *Breaker) Allow() error {
5050
defer cb.mu.Unlock()
5151

5252
now := time.Now()
53-
switch cb.state {
54-
case StateOpen:
53+
if cb.state == StateOpen {
5554
if now.Before(cb.reopenDeadline) {
5655
return ErrOpen
5756
}

pkg/queue/worker_consumer.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,11 @@ func MakeConsumerWithWorkers(
9090
}
9191

9292
go func() {
93-
defer conn.Conn.Close()
93+
defer func() {
94+
if err := conn.Conn.Close(); err != nil {
95+
slog.Error("cannot close amqp connection", "err", err)
96+
}
97+
}()
9498
var workerIndex int
9599
for {
96100
if workerIndex > workerCount-1 {

0 commit comments

Comments
 (0)