func()

in middleware/dblock/lock.go [48:70]


func (l Lock) refresher(duration time.Duration, cancelFunc context.CancelFunc) {
	for {
		select {
		case <-time.After(duration):
			deadline := time.Now().Add(duration)
			contextDeadline, deadlineCancelFunc := context.WithDeadline(context.Background(), deadline)

			// try refresh, else cancel
			err := l.conn.PingContext(contextDeadline)
			if err != nil {
				cancelFunc()
				deadlineCancelFunc()
				// this will make sure connection is closed
				l.Release()
				return
			}
			deadlineCancelFunc() // to avoid context leak
		case <-l.unlocker:
			cancelFunc()
			return
		}
	}
}