public void shutdownCacheManager() { for(Bucket bucket : buckets.values()) { bucket.closeBucket(); } buckets.clear(); }
@Override public void writeRecord(UUIDKey documentId, ClonableDataStream dataStream) throws JasDBStorageException { wrappedWriter.writeRecord(documentId, dataStream); String cachingKey = storeName + "_" + documentId.toString(); if(bucket.containsItem(cachingKey)) { bucket.remove(cachingKey); } }
@Override public RecordResult readRecord(UUIDKey documentId) throws JasDBStorageException { String cachingKey = storeName + "_" + documentId.toString(); if(!bucket.containsItem(cachingKey)) { return readRecordFromStore(cachingKey, documentId); } else { log.debug("Cache hit for record: {} key: {}", documentId, cachingKey); CachableRecord cachedRecord = (CachableRecord) bucket.getItem(cachingKey); if(cachedRecord != null) { return cachedRecord.getResult(); } else { return readRecordFromStore(cachingKey, documentId); } } }
@Override public void removeRecord(UUIDKey documentId) throws JasDBStorageException { wrappedWriter.removeRecord(documentId); String cachingKey = storeName + "_" + documentId.toString(); bucket.remove(cachingKey); }
private RecordResult readRecordFromStore(String cachingKey, UUIDKey key) throws JasDBStorageException { log.debug("Cache miss for record: {}", key); RecordResult result = wrappedWriter.readRecord(key); if(!result.isRecordFound()) { bucket.put(cachingKey, new CachableRecord(result)); } return result; }
private Bucket createOrGetBucket(String bucketName) throws CoreConfigException { if(!buckets.containsKey(bucketName)) { CacheConfig usedConfig = null; if(bucketConfigs.containsKey(bucketName)) { usedConfig = bucketConfigs.get(bucketName); } else { usedConfig = defaultConfig; } Bucket bucket; if(usedConfig.isEnabled()) { bucket = new CacheBucket(bucketName); } else { bucket = new DummyBucket(); } bucket.configure(usedConfig); buckets.put(bucketName, bucket); return bucket; } else { return buckets.get(bucketName); } } }
@Override public void updateRecord(UUIDKey documentId, ClonableDataStream dataStream) throws JasDBStorageException { wrappedWriter.updateRecord(documentId, dataStream); String cachingKey = storeName + "_" + documentId.toString(); bucket.remove(cachingKey); } }