We must lock inside the goroutines
This commit is contained in:
@@ -279,20 +279,20 @@ func parseService(name string, s *compose.Service, ret chan interface{}) {
|
|||||||
// But... some other deployment can wait for it, so we alert that this deployment hasn't got any
|
// But... some other deployment can wait for it, so we alert that this deployment hasn't got any
|
||||||
// associated service.
|
// associated service.
|
||||||
if len(s.Ports) == 0 {
|
if len(s.Ports) == 0 {
|
||||||
locker.Lock()
|
|
||||||
// alert any current or **futur** waiters that this service is not exposed
|
// alert any current or **futur** waiters that this service is not exposed
|
||||||
go func() {
|
go func() {
|
||||||
for {
|
for {
|
||||||
select {
|
select {
|
||||||
case <-time.Tick(1 * time.Millisecond):
|
case <-time.Tick(1 * time.Millisecond):
|
||||||
|
locker.Lock()
|
||||||
for _, c := range serviceWaiters[name] {
|
for _, c := range serviceWaiters[name] {
|
||||||
c <- -1
|
c <- -1
|
||||||
close(c)
|
close(c)
|
||||||
}
|
}
|
||||||
|
locker.Unlock()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
locker.Unlock()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// add the volumes in Values
|
// add the volumes in Values
|
||||||
@@ -397,6 +397,8 @@ func detected(name string, port int) {
|
|||||||
}
|
}
|
||||||
servicesMap[name] = port
|
servicesMap[name] = port
|
||||||
go func() {
|
go func() {
|
||||||
|
locker.Lock()
|
||||||
|
defer locker.Unlock()
|
||||||
if cx, ok := serviceWaiters[name]; ok {
|
if cx, ok := serviceWaiters[name]; ok {
|
||||||
for _, c := range cx {
|
for _, c := range cx {
|
||||||
c <- port
|
c <- port
|
||||||
@@ -419,6 +421,8 @@ func waitPort(name string) chan int {
|
|||||||
c := make(chan int, 0)
|
c := make(chan int, 0)
|
||||||
serviceWaiters[name] = append(serviceWaiters[name], c)
|
serviceWaiters[name] = append(serviceWaiters[name], c)
|
||||||
go func() {
|
go func() {
|
||||||
|
locker.Lock()
|
||||||
|
defer locker.Unlock()
|
||||||
if v, ok := servicesMap[name]; ok {
|
if v, ok := servicesMap[name]; ok {
|
||||||
c <- v
|
c <- v
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user