1
0
Fork 0
mirror of https://github.com/moby/moby.git synced 2022-11-09 12:21:53 -05:00

Merge pull request #32085 from aboch/bd

Do not panic on redundant UpdateAttachment
This commit is contained in:
Sebastiaan van Stijn 2017-03-29 12:04:05 +02:00 committed by GitHub
commit a1099010b0
2 changed files with 11 additions and 3 deletions

View file

@ -126,6 +126,7 @@ type Cluster struct {
type attacher struct {
taskID string
config *network.NetworkingConfig
inProgress bool
attachWaitCh chan *network.NetworkingConfig
attachCompleteCh chan struct{}
detachWaitCh chan struct{}

View file

@ -81,15 +81,22 @@ func attacherKey(target, containerID string) string {
// waiter who is trying to start or attach the container to the
// network.
func (c *Cluster) UpdateAttachment(target, containerID string, config *network.NetworkingConfig) error {
c.mu.RLock()
c.mu.Lock()
attacher, ok := c.attachers[attacherKey(target, containerID)]
c.mu.RUnlock()
if !ok || attacher == nil {
c.mu.Unlock()
return fmt.Errorf("could not find attacher for container %s to network %s", containerID, target)
}
if attacher.inProgress {
logrus.Debugf("Discarding redundant notice of resource allocation on network %s for task id %s", target, attacher.taskID)
c.mu.Unlock()
return nil
}
attacher.inProgress = true
c.mu.Unlock()
attacher.attachWaitCh <- config
close(attacher.attachWaitCh)
return nil
}