Locking/unlocking the queueMutex is allowed, but not required, for
Cond.Signal() and Cond.Broadcast(). The magic at play here is just a little
too much for golangci-lint, as we take the address of queueMutex and this is
mostly used in archiver.go; the variable still gets flagged as unused.
numQueued = len(archiveInProgress)
// Release one, then wait up to 3 seconds for it to complete.
+ queueMutex.Lock()
archiveQueueReleaseCond.Signal()
+ queueMutex.Unlock()
timeout := time.Now().Add(3 * time.Second)
for {
nowQueued = len(archiveInProgress)
// Release them all, they'll then stall at the archiveQueueReleaseCond while
// we examine the queue state.
+ queueMutex.Lock()
archiveQueueStartCond.Broadcast()
+ queueMutex.Unlock()
// 8 second timeout for them all to complete.
timeout := time.Now().Add(8 * time.Second)