@Override public void run() { int count = runs.incrementAndGet(); try { defrag(false); if ((count%truncateInterval)==0) { truncate(false); } } catch (Throwable t) { LogManager.logWarning(LogConstants.CTX_BUFFER_MGR, t, QueryPlugin.Util.gs(QueryPlugin.Event.TEIID30022)); } finally { defragRunning.set(false); } }
@Test public void testDefragTruncateEmpty() throws Exception { cache = createLayeredCache(1<<15, 1<<15, true); cache.setMinDefrag(10000000); Serializer<Integer> s = new SimpleSerializer(); WeakReference<? extends Serializer<?>> ref = new WeakReference<Serializer<?>>(s); cache.createCacheGroup(s.getId()); Integer cacheObject = Integer.valueOf(5000); for (int i = 0; i < 4; i++) { CacheEntry ce = new CacheEntry((long)i); ce.setSerializer(ref); ce.setObject(cacheObject); cache.addToCacheGroup(s.getId(), ce.getId()); cache.add(ce, s); } assertEquals(98304, cache.getDiskUsage()); for (int i = 0; i < 4; i++) { cache.remove(1l, (long)i); } assertEquals(98304, cache.getDiskUsage()); cache.setMinDefrag(0); cache.defragTask.run(); assertEquals(98304, cache.getDiskUsage()); cache.setTruncateInterval(1); cache.defragTask.run(); assertEquals(0, cache.getDiskUsage()); }
@Test public void testDefragTruncateCompact() throws Exception { cache = createLayeredCache(1<<15, 1<<15, true); cache.setCompactBufferFiles(true); cache.setTruncateInterval(1); cache.setMinDefrag(10000000); Serializer<Integer> s = new SimpleSerializer(); WeakReference<? extends Serializer<?>> ref = new WeakReference<Serializer<?>>(s); cache.createCacheGroup(s.getId()); Integer cacheObject = Integer.valueOf(5000); for (int i = 0; i < 30; i++) { CacheEntry ce = new CacheEntry((long)i); ce.setSerializer(ref); ce.setObject(cacheObject); cache.addToCacheGroup(s.getId(), ce.getId()); cache.add(ce, s); } assertEquals(950272, cache.getDiskUsage()); for (int i = 0; i < 25; i++) { cache.remove(1l, (long)i); } assertEquals(950272, cache.getDiskUsage()); cache.setMinDefrag(0); cache.setTruncateInterval(1); cache.defragTask.run(); assertEquals(131072, cache.getDiskUsage()); cache.defragTask.run(); //we've reached a stable size assertEquals(131072, cache.getDiskUsage()); }
private long truncate(boolean anySpace) { anySpace |= compactBufferFiles; long freed = 0; for (int i = 0; i < sizeBasedStores.length; i++) { BlockStore blockStore = sizeBasedStores[i]; for (int segment = 0; segment < blockStore.stores.length; segment++) { freed += truncate(blockStore, segment, anySpace); } } if (LogManager.isMessageToBeRecorded(LogConstants.CTX_BUFFER_MGR, MessageLevel.DETAIL)) { LogManager.logDetail(LogConstants.CTX_BUFFER_MGR, "Finished truncate reclaimed", freed); //$NON-NLS-1$ } return freed; }
private long truncate(boolean anySpace) { anySpace |= compactBufferFiles; long freed = 0; for (int i = 0; i < sizeBasedStores.length; i++) { BlockStore blockStore = sizeBasedStores[i]; for (int segment = 0; segment < blockStore.stores.length; segment++) { freed += truncate(blockStore, segment, anySpace); } } if (LogManager.isMessageToBeRecorded(LogConstants.CTX_BUFFER_MGR, MessageLevel.DETAIL)) { LogManager.logDetail(LogConstants.CTX_BUFFER_MGR, "Finished truncate reclaimed", freed); //$NON-NLS-1$ } return freed; }
@Override public void run() { int count = runs.incrementAndGet(); try { defrag(false); if ((count%truncateInterval)==0) { truncate(false); } } catch (Throwable t) { LogManager.logWarning(LogConstants.CTX_BUFFER_MGR, t, QueryPlugin.Util.gs(QueryPlugin.Event.TEIID30022)); } finally { defragRunning.set(false); } }
@Override public void run() { int count = runs.incrementAndGet(); try { defrag(false); if ((count%truncateInterval)==0) { truncate(false); } } catch (Throwable t) { LogManager.logWarning(LogConstants.CTX_BUFFER_MGR, t, QueryPlugin.Util.gs(QueryPlugin.Event.TEIID30022)); } finally { defragRunning.set(false); } }
private long truncate(boolean anySpace) { anySpace |= compactBufferFiles; long freed = 0; for (int i = 0; i < sizeBasedStores.length; i++) { BlockStore blockStore = sizeBasedStores[i]; for (int segment = 0; segment < blockStore.stores.length; segment++) { freed += truncate(blockStore, segment, anySpace); } } if (LogManager.isMessageToBeRecorded(LogConstants.CTX_BUFFER_MGR, MessageLevel.DETAIL)) { LogManager.logDetail(LogConstants.CTX_BUFFER_MGR, "Finished truncate reclaimed", freed); //$NON-NLS-1$ } return freed; }