From 44acdcbc604386a41ded59202edc663b8cbb18ba Mon Sep 17 00:00:00 2001 From: Steve Kriss Date: Fri, 12 Apr 2019 13:42:16 -0600 Subject: [PATCH] repo ensurer: fix channel lifecycles Signed-off-by: Steve Kriss --- pkg/restic/repository_ensurer.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pkg/restic/repository_ensurer.go b/pkg/restic/repository_ensurer.go index 759185a75..5277d8cab 100644 --- a/pkg/restic/repository_ensurer.go +++ b/pkg/restic/repository_ensurer.go @@ -90,7 +90,6 @@ func newRepositoryEnsurer(repoInformer velerov1informers.ResticRepositoryInforme } repoChan <- newObj - delete(r.repoChans, key) }, }, ) @@ -164,8 +163,11 @@ func (r *repositoryEnsurer) EnsureRepo(ctx context.Context, namespace, volumeNam }, } - repoChan := r.getrepoChan(selector.String()) - defer close(repoChan) + repoChan := r.getRepoChan(selector.String()) + defer func() { + delete(r.repoChans, selector.String()) + close(repoChan) + }() if _, err := r.repoClient.ResticRepositories(namespace).Create(repo); err != nil { return nil, errors.Wrapf(err, "unable to create restic repository resource") @@ -187,7 +189,7 @@ func (r *repositoryEnsurer) EnsureRepo(ctx context.Context, namespace, volumeNam } } -func (r *repositoryEnsurer) getrepoChan(name string) chan *velerov1api.ResticRepository { +func (r *repositoryEnsurer) getRepoChan(name string) chan *velerov1api.ResticRepository { r.repoChansLock.Lock() defer r.repoChansLock.Unlock()