Merge pull request #32085 from aboch/bd

Do not panic on redundant UpdateAttachment
Upstream-commit: a1099010b097ad1090d6c50e626de7c49c113af2
Component: engine
This commit is contained in:
Sebastiaan van Stijn
2017-03-29 12:04:05 +02:00
committed by GitHub
2 changed files with 11 additions and 3 deletions
@@ -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{}
+10 -3
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
}