11package cmd
22
33import (
4- "github.com/checkmarx/2ms/lib/secrets"
5- "sync"
6-
74 "github.com/checkmarx/2ms/engine"
85 "github.com/checkmarx/2ms/engine/extra"
6+ "golang.org/x/sync/errgroup"
97)
108
119func processItems (engine * engine.Engine , pluginName string ) {
1210 defer channels .WaitGroup .Done ()
1311
14- wgItems := & sync.WaitGroup {}
12+ g := errgroup.Group {}
13+ g .SetLimit (1000 )
1514 for item := range channels .Items {
1615 report .TotalItemsScanned ++
17- wgItems .Add (1 )
18- go engine .Detect (item , secretsChan , wgItems , pluginName , channels .Errors )
16+ g .Go (func () error {
17+ engine .Detect (item , secretsChan , pluginName , channels .Errors )
18+ return nil
19+ })
1920 }
20- wgItems .Wait ()
21+ g .Wait ()
2122 close (secretsChan )
2223}
2324
@@ -42,37 +43,43 @@ func processSecrets() {
4243func processSecretsExtras () {
4344 defer channels .WaitGroup .Done ()
4445
45- wgExtras := & sync.WaitGroup {}
46+ g := errgroup.Group {}
47+ g .SetLimit (10 )
4648 for secret := range secretsExtrasChan {
47- wgExtras .Add (1 )
48- go extra .AddExtraToSecret (secret , wgExtras )
49+ g .Go (func () error {
50+ extra .AddExtraToSecret (secret )
51+ return nil
52+ })
4953 }
50- wgExtras .Wait ()
54+ g .Wait ()
5155}
5256
5357func processValidationAndScoreWithValidation (engine * engine.Engine ) {
5458 defer channels .WaitGroup .Done ()
5559
56- wgValidation := & sync.WaitGroup {}
60+ g := errgroup.Group {}
61+ g .SetLimit (10 )
5762 for secret := range validationChan {
58- wgValidation . Add ( 2 )
59- go func (secret * secrets. Secret , wg * sync. WaitGroup ) {
60- engine .RegisterForValidation (secret , wg )
61- engine . Score ( secret , true , wg )
62- }( secret , wgValidation )
63+ g . Go ( func () error {
64+ engine . RegisterForValidation (secret )
65+ engine .Score (secret , true )
66+ return nil
67+ })
6368 }
64- wgValidation .Wait ()
65-
69+ g .Wait ()
6670 engine .Validate ()
6771}
6872
6973func processScoreWithoutValidation (engine * engine.Engine ) {
7074 defer channels .WaitGroup .Done ()
7175
72- wgScore := & sync.WaitGroup {}
76+ g := errgroup.Group {}
77+ g .SetLimit (10 )
7378 for secret := range cvssScoreWithoutValidationChan {
74- wgScore .Add (1 )
75- go engine .Score (secret , false , wgScore )
79+ g .Go (func () error {
80+ engine .Score (secret , false )
81+ return nil
82+ })
7683 }
77- wgScore .Wait ()
84+ g .Wait ()
7885}
0 commit comments