func (kv *etcdKV) refreshLock(kvPair *kvdb.KVPair) { l := kvPair.Lock.(*etcdLock) ttl := kvPair.TTL refresh := time.NewTicker(ec.DefaultLockRefreshDuration) var keyString string if kvPair != nil { keyString = kvPair.Key } defer refresh.Stop() for { select { case <-refresh.C: l.Lock() for !l.unlocked { kvPair.TTL = ttl kvp, err := kv.CompareAndSet( kvPair, kvdb.KVTTL|kvdb.KVModifiedIndex, kvPair.Value, ) if err != nil { kv.FatalCb( "Error refreshing lock for key %v: %v\n", keyString, err, ) l.err = err l.Unlock() return } kvPair.ModifiedIndex = kvp.ModifiedIndex break } l.Unlock() case <-l.done: return } } }
func (kv *MemKV) normalize(kvp *kvdb.KVPair) { kvp.Key = strings.TrimPrefix(kvp.Key, kv.domain) }