Skip to content

Commit fa8d075

Browse files
TessaIOndeloof
authored andcommitted
Fix: remove the infinite goroutine
Signed-off-by: AhmedGrati <[email protected]>
1 parent aa31387 commit fa8d075

File tree

5 files changed

+42
-24
lines changed

5 files changed

+42
-24
lines changed

cmd/docker-compose.yaml

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
version: '3.3'
2+
3+
services:
4+
servic1:
5+
image: nginx
6+
ports:
7+
- 8081:80
8+
service2:
9+
image: nginx
10+
ports:
11+
- 8082:80
12+
service3:
13+
image: nginx
14+
ports:
15+
- 8083:80
16+

cmd/formatter/colors.go

Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -86,38 +86,31 @@ func makeColorFunc(code string) colorFunc {
8686
}
8787

8888
var nextColor = rainbowColor
89+
var rainbow []colorFunc
90+
var currentIndex = 0
8991

9092
func rainbowColor() colorFunc {
91-
return <-loop
93+
result := rainbow[currentIndex]
94+
currentIndex = (currentIndex + 1) % len(rainbow)
95+
return result
9296
}
9397

94-
var loop = make(chan colorFunc)
95-
9698
func init() {
9799
colors := map[string]colorFunc{}
98100
for i, name := range names {
99101
colors[name] = makeColorFunc(strconv.Itoa(30 + i))
100102
colors["intense_"+name] = makeColorFunc(strconv.Itoa(30+i) + ";1")
101103
}
102-
103-
go func() {
104-
i := 0
105-
rainbow := []colorFunc{
106-
colors["cyan"],
107-
colors["yellow"],
108-
colors["green"],
109-
colors["magenta"],
110-
colors["blue"],
111-
colors["intense_cyan"],
112-
colors["intense_yellow"],
113-
colors["intense_green"],
114-
colors["intense_magenta"],
115-
colors["intense_blue"],
116-
}
117-
118-
for {
119-
loop <- rainbow[i]
120-
i = (i + 1) % len(rainbow)
121-
}
122-
}()
104+
rainbow = []colorFunc{
105+
colors["cyan"],
106+
colors["yellow"],
107+
colors["green"],
108+
colors["magenta"],
109+
colors["blue"],
110+
colors["intense_cyan"],
111+
colors["intense_yellow"],
112+
colors["intense_green"],
113+
colors["intense_magenta"],
114+
colors["intense_blue"],
115+
}
123116
}

cmd/formatter/formatter_test.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"io"
2323
"testing"
2424

25+
"go.uber.org/goleak"
2526
"gotest.tools/v3/assert"
2627
)
2728

@@ -71,3 +72,7 @@ func TestPrint(t *testing.T) {
7172
{"Name":"myName2","Status":"myStatus2"}
7273
`)
7374
}
75+
76+
func TestColorsGoroutinesLeak(t *testing.T) {
77+
goleak.VerifyNone(t)
78+
}

go.mod

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,8 @@ require (
150150
sigs.k8s.io/yaml v1.2.0 // indirect
151151
)
152152

153+
require go.uber.org/goleak v1.1.12
154+
153155
replace (
154156
// Override for e2e tests
155157
github.com/cucumber/godog => github.com/laurazard/godog v0.0.0-20220922095256-4c4b17abdae7

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -770,6 +770,7 @@ golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHl
770770
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
771771
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
772772
golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
773+
golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k=
773774
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
774775
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
775776
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
@@ -978,6 +979,7 @@ golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4f
978979
golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
979980
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
980981
golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
982+
golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU=
981983
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
982984
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
983985
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=

0 commit comments

Comments
 (0)