@Test(expectedExceptions = NullPointerException.class) public void writer_null() { Caffeine.newBuilder().writer(null); }
@Test(expectedExceptions = IllegalStateException.class) public void async_writer() { Caffeine.newBuilder().writer(writer).buildAsync(loader); }
@Test(expectedExceptions = IllegalStateException.class) public void weakKeys_writer() { Caffeine.newBuilder().writer(writer).weakKeys(); }
@Test(expectedExceptions = IllegalStateException.class) public void writer_weakKeys() { Caffeine.newBuilder().writer(writer).weakKeys(); }
@Test public void writer() { Caffeine<?, ?> builder = Caffeine.newBuilder().writer(writer); assertThat(builder.getCacheWriter(), is(writer)); builder.build(); } }
@Test public void rescheduleDrainBuffers() { AtomicBoolean evicting = new AtomicBoolean(); AtomicBoolean done = new AtomicBoolean(); CacheWriter<Integer, Integer> writer = new CacheWriter<Integer, Integer>() { @Override public void write(Integer key, Integer value) {} @Override public void delete(Integer key, Integer value, RemovalCause cause) { evicting.set(true); await().untilTrue(done); } }; BoundedLocalCache<Integer, Integer> map = asBoundedLocalCache( Caffeine.newBuilder().writer(writer).maximumSize(0L).build()); map.put(1, 1); await().untilTrue(evicting); map.put(2, 2); assertThat(map.drainStatus, is(PROCESSING_TO_REQUIRED)); done.set(true); await().until(() -> map.drainStatus, is(IDLE)); }
.executor(Runnable::run) .maximumSize(100) .writer(writer) .build(); cache.put(key, oldValue);
.executor(Runnable::run) .maximumSize(100) .writer(writer) .build(); BoundedLocalCache<Integer, Integer> localCache = asBoundedLocalCache(cache);
/** Creates a configured cache. */ public CacheProxy<K, V> build() { boolean evicts = false; evicts |= configureMaximumSize(); evicts |= configureMaximumWeight(); evicts |= configureExpireAfterWrite(); evicts |= configureExpireAfterAccess(); evicts |= configureExpireVariably(); JCacheEvictionListener<K, V> evictionListener = null; if (evicts) { evictionListener = new JCacheEvictionListener<>(dispatcher, statistics); caffeine.writer(evictionListener); } CacheProxy<K, V> cache; if (isReadThrough()) { configureRefreshAfterWrite(); cache = newLoadingCacheProxy(); } else { cache = newCacheProxy(); } if (evictionListener != null) { evictionListener.setCache(cache); } return cache; }
builder.writer((CacheWriter<Object, Object>) writer);
.expireAfterAccess(profileTimeToLiveMillis, TimeUnit.MILLISECONDS) .ticker(ticker) .writer(new ActiveCacheWriter()); if (LOG.isDebugEnabled()) { activeCacheBuilder.recordStats(); .expireAfterWrite(profileTimeToLiveMillis, TimeUnit.MILLISECONDS) .ticker(ticker) .writer(new ExpiredCacheWriter()); if (LOG.isDebugEnabled()) { expiredCacheBuilder.recordStats();
builder.writer(context.cacheWriter());
builder.writer((CacheWriter<Object, Object>) writer);
.maximumSize(cacheSize) .ticker(ticker == null ? Ticker.systemTicker() : ticker) .writer(new CacheWriter<HistogramKey, AgentDigest>() { @Override public void write(@Nonnull HistogramKey key, @Nonnull AgentDigest value) {
.maximumSize(cacheSize) .ticker(ticker == null ? Ticker.systemTicker() : ticker) .writer(new CacheWriter<HistogramKey, AgentDigest>() { @Override public void write(@Nonnull HistogramKey key, @Nonnull AgentDigest value) {
return Caffeine.newBuilder() .recordStats() .writer(new CacheWriter<String, Object>() { @Override public synchronized void write(@Nonnull String key, @Nonnull Object value) {
/** Creates a configured cache. */ public CacheProxy<K, V> build() { boolean evicts = false; evicts |= configureMaximumSize(); evicts |= configureMaximumWeight(); evicts |= configureExpireAfterWrite(); evicts |= configureExpireAfterAccess(); evicts |= configureExpireVariably(); JCacheEvictionListener<K, V> evictionListener = null; if (evicts) { evictionListener = new JCacheEvictionListener<>(dispatcher, statistics); caffeine.writer(evictionListener); } CacheProxy<K, V> cache; if (isReadThrough()) { configureRefreshAfterWrite(); cache = newLoadingCacheProxy(); } else { cache = newCacheProxy(); } if (evictionListener != null) { evictionListener.setCache(cache); } return cache; }
/** * Returns a new LogUnitServer. * @param serverContext context object providing settings and objects */ public LogUnitServer(ServerContext serverContext) { this.serverContext = serverContext; this.config = LogUnitServerConfig.parse(serverContext.getServerConfig()); if (config.isMemoryMode()) { log.warn("Log unit opened in-memory mode (Maximum size={}). " + "This should be run for testing purposes only. " + "If you exceed the maximum size of the unit, old entries will be " + "AUTOMATICALLY trimmed. " + "The unit WILL LOSE ALL DATA if it exits.", Utils .convertToByteStringRepresentation(config.getMaxCacheSize())); streamLog = new InMemoryStreamLog(); } else { streamLog = new StreamLogFiles(serverContext, config.isNoVerify()); } batchWriter = new BatchWriter<>(streamLog, serverContext.getServerEpoch(), !config.isNoSync()); dataCache = Caffeine.newBuilder() .<Long, ILogData>weigher((k, v) -> ((LogData) v).getData() == null ? 1 : ((LogData) v).getData().length) .maximumWeight(config.getMaxCacheSize()) .removalListener(this::handleEviction) .writer(batchWriter) .build(this::handleRetrieval); logCleaner = new StreamLogCompaction(streamLog, 10, 45, TimeUnit.MINUTES, ServerContext.SHUTDOWN_TIMER); }