@Override public MaxSizeConfig getMaxSizeConfig() { final MaxSizeConfig maxSizeConfig = super.getMaxSizeConfig(); if (maxSizeConfig == null) { return null; } return maxSizeConfig.getAsReadOnly(); }
@Override public MaxSizeConfig getMaxSizeConfig() { final MaxSizeConfig maxSizeConfig = super.getMaxSizeConfig(); if (maxSizeConfig == null) { return null; } return maxSizeConfig.getAsReadOnly(); }
@Nullable @Override public Integer currentMaxEntries() { int maxSize = getConfig().getMaxSizeConfig().getSize(); return maxSize > 0 ? maxSize : null; }
@Verify(global = false) public void verify() throws Exception { try{ MaxSizeConfig maxSizeConfig = targetInstance.getConfig().getMapConfig(basename).getMaxSizeConfig(); IMap map = targetInstance.getMap(basename); System.out.println(maxSizeConfig); System.out.println(basename+": Map size = "+map.size()); }catch(UnsupportedOperationException e){} }
void cleanup() { final int maxSize; final long timeToLive; if (config != null) { maxSize = config.getMaxSizeConfig().getSize(); timeToLive = config.getTimeToLiveSeconds() * SEC_TO_MS; } else { maxSize = MAX_SIZE; timeToLive = CacheEnvironment.getDefaultCacheTimeoutInMillis(); } boolean limitSize = maxSize > 0 && maxSize != Integer.MAX_VALUE; if (limitSize || timeToLive > 0) { List<EvictionEntry> entries = searchEvictableEntries(timeToLive, limitSize); final int diff = cache.size() - maxSize; final int evictionRate = calculateEvictionRate(diff, maxSize); if (evictionRate > 0 && entries != null) { evictEntries(entries, evictionRate); } } }
void cleanup() { final int maxSize; final long timeToLive; if (config != null) { maxSize = config.getMaxSizeConfig().getSize(); timeToLive = config.getTimeToLiveSeconds() * SEC_TO_MS; } else { maxSize = MAX_SIZE; timeToLive = CacheEnvironment.getDefaultCacheTimeoutInMillis(); } boolean limitSize = maxSize > 0 && maxSize != Integer.MAX_VALUE; if (limitSize || timeToLive > 0) { List<EvictionEntry> entries = searchEvictableEntries(timeToLive, limitSize); final int diff = cache.size() - maxSize; final int evictionRate = calculateEvictionRate(diff, maxSize); if (evictionRate > 0 && entries != null) { evictEntries(entries, evictionRate); } } }
void cleanup() { final int maxSize; final long timeToLive; if (config != null) { maxSize = config.getMaxSizeConfig().getSize(); timeToLive = config.getTimeToLiveSeconds() * SEC_TO_MS; } else { maxSize = MAX_SIZE; timeToLive = CacheEnvironment.getDefaultCacheTimeoutInMillis(); } boolean limitSize = maxSize > 0 && maxSize != Integer.MAX_VALUE; if (limitSize || timeToLive > 0) { List<EvictionEntry> entries = searchEvictableEntries(timeToLive, limitSize); final int diff = cache.size() - maxSize; final int evictionRate = calculateEvictionRate(diff, maxSize); if (evictionRate > 0 && entries != null) { evictEntries(entries, evictionRate); } } }
void cleanup() { final int maxSize; final long timeToLive; if (config != null) { maxSize = config.getMaxSizeConfig().getSize(); timeToLive = config.getTimeToLiveSeconds() * SEC_TO_MS; } else { maxSize = MAX_SIZE; timeToLive = CacheEnvironment.getDefaultCacheTimeoutInMillis(); } boolean limitSize = maxSize > 0 && maxSize != Integer.MAX_VALUE; if (limitSize || timeToLive > 0) { List<EvictionEntry> entries = searchEvictableEntries(timeToLive, limitSize); final int diff = cache.size() - maxSize; final int evictionRate = calculateEvictionRate(diff, maxSize); if (evictionRate > 0 && entries != null) { evictEntries(entries, evictionRate); } } }
/** * Calculates and returns the expected maximum size of an evicted record-store * when {@link com.hazelcast.config.MaxSizeConfig.MaxSizePolicy#PER_NODE PER_NODE} max-size-policy is used. */ public double translatePerNodeSizeToPartitionSize(RecordStore recordStore) { MapConfig mapConfig = recordStore.getMapContainer().getMapConfig(); MaxSizeConfig maxSizeConfig = mapConfig.getMaxSizeConfig(); NodeEngine nodeEngine = mapServiceContext.getNodeEngine(); int configuredMaxSize = maxSizeConfig.getSize(); int memberCount = nodeEngine.getClusterService().getSize(DATA_MEMBER_SELECTOR); int partitionCount = nodeEngine.getPartitionService().getPartitionCount(); double translatedPartitionSize = (1D * configuredMaxSize * memberCount / partitionCount); if (translatedPartitionSize < 1) { translatedPartitionSize = MIN_TRANSLATED_PARTITION_SIZE; if (misconfiguredPerNodeMaxSizeWarningLogged.compareAndSet(false, true)) { int minMaxSize = (int) Math.ceil((1D * partitionCount / memberCount)); int newSize = MIN_TRANSLATED_PARTITION_SIZE * partitionCount / memberCount; logger.warning(format("The max size configuration for map \"%s\" does not allow any data in the map. " + "Given the current cluster size of %d members with %d partitions, max size should be at " + "least %d. Map size is forced set to %d for backward compatibility", mapConfig.getName(), memberCount, partitionCount, minMaxSize, newSize)); } } return translatedPartitionSize; }
public boolean checkEvictable(RecordStore recordStore) { if (recordStore.size() == 0) { return false; } String mapName = recordStore.getName(); MapContainer mapContainer = recordStore.getMapContainer(); MaxSizeConfig maxSizeConfig = mapContainer.getMapConfig().getMaxSizeConfig(); MaxSizeConfig.MaxSizePolicy maxSizePolicy = maxSizeConfig.getMaxSizePolicy(); switch (maxSizePolicy) { case PER_NODE: return checkPerNodeEviction(recordStore); case PER_PARTITION: int partitionId = recordStore.getPartitionId(); return checkPerPartitionEviction(mapName, maxSizeConfig, partitionId); case USED_HEAP_PERCENTAGE: return checkHeapPercentageEviction(mapName, maxSizeConfig); case USED_HEAP_SIZE: return checkHeapSizeEviction(mapName, maxSizeConfig); case FREE_HEAP_PERCENTAGE: return checkFreeHeapPercentageEviction(maxSizeConfig); case FREE_HEAP_SIZE: return checkFreeHeapSizeEviction(maxSizeConfig); default: throw new IllegalArgumentException("Not an appropriate max size policy [" + maxSizePolicy + ']'); } }
@Setup public void setUp() { map = targetInstance.getMap(name); operationCounterList = targetInstance.getList(name + "OperationCounter"); mapOperationSelectorBuilder .addOperation(MapOperation.PUT, putProb) .addOperation(MapOperation.GET, getProb) .addOperation(MapOperation.CHECK_SIZE, checkProb); mapPutOperationSelectorBuilder .addOperation(MapPutOperation.PUT_ASYNC, putUsingAsyncProb) .addDefaultOperation(MapPutOperation.PUT_SYNC); if (isMemberNode(targetInstance)) { MaxSizeConfig maxSizeConfig = targetInstance.getConfig().getMapConfig(name).getMaxSizeConfig(); maxSizePerNode = maxSizeConfig.getSize(); assertEqualsStringFormat("Expected MaxSizePolicy %s, but was %s", PER_NODE, maxSizeConfig.getMaxSizePolicy()); assertTrue("Expected MaxSizePolicy.getSize() < Integer.MAX_VALUE", maxSizePerNode < Integer.MAX_VALUE); logger.info("MapSizeConfig of " + name + ": " + maxSizeConfig); } }
@Setup public void setUp() { map = targetInstance.getMap(name); operationCounterList = targetInstance.getList(name + "OperationCounter"); mapOperationSelectorBuilder .addOperation(MapOperation.PUT, putProb) .addOperation(MapOperation.GET, getProb) .addOperation(MapOperation.CHECK_SIZE, checkProb); mapPutOperationSelectorBuilder .addOperation(MapPutOperation.PUT_ASYNC, putUsingAsyncProb) .addDefaultOperation(MapPutOperation.PUT_SYNC); if (isMemberNode(targetInstance)) { MaxSizeConfig maxSizeConfig = targetInstance.getConfig().getMapConfig(name).getMaxSizeConfig(); maxSizePerNode = maxSizeConfig.getSize(); assertEqualsStringFormat("Expected MaxSizePolicy %s, but was %s", PER_NODE, maxSizeConfig.getMaxSizePolicy()); assertTrue("Expected MaxSizePolicy.getSize() < Integer.MAX_VALUE", maxSizePerNode < Integer.MAX_VALUE); logger.info("MapSizeConfig of " + name + ": " + maxSizeConfig); } }
@Override public void writeData(ObjectDataOutput out) throws IOException { out.writeUTF(config.getName()); out.writeUTF(config.getInMemoryFormat().toString()); out.writeInt(config.getBackupCount()); out.writeInt(config.getAsyncBackupCount()); out.writeInt(config.getEvictionPercentage()); out.writeLong(config.getMinEvictionCheckMillis()); out.writeInt(config.getTimeToLiveSeconds()); out.writeInt(config.getMaxIdleSeconds()); out.writeInt(config.getMaxSizeConfig().getSize()); out.writeUTF(config.getMaxSizeConfig().getMaxSizePolicy().toString()); out.writeBoolean(config.isReadBackupData()); out.writeUTF(config.getEvictionPolicy().name()); out.writeUTF(config.getMergePolicy()); }
@Override public void writeData(ObjectDataOutput out) throws IOException { out.writeUTF(config.getName()); out.writeUTF(config.getInMemoryFormat().toString()); out.writeInt(config.getBackupCount()); out.writeInt(config.getAsyncBackupCount()); out.writeInt(config.getEvictionPercentage()); out.writeLong(config.getMinEvictionCheckMillis()); out.writeInt(config.getTimeToLiveSeconds()); out.writeInt(config.getMaxIdleSeconds()); out.writeInt(config.getMaxSizeConfig().getSize()); out.writeUTF(config.getMaxSizeConfig().getMaxSizePolicy().toString()); out.writeBoolean(config.isReadBackupData()); out.writeUTF(config.getEvictionPolicy().name()); out.writeUTF(config.getMergePolicy()); }
public JsonObject toJson() { JsonObject root = new JsonObject(); root.add("name", config.getName()); root.add("memoryFormat", config.getInMemoryFormat().toString()); root.add("backupCount", config.getBackupCount()); root.add("asyncBackupCount", config.getAsyncBackupCount()); root.add("evictionPercentage", config.getEvictionPercentage()); root.add("minEvictionCheckMillis", config.getMinEvictionCheckMillis()); root.add("ttl", config.getTimeToLiveSeconds()); root.add("maxIdle", config.getMaxIdleSeconds()); root.add("maxSize", config.getMaxSizeConfig().getSize()); root.add("maxSizePolicy", config.getMaxSizeConfig().getMaxSizePolicy().toString()); root.add("readBackupData", config.isReadBackupData()); root.add("evictionPolicy", config.getEvictionPolicy().name()); root.add("mergePolicy", config.getMergePolicy()); return root; }
public JsonObject toJson() { JsonObject root = new JsonObject(); root.add("name", config.getName()); root.add("memoryFormat", config.getInMemoryFormat().toString()); root.add("backupCount", config.getBackupCount()); root.add("asyncBackupCount", config.getAsyncBackupCount()); root.add("evictionPercentage", config.getEvictionPercentage()); root.add("minEvictionCheckMillis", config.getMinEvictionCheckMillis()); root.add("ttl", config.getTimeToLiveSeconds()); root.add("maxIdle", config.getMaxIdleSeconds()); root.add("maxSize", config.getMaxSizeConfig().getSize()); root.add("maxSizePolicy", config.getMaxSizeConfig().getMaxSizePolicy().toString()); root.add("readBackupData", config.isReadBackupData()); root.add("evictionPolicy", config.getEvictionPolicy().name()); root.add("mergePolicy", config.getMergePolicy()); return root; }
private RecordStore createRecordStore(String name) { MapServiceContext serviceContext = mapService.getMapServiceContext(); MapContainer mapContainer = serviceContext.getMapContainer(name); MapConfig mapConfig = mapContainer.getMapConfig(); NodeEngine nodeEngine = serviceContext.getNodeEngine(); IPartitionService ps = nodeEngine.getPartitionService(); OperationService opService = nodeEngine.getOperationService(); ExecutionService execService = nodeEngine.getExecutionService(); HazelcastProperties hazelcastProperties = nodeEngine.getProperties(); MapKeyLoader keyLoader = new MapKeyLoader(name, opService, ps, nodeEngine.getClusterService(), execService, mapContainer.toData()); keyLoader.setMaxBatch(hazelcastProperties.getInteger(GroupProperty.MAP_LOAD_CHUNK_SIZE)); keyLoader.setMaxSize(getMaxSizePerNode(mapConfig.getMaxSizeConfig())); keyLoader.setHasBackup(mapConfig.getTotalBackupCount() > 0); keyLoader.setMapOperationProvider(serviceContext.getMapOperationProvider(name)); if (!mapContainer.isGlobalIndexEnabled()) { Indexes indexesForMap = mapContainer.createIndexes(false); indexes.putIfAbsent(name, indexesForMap); } RecordStore recordStore = serviceContext.createRecordStore(mapContainer, partitionId, keyLoader); recordStore.init(); return recordStore; }
private RecordStore createRecordStore(String name) { MapServiceContext serviceContext = mapService.getMapServiceContext(); MapContainer mapContainer = serviceContext.getMapContainer(name); MapConfig mapConfig = mapContainer.getMapConfig(); NodeEngine nodeEngine = serviceContext.getNodeEngine(); IPartitionService ps = nodeEngine.getPartitionService(); OperationService opService = nodeEngine.getOperationService(); ExecutionService execService = nodeEngine.getExecutionService(); HazelcastProperties hazelcastProperties = nodeEngine.getProperties(); MapKeyLoader keyLoader = new MapKeyLoader(name, opService, ps, nodeEngine.getClusterService(), execService, mapContainer.toData()); keyLoader.setMaxBatch(hazelcastProperties.getInteger(GroupProperty.MAP_LOAD_CHUNK_SIZE)); keyLoader.setMaxSize(getMaxSizePerNode(mapConfig.getMaxSizeConfig())); keyLoader.setHasBackup(mapConfig.getTotalBackupCount() > 0); keyLoader.setMapOperationProvider(serviceContext.getMapOperationProvider(name)); if (!mapContainer.isGlobalIndexEnabled()) { Indexes indexesForMap = mapContainer.createIndexes(false); indexes.putIfAbsent(name, indexesForMap); } RecordStore recordStore = serviceContext.createRecordStore(mapContainer, partitionId, keyLoader); recordStore.init(); return recordStore; }
@Override public void run() throws Exception { MapService service = getService(); MapConfig oldConfig = service.getMapServiceContext().getMapContainer(mapName).getMapConfig(); MapConfig newConfig = new MapConfig(oldConfig); newConfig.setTimeToLiveSeconds(mapConfig.getTimeToLiveSeconds()); newConfig.setMaxIdleSeconds(mapConfig.getMaxIdleSeconds()); newConfig.setEvictionPolicy(mapConfig.getEvictionPolicy()); newConfig.setEvictionPercentage(mapConfig.getEvictionPercentage()); newConfig.setMinEvictionCheckMillis(mapConfig.getMinEvictionCheckMillis()); newConfig.setReadBackupData(mapConfig.isReadBackupData()); newConfig.setMaxSizeConfig(mapConfig.getMaxSizeConfig()); MapContainer mapContainer = service.getMapServiceContext().getMapContainer(mapName); mapContainer.setMapConfig(newConfig.getAsReadOnly()); mapContainer.initEvictor(); }
@Override public void run() throws Exception { MapService service = getService(); MapConfig oldConfig = service.getMapServiceContext().getMapContainer(mapName).getMapConfig(); MapConfig newConfig = new MapConfig(oldConfig); newConfig.setTimeToLiveSeconds(mapConfig.getTimeToLiveSeconds()); newConfig.setMaxIdleSeconds(mapConfig.getMaxIdleSeconds()); newConfig.setEvictionPolicy(mapConfig.getEvictionPolicy()); newConfig.setEvictionPercentage(mapConfig.getEvictionPercentage()); newConfig.setMinEvictionCheckMillis(mapConfig.getMinEvictionCheckMillis()); newConfig.setReadBackupData(mapConfig.isReadBackupData()); newConfig.setBackupCount(mapConfig.getBackupCount()); newConfig.setAsyncBackupCount(mapConfig.getAsyncBackupCount()); newConfig.setMaxSizeConfig(mapConfig.getMaxSizeConfig()); MapContainer mapContainer = service.getMapServiceContext().getMapContainer(mapName); mapContainer.setMapConfig(newConfig.getAsReadOnly()); mapContainer.initEvictor(); }