mirror of
https://github.com/woodpecker-ci/woodpecker.git
synced 2025-02-02 04:32:23 +00:00
Handling channel close
This commit is contained in:
parent
302f07da3c
commit
435083db9e
2 changed files with 20 additions and 15 deletions
|
@ -261,10 +261,11 @@ func (c *client) Dir(u *model.User, r *model.Repo, b *model.Build, f string) ([]
|
||||||
content, err := c.File(u, r, b, path)
|
content, err := c.File(u, r, b, path)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errc <- err
|
errc <- err
|
||||||
}
|
} else {
|
||||||
fc <- &remote.FileMeta{
|
fc <- &remote.FileMeta{
|
||||||
Name: path,
|
Name: path,
|
||||||
Data: content,
|
Data: content,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}(f + "/" + *file.Name)
|
}(f + "/" + *file.Name)
|
||||||
}
|
}
|
||||||
|
@ -275,12 +276,16 @@ func (c *client) Dir(u *model.User, r *model.Repo, b *model.Build, f string) ([]
|
||||||
go func() {
|
go func() {
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case err := <-errc:
|
case err, open := <-errc:
|
||||||
errors = append(errors, err)
|
if open {
|
||||||
wg.Done()
|
errors = append(errors, err)
|
||||||
case fileMeta := <-fc:
|
wg.Done()
|
||||||
files = append(files, fileMeta)
|
}
|
||||||
wg.Done()
|
case fileMeta, open := <-fc:
|
||||||
|
if open {
|
||||||
|
files = append(files, fileMeta)
|
||||||
|
wg.Done()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
|
@ -18,17 +18,17 @@ func (cf *configFetcher) Fetch() ([]*remote.FileMeta, error) {
|
||||||
for i := 0; i < 5; i++ {
|
for i := 0; i < 5; i++ {
|
||||||
select {
|
select {
|
||||||
case <-time.After(time.Second * time.Duration(i)):
|
case <-time.After(time.Second * time.Duration(i)):
|
||||||
file, err := cf.remote_.File(cf.user, cf.repo, cf.build, cf.repo.Config) // either a file
|
file, fileerr := cf.remote_.File(cf.user, cf.repo, cf.build, cf.repo.Config) // either a file
|
||||||
if err == nil {
|
if fileerr == nil {
|
||||||
return []*remote.FileMeta{&remote.FileMeta{
|
return []*remote.FileMeta{&remote.FileMeta{
|
||||||
Name: cf.repo.Config,
|
Name: cf.repo.Config,
|
||||||
Data: file,
|
Data: file,
|
||||||
}}, nil
|
}}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
dir, err := cf.remote_.Dir(cf.user, cf.repo, cf.build, cf.repo.Config) // or a folder
|
dir, direrr := cf.remote_.Dir(cf.user, cf.repo, cf.build, ".drone") // or a folder
|
||||||
if err != nil {
|
if direrr != nil {
|
||||||
return nil, err
|
return nil, direrr
|
||||||
}
|
}
|
||||||
return dir, nil
|
return dir, nil
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue