func (ls *Libstore) checkWhetherLeaseNeeded(args *storageproto.GetArgs, key string) { if ls.flags == ALWAYS_LEASE { args.WantLease = true args.LeaseClient = ls.cacheCallbackHostPort } else if ls.cacheCallbackHostPort == "" { args.WantLease = false } else { ls.requestsLocker.Lock() if ls.requests[key] == nil { lsplog.Vlogf(3, "[checkWhetherLeaseNeeded] First requested") req := &Request{1, time.Now().Add(time.Duration(storageproto.QUERY_CACHE_SECONDS) * time.Second)} ls.requests[key] = req } else { req := ls.requests[key] if time.Now().Before(req.ts) { req.frequency = req.frequency + 1 if req.frequency >= storageproto.QUERY_CACHE_THRESH { lsplog.Vlogf(3, "[checkWhetherLeaseNeeded] Going to ask for a lease") args.LeaseClient = ls.cacheCallbackHostPort args.WantLease = true } else { args.WantLease = false } } else { delete(ls.requests, key) args.WantLease = false } } ls.requestsLocker.Unlock() } }