@Override protected boolean swapAndClearCache(String namespaceKey, String cacheKey) { final Lock lock = nsLocks.get(namespaceKey); lock.lock(); try { Preconditions.checkArgument( mmapDB.exists(cacheKey), "Namespace [%s] does not exist", cacheKey); final String swapCacheKey = UUID.randomUUID().toString(); mmapDB.rename(cacheKey, swapCacheKey); final String priorCache = currentNamespaceCache.put(namespaceKey, swapCacheKey); if (priorCache != null) { // TODO: resolve what happens here if query is actively going on mmapDB.delete(priorCache); dataSize.set(tmpFile.length()); return true; } else { dataSize.set(tmpFile.length()); return false; } } finally { lock.unlock(); } }
public long getQuotaUsage(String username) { if (!db.exists(username)) db.createAtomicLong(username, 0); return db.getAtomicLong(username).get(); }