bump(github.com/docker/spdystream):99515db39d3dad9607e0293f18152f3d59da76dc

Update spdystream to pick up a fix for a deadlock between writing data
and a connection closure.

Fixes #6490
This commit is contained in:
Andy Goldstein
2015-04-09 16:30:47 +00:00
parent 6ef0f8c3c5
commit 82afb7ab1f
2 changed files with 16 additions and 1 deletions

View File

@@ -89,10 +89,25 @@ Loop:
if timer != nil {
timer.Stop()
}
// Start a goroutine to drain resetChan. This is needed because we've seen
// some unit tests with large numbers of goroutines get into a situation
// where resetChan fills up, at least 1 call to Write() is still trying to
// send to resetChan, the connection gets closed, and this case statement
// attempts to grab the write lock that Write() already has, causing a
// deadlock.
//
// See https://github.com/docker/spdystream/issues/49 for more details.
go func() {
for _ = range resetChan {
}
}()
i.writeLock.Lock()
close(resetChan)
i.resetChan = nil
i.writeLock.Unlock()
break Loop
}
}