From c3f069c9fcf8298854065eede56fdd523a626eaf Mon Sep 17 00:00:00 2001 From: Anthony Romano Date: Mon, 15 Aug 2016 14:38:03 -0700 Subject: [PATCH] wait: make WaitTime robust against deadline collisions --- pkg/wait/wait_time.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/pkg/wait/wait_time.go b/pkg/wait/wait_time.go index 0357d81f3..49dff46dc 100644 --- a/pkg/wait/wait_time.go +++ b/pkg/wait/wait_time.go @@ -43,8 +43,16 @@ func (tl *timeList) Wait(deadline time.Time) <-chan struct{} { tl.l.Lock() defer tl.l.Unlock() ch := make(chan struct{}, 1) - // The given deadline SHOULD be unique. - tl.m[deadline.UnixNano()] = ch + // The given deadline SHOULD be unique but CI manages to get + // the same nano time in the unit tests. + nano := deadline.UnixNano() + for { + if tl.m[nano] == nil { + tl.m[nano] = ch + break + } + nano++ + } return ch }