Signed-off-by: Clinton Kitson <clintonskitson@gmail.com>
| ... | ... |
@@ -199,17 +199,27 @@ func GetAll(imp string) ([]*Plugin, error) {
|
| 199 | 199 |
err error |
| 200 | 200 |
} |
| 201 | 201 |
|
| 202 |
- chPl := make(chan plLoad, len(pluginNames)) |
|
| 202 |
+ chPl := make(chan *plLoad, len(pluginNames)) |
|
| 203 |
+ var wg sync.WaitGroup |
|
| 203 | 204 |
for _, name := range pluginNames {
|
| 205 |
+ if pl, ok := storage.plugins[name]; ok {
|
|
| 206 |
+ chPl <- &plLoad{pl, nil}
|
|
| 207 |
+ continue |
|
| 208 |
+ } |
|
| 209 |
+ |
|
| 210 |
+ wg.Add(1) |
|
| 204 | 211 |
go func(name string) {
|
| 212 |
+ defer wg.Done() |
|
| 205 | 213 |
pl, err := loadWithRetry(name, false) |
| 206 |
- chPl <- plLoad{pl, err}
|
|
| 214 |
+ chPl <- &plLoad{pl, err}
|
|
| 207 | 215 |
}(name) |
| 208 | 216 |
} |
| 209 | 217 |
|
| 218 |
+ wg.Wait() |
|
| 219 |
+ close(chPl) |
|
| 220 |
+ |
|
| 210 | 221 |
var out []*Plugin |
| 211 |
- for i := 0; i < len(pluginNames); i++ {
|
|
| 212 |
- pl := <-chPl |
|
| 222 |
+ for pl := range chPl {
|
|
| 213 | 223 |
if pl.err != nil {
|
| 214 | 224 |
logrus.Error(err) |
| 215 | 225 |
continue |