Merge pull request #33377 from yastij/33371-matchevent-filtering

matching events using ID and name
This commit is contained in:
Vincent Demeester 2017-07-10 16:11:14 +02:00 committed by GitHub
commit e56e78976e
1 changed files with 6 additions and 15 deletions

View File

@ -28,11 +28,10 @@ const defaultGossipConvergeDelay = 2 * time.Second
// Most operations against docker's API are done through the container name,
// which is unique to the task.
type controller struct {
task *api.Task
adapter *containerAdapter
closed chan struct{}
err error
task *api.Task
adapter *containerAdapter
closed chan struct{}
err error
pulled chan struct{} // closed after pull
cancelPull func() // cancels pull context if not nil
pullErr error // pull error, only read after pulled closed
@ -146,7 +145,6 @@ func (r *controller) Prepare(ctx context.Context) error {
}
}
}
if err := r.adapter.create(ctx); err != nil {
if isContainerCreateNameConflict(err) {
if _, err := r.adapter.inspect(ctx); err != nil {
@ -564,15 +562,8 @@ func (r *controller) matchevent(event events.Message) bool {
if event.Type != events.ContainerEventType {
return false
}
// TODO(stevvooe): Filter based on ID matching, in addition to name.
// Make sure the events are for this container.
if event.Actor.Attributes["name"] != r.adapter.container.name() {
return false
}
return true
// we can't filter using id since it will have huge chances to introduce a deadlock. see #33377.
return event.Actor.Attributes["name"] == r.adapter.container.name()
}
func (r *controller) checkClosed() error {