Skip to content

Commit 49dc48b

Browse files
authored
Merge pull request #84 from arduino/scerza/remove-dependency
Refactor code to remove old dependency
2 parents b4de072 + 1124906 commit 49dc48b

File tree

3 files changed

+28
-44
lines changed

3 files changed

+28
-44
lines changed

go.mod

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ go 1.16
55
require (
66
github.com/arduino/arduino-cli v0.0.0-20210520100059-2666b6ec51e9
77
github.com/arduino/go-paths-helper v1.6.1
8-
github.com/arduino/golang-concurrent-workers v0.0.0-20170202182617-6710cdc954bc
98
github.com/go-git/go-git/v5 v5.4.2
109
github.com/spf13/cobra v1.3.0
1110
github.com/spf13/pflag v1.0.5

go.sum

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,6 @@ github.com/arduino/go-properties-orderedmap v1.3.0/go.mod h1:DKjD2VXY/NZmlingh4l
8080
github.com/arduino/go-timeutils v0.0.0-20171220113728-d1dd9e313b1b/go.mod h1:uwGy5PpN4lqW97FiLnbcx+xx8jly5YuPMJWfVwwjJiQ=
8181
github.com/arduino/go-win32-utils v0.0.0-20180330194947-ed041402e83b h1:3PjgYG5gVPA7cipp7vIR2lF96KkEJIFBJ+ANnuv6J20=
8282
github.com/arduino/go-win32-utils v0.0.0-20180330194947-ed041402e83b/go.mod h1:iIPnclBMYm1g32Q5kXoqng4jLhMStReIP7ZxaoUC2y8=
83-
github.com/arduino/golang-concurrent-workers v0.0.0-20170202182617-6710cdc954bc h1:PzGY1Ppud/Ng+LFHU16oOrWhYsnSLYurwiHlbVc/FJ0=
84-
github.com/arduino/golang-concurrent-workers v0.0.0-20170202182617-6710cdc954bc/go.mod h1:E+WBbLkFBdPp+N+yijgbdDI33mr5pm6j42RYLN5K4do=
8583
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
8684
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
8785
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=

internal/command/sync/sync.go

Lines changed: 28 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,9 @@ import (
3232
"log"
3333
"os"
3434
"path/filepath"
35+
"runtime"
36+
"sync"
3537

36-
cc "github.com/arduino/golang-concurrent-workers"
3738
"github.com/arduino/libraries-repository-engine/internal/configuration"
3839
"github.com/arduino/libraries-repository-engine/internal/feedback"
3940
"github.com/arduino/libraries-repository-engine/internal/libraries"
@@ -79,54 +80,40 @@ func syncLibraries(reposFile string) {
7980
os.Exit(1)
8081
}
8182

82-
type jobContext struct {
83-
id int
84-
repoMetadata *libraries.Repo
85-
}
86-
8783
libraryDb := db.Init(config.LibrariesDB)
8884

89-
jobQueue := make(chan *jobContext)
90-
91-
pool := cc.New(4)
92-
worker := func() {
93-
log.Println("Started worker...")
94-
for job := range jobQueue {
95-
buffer := &bytes.Buffer{}
96-
logger := log.New(buffer, "", log.LstdFlags|log.LUTC)
97-
syncLibrary(logger, job.repoMetadata, libraryDb)
98-
99-
// Output log to file
100-
if err := outputLogFile(logger, job.repoMetadata, buffer); err != nil {
101-
logger.Printf("Error writing log file: %s", err.Error())
102-
}
103-
104-
// Output log to stdout
105-
fmt.Println(buffer.String())
106-
}
107-
log.Println("Completed worker!")
108-
}
109-
pool.Run(worker)
110-
pool.Run(worker)
111-
pool.Run(worker)
112-
pool.Run(worker)
113-
pool.Wait()
114-
85+
reposChan := make(chan *libraries.Repo)
11586
go func() {
116-
id := 0
11787
for _, repo := range repos {
118-
jobQueue <- &jobContext{
119-
id: id,
120-
repoMetadata: repo,
121-
}
122-
id++
88+
reposChan <- repo
12389
}
124-
close(jobQueue)
90+
close(reposChan)
12591
}()
12692

127-
for err := range pool.Errors {
128-
feedback.LogError(err)
93+
// Run workers in parallel to consume repositories list
94+
var wg sync.WaitGroup
95+
for workersCount := 0; workersCount < runtime.NumCPU(); workersCount++ {
96+
wg.Add(1)
97+
go func() {
98+
log.Println("Started worker...")
99+
for repo := range reposChan {
100+
buffer := &bytes.Buffer{}
101+
logger := log.New(buffer, "", log.LstdFlags|log.LUTC)
102+
syncLibrary(logger, repo, libraryDb)
103+
104+
// Output log to file
105+
if err := outputLogFile(logger, repo, buffer); err != nil {
106+
logger.Printf("Error writing log file: %s", err.Error())
107+
}
108+
109+
// Output log to stdout
110+
fmt.Println(buffer.String())
111+
}
112+
wg.Done()
113+
log.Println("Completed worker!")
114+
}()
129115
}
116+
wg.Wait()
130117

131118
libraryIndex, err := libraryDb.OutputLibraryIndex()
132119
if feedback.LogError(err) {

0 commit comments

Comments
 (0)