/** * Constructor. * * @param cache Cache to be cleared. * @param obsoleteVer Obsolete version. * @param dhtJob Linked DHT job. */ public GridNearCacheClearAllRunnable(GridCacheAdapter<K, V> cache, GridCacheVersion obsoleteVer, GridCacheClearAllRunnable<K, V> dhtJob) { super(cache, obsoleteVer, dhtJob.id(), dhtJob.totalCount(), dhtJob.readers()); this.dhtJob = dhtJob; }
/** {@inheritDoc} */ @Override public void run() { for (GridCacheEntryEx gridCacheEntryEx : cache.entries()) clearEntry(gridCacheEntryEx); if (!ctx.isNear()) { if (id == 0) ctx.offheap().clearCache(ctx, readers); } }
/** * Split clearLocally all task into multiple runnables. * * @param srv Whether to clear server cache. * @param near Whether to clear near cache. * @param readers Whether to clear readers. * @return Split runnables. */ public List<GridCacheClearAllRunnable<K, V>> splitClearLocally(boolean srv, boolean near, boolean readers) { if ((isNear() && near) || (!isNear() && srv)) { int keySize = size(); int cnt = Math.min(keySize / CLEAR_ALL_SPLIT_THRESHOLD + (keySize % CLEAR_ALL_SPLIT_THRESHOLD != 0 ? 1 : 0), Runtime.getRuntime().availableProcessors()); if (cnt == 0) cnt = 1; // Still perform cleanup since there could be entries in swap. GridCacheVersion obsoleteVer = ctx.versions().next(); List<GridCacheClearAllRunnable<K, V>> res = new ArrayList<>(cnt); for (int i = 0; i < cnt; i++) res.add(new GridCacheClearAllRunnable<>(this, obsoleteVer, i, cnt, readers)); return res; } else return null; }
/** {@inheritDoc} */ @Override public void run() { for (GridCacheEntryEx gridCacheEntryEx : cache.entries()) clearEntry(gridCacheEntryEx); if (!ctx.isNear()) { if (id == 0) ctx.offheap().clearCache(ctx, readers); } }
/** * Split clearLocally all task into multiple runnables. * * @param srv Whether to clear server cache. * @param near Whether to clear near cache. * @param readers Whether to clear readers. * @return Split runnables. */ public List<GridCacheClearAllRunnable<K, V>> splitClearLocally(boolean srv, boolean near, boolean readers) { if ((isNear() && near) || (!isNear() && srv)) { int keySize = size(); int cnt = Math.min(keySize / CLEAR_ALL_SPLIT_THRESHOLD + (keySize % CLEAR_ALL_SPLIT_THRESHOLD != 0 ? 1 : 0), Runtime.getRuntime().availableProcessors()); if (cnt == 0) cnt = 1; // Still perform cleanup since there could be entries in swap. GridCacheVersion obsoleteVer = ctx.versions().next(); List<GridCacheClearAllRunnable<K, V>> res = new ArrayList<>(cnt); for (int i = 0; i < cnt; i++) res.add(new GridCacheClearAllRunnable<>(this, obsoleteVer, i, cnt, readers)); return res; } else return null; }
/** * Constructor. * * @param cache Cache to be cleared. * @param obsoleteVer Obsolete version. * @param dhtJob Linked DHT job. */ public GridNearCacheClearAllRunnable(GridCacheAdapter<K, V> cache, GridCacheVersion obsoleteVer, GridCacheClearAllRunnable<K, V> dhtJob) { super(cache, obsoleteVer, dhtJob.id(), dhtJob.totalCount(), dhtJob.readers()); this.dhtJob = dhtJob; }
jobs.get(0).run();
jobs.get(0).run();