Skip to content

Commit 56d217f

Browse files
committed
fix: atomic incrementer for consistent state
Signed-off-by: Jef LeCompte <[email protected]>
1 parent 957a8e9 commit 56d217f

File tree

1 file changed

+17
-13
lines changed

1 file changed

+17
-13
lines changed

main.go

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import (
1010
"os"
1111
"strings"
1212
"sync"
13+
"sync/atomic"
1314
)
1415

1516
type member struct {
@@ -26,28 +27,31 @@ func main() {
2627
func printReport(ms []member) {
2728
var wg sync.WaitGroup
2829

29-
withSize := 0
30-
withoutSize := 0
31-
multipleSize := 0
30+
var (
31+
withSize uint32
32+
withoutSize uint32
33+
multipleSize uint32
34+
)
3235

3336
for _, m := range ms {
3437
wg.Add(1)
3538
m := m
39+
3640
go func() {
3741
defer wg.Done()
38-
if len(m.Keys) == 0 {
39-
withoutSize++
40-
if *showUsers == "without" || *showUsers == "all" {
42+
if len(m.Keys) != 0 {
43+
atomic.AddUint32(&withSize, 1)
44+
if *showUsers == "with" || *showUsers == "all" {
4145
zap.S().Infow("retrieved keys",
4246
"user", m.Login,
4347
"keys", m.Keys,
4448
)
4549
}
4650
}
4751

48-
if len(m.Keys) != 0 {
49-
withSize++
50-
if *showUsers == "with" || *showUsers == "all" {
52+
if len(m.Keys) == 0 {
53+
atomic.AddUint32(&withoutSize, 1)
54+
if *showUsers == "without" || *showUsers == "all" {
5155
zap.S().Infow("retrieved keys",
5256
"user", m.Login,
5357
"keys", m.Keys,
@@ -56,7 +60,7 @@ func printReport(ms []member) {
5660
}
5761

5862
if len(m.Keys) > 1 {
59-
multipleSize++
63+
atomic.AddUint32(&multipleSize, 1)
6064
if *showUsers == "multiple" || *showUsers == "all" {
6165
zap.S().Infow("retrieved keys",
6266
"user", m.Login,
@@ -133,7 +137,7 @@ func getKeys(ms []member) []member {
133137
}
134138

135139
func getMembers() []member {
136-
page := 1
140+
p := 1
137141

138142
var members []member
139143

@@ -142,7 +146,7 @@ func getMembers() []member {
142146

143147
req, err := http.NewRequest(
144148
"GET",
145-
fmt.Sprintf("%s/%s/members?filter=all&page=%d", gitHubOrgAPI, gitHubOrg, page),
149+
fmt.Sprintf("%s/%s/members?filter=all&page=%d", gitHubOrgAPI, gitHubOrg, p),
146150
nil,
147151
)
148152
if err != nil {
@@ -171,7 +175,7 @@ func getMembers() []member {
171175

172176
if len(ms) != 0 {
173177
members = append(members, ms...)
174-
page++
178+
p++
175179
} else {
176180
break
177181
}

0 commit comments

Comments
 (0)