manager/dedup.go
func (d *DedupManager) setLeader(tmpl *template.Template, lockCh <-chan struct{}) {
	// Update the lock state
	d.leaderLock.Lock()
	if lockCh != nil {
		d.leader[tmpl] = lockCh
	} else {
		delete(d.leader, tmpl)
	}
	d.leaderLock.Unlock()

	// Clear the lastWrite hash if we've lost leadership
	if lockCh == nil {
		d.lastWriteLock.Lock()
		delete(d.lastWrite, tmpl)
		d.lastWriteLock.Unlock()
	}

	// Do an async notify of an update
	select {
	case d.updateCh <- struct{}{}:
	default:
	}
}
func (d *DedupManager) setLeader(tmpl *template.Template, lockCh <-chan struct{}) {
	// Update the lock state
	d.leaderLock.Lock()
	if lockCh != nil {
		d.leader[tmpl] = lockCh
	} else {
		delete(d.leader, tmpl)
	}
	d.leaderLock.Unlock()

	// Clear the lastWrite hash if we've lost leadership
	if lockCh == nil {
		d.lastWriteLock.Lock()
		delete(d.lastWrite, tmpl)
		d.lastWriteLock.Unlock()
	}

	// Do an async notify of an update
	select {
	case d.updateCh <- struct{}{}:
	default:
	}
}
func ( d * DedupManager ) setLeader ( tmpl * template . Template , lockCh <- chan struct { } ) { // Update the lock state d . leaderLock . Lock ( ) if lockCh != nil { d . leader [ tmpl ] = lockCh } else { delete ( d . leader , tmpl ) } d . leaderLock . Unlock ( ) // Clear the lastWrite hash if we've lost leadership if lockCh == nil { d . lastWriteLock . Lock ( ) delete ( d . lastWrite , tmpl ) d . lastWriteLock . Unlock ( ) } // Do an async notify of an update select { case d . updateCh <- struct { } { } : default : } }
// setLeader sets if we are currently the leader instance
setLeader sets if we are currently the leader instance