/** * @param mode Eviction mode. * @param configuration Configuration. * @return Configuration with given eviction mode set. */ static IgniteConfiguration setEvictionMode(DataPageEvictionMode mode, IgniteConfiguration configuration) { DataRegionConfiguration[] policies = configuration.getDataStorageConfiguration().getDataRegionConfigurations(); if (policies != null) { for (DataRegionConfiguration plcCfg : policies) plcCfg.setPageEvictionMode(mode); } configuration.getDataStorageConfiguration().getDefaultDataRegionConfiguration().setPageEvictionMode(mode); return configuration; }
/** */ public DataStorageConfiguration getDataStorageConfiguration() { DataStorageConfiguration memCfg = new DataStorageConfiguration(); DataRegionConfiguration plc = new DataRegionConfiguration(); plc.setName("Default_Region"); plc.setPageEvictionMode(RANDOM_LRU); if (isSmallRegion) plc.setMaxSize(128L * 1024 * 1024); // 128 MB else plc.setMaxSize(1L * 1024 * 1024 * 1024); // 1GB memCfg.setDefaultDataRegionConfiguration(plc); memCfg.setWalMode(LOG_ONLY); return memCfg; }
/** {@inheritDoc} */ @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception { IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName) .setDataStorageConfiguration(new DataStorageConfiguration() .setDefaultDataRegionConfiguration(new DataRegionConfiguration() .setPersistenceEnabled(persistenceEnabled) .setMaxSize(SIZE) .setInitialSize(SIZE) .setPageEvictionMode(persistenceEnabled ? DataPageEvictionMode.DISABLED : DataPageEvictionMode.RANDOM_LRU) .setName(DATA_REGION_NAME))); return cfg; }
/** * Verifies that {@link IgniteCheckedException} is thrown when empty pages pool size is less than 10 */ @Test public void testInvalidSmallEmptyPagesPoolSize() { final int SMALL_PAGES_POOL_SIZE = 5; DataRegionConfiguration invCfg = new DataRegionConfiguration(); invCfg.setName("invCfg"); invCfg.setInitialSize(DFLT_MEM_PLC_SIZE); invCfg.setMaxSize(DFLT_MEM_PLC_SIZE); invCfg.setPageEvictionMode(DataPageEvictionMode.RANDOM_LRU); // Setting the pages pool size less than 10 invCfg.setEmptyPagesPoolSize(SMALL_PAGES_POOL_SIZE); memCfg = new DataStorageConfiguration(); memCfg.setDataRegionConfigurations(invCfg); ccfg = new CacheConfiguration(DEFAULT_CACHE_NAME); checkStartGridException(IgniteCheckedException.class, "Failed to start processor: GridProcessorAdapter []"); }
/** * @return DB config. */ private DataStorageConfiguration createDbConfig() { final DataStorageConfiguration memCfg = new DataStorageConfiguration(); DataRegionConfiguration memPlcCfg = new DataRegionConfiguration(); memPlcCfg.setInitialSize(MEMORY_LIMIT); memPlcCfg.setMaxSize(MEMORY_LIMIT); memPlcCfg.setPageEvictionMode(DataPageEvictionMode.RANDOM_LRU); memPlcCfg.setName("dfltDataRegion"); memPlcCfg.setPersistenceEnabled(true); memCfg.setPageSize(PAGE_SIZE); memCfg.setConcurrencyLevel(NUMBER_OF_SEGMENTS); memCfg.setDefaultDataRegionConfiguration(memPlcCfg); memCfg.setWalMode(WALMode.LOG_ONLY); return memCfg; }
/** * Verifies that {@link IgniteCheckedException} is thrown when IgniteCheckedException if validation of * memory metrics properties fails. Metrics sub interval count must be positive. */ @Test public void testInvalidSubIntervalCount() { final int NEG_SUB_INTERVAL_COUNT = -1000; DataRegionConfiguration invCfg = new DataRegionConfiguration(); invCfg.setName("invCfg"); invCfg.setInitialSize(DFLT_MEM_PLC_SIZE); invCfg.setMaxSize(DFLT_MEM_PLC_SIZE); invCfg.setPageEvictionMode(DataPageEvictionMode.RANDOM_LRU); // Setting the metrics sub interval count as negative invCfg.setMetricsSubIntervalCount(NEG_SUB_INTERVAL_COUNT); memCfg = new DataStorageConfiguration(); memCfg.setDataRegionConfigurations(invCfg); ccfg = new CacheConfiguration(DEFAULT_CACHE_NAME); checkStartGridException(IgniteCheckedException.class, "Failed to start processor: GridProcessorAdapter []"); } }
/** * Verifies that {@link IgniteCheckedException} is thrown when page eviction threshold is less than 0.5. */ @Test public void testSetSmallInvalidEviction() { final double SMALL_EVICTION_THRESHOLD = 0.1D; DataRegionConfiguration invCfg = new DataRegionConfiguration(); invCfg.setName("invCfg"); invCfg.setInitialSize(DFLT_MEM_PLC_SIZE); invCfg.setMaxSize(DFLT_MEM_PLC_SIZE); invCfg.setPageEvictionMode(DataPageEvictionMode.RANDOM_LRU); // Setting the page eviction threshold less than 0.5 invCfg.setEvictionThreshold(SMALL_EVICTION_THRESHOLD); memCfg = new DataStorageConfiguration(); memCfg.setDataRegionConfigurations(invCfg); ccfg = new CacheConfiguration(DEFAULT_CACHE_NAME); checkStartGridException(IgniteCheckedException.class, "Failed to start processor: GridProcessorAdapter []"); }
/** * Verifies that {@link IgniteCheckedException} is thrown when page eviction threshold is greater than 0.999. */ @Test public void testSetBigInvalidEviction() { final double BIG_EVICTION_THRESHOLD = 1.0D; DataRegionConfiguration invCfg = new DataRegionConfiguration(); invCfg.setName("invCfg"); invCfg.setInitialSize(DFLT_MEM_PLC_SIZE); invCfg.setMaxSize(DFLT_MEM_PLC_SIZE); invCfg.setPageEvictionMode(DataPageEvictionMode.RANDOM_LRU); // Setting the page eviction threshold greater than 0.999 invCfg.setEvictionThreshold(BIG_EVICTION_THRESHOLD); memCfg = new DataStorageConfiguration(); memCfg.setDataRegionConfigurations(invCfg); ccfg = new CacheConfiguration(DEFAULT_CACHE_NAME); checkStartGridException(IgniteCheckedException.class, "Failed to start processor: GridProcessorAdapter []"); }
/** * Verifies that {@link IgniteCheckedException} is thrown when IgniteCheckedException if validation of * memory metrics properties fails. Metrics rate time interval must not be less than 1000ms. */ @Test public void testInvalidMetricsProperties() { final long SMALL_RATE_TIME_INTERVAL_MS = 999; DataRegionConfiguration invCfg = new DataRegionConfiguration(); invCfg.setName("invCfg"); invCfg.setInitialSize(DFLT_MEM_PLC_SIZE); invCfg.setMaxSize(DFLT_MEM_PLC_SIZE); invCfg.setPageEvictionMode(DataPageEvictionMode.RANDOM_LRU); // Setting the metrics rate time less then 1000ms invCfg.setMetricsRateTimeInterval(SMALL_RATE_TIME_INTERVAL_MS); memCfg = new DataStorageConfiguration(); memCfg.setDataRegionConfigurations(invCfg); ccfg = new CacheConfiguration(DEFAULT_CACHE_NAME); checkStartGridException(IgniteCheckedException.class, "Failed to start processor: GridProcessorAdapter []"); }
region.setMaxSize(mpc.getMaxSize()); region.setName(mpc.getName()); region.setPageEvictionMode(mpc.getPageEvictionMode()); region.setMetricsRateTimeInterval(mpc.getRateTimeInterval()); region.setMetricsSubIntervalCount(mpc.getSubIntervals());
/** * Reads the data region configuration. * * @param r Reader. */ private static DataRegionConfiguration readDataRegionConfiguration(BinaryRawReader r) { assert r != null; return new DataRegionConfiguration() .setName(r.readString()) .setPersistenceEnabled(r.readBoolean()) .setInitialSize(r.readLong()) .setMaxSize(r.readLong()) .setSwapPath(r.readString()) .setPageEvictionMode(DataPageEvictionMode.fromOrdinal(r.readInt())) .setEvictionThreshold(r.readDouble()) .setEmptyPagesPoolSize(r.readInt()) .setMetricsEnabled(r.readBoolean()) .setMetricsSubIntervalCount(r.readInt()) .setMetricsRateTimeInterval(r.readLong()) .setCheckpointPageBufferSize(r.readLong()); }
/** * @throws Exception If failed. */ @Test public void testMvccInMemoryEvictionDisabled() throws Exception { final String memRegName = "in-memory-evictions"; // Enable in-memory eviction. DataRegionConfiguration regionCfg = new DataRegionConfiguration(); regionCfg.setPersistenceEnabled(false); regionCfg.setPageEvictionMode(RANDOM_2_LRU); regionCfg.setName(memRegName); DataStorageConfiguration storageCfg = new DataStorageConfiguration(); storageCfg.setDefaultDataRegionConfiguration(regionCfg); IgniteConfiguration cfg = getConfiguration("testGrid"); cfg.setDataStorageConfiguration(storageCfg); Ignite node = startGrid(cfg); CacheConfiguration ccfg1 = new CacheConfiguration("test1") .setAtomicityMode(TRANSACTIONAL_SNAPSHOT) .setDataRegionName(memRegName); try { node.createCache(ccfg1); fail("In memory evictions should be disabled for MVCC caches."); } catch (Exception e) { assertTrue(X.getFullStackTrace(e).contains("Data pages evictions cannot be used with TRANSACTIONAL_SNAPSHOT")); } }
/** * Verifies that {@link IgniteCheckedException} is thrown when empty pages pool size is greater than * DataRegionConfiguration.getMaxSize() / DataStorageConfiguration.getPageSize() / 10. */ @Test public void testInvalidBigEmptyPagesPoolSize() { final int DFLT_PAGE_SIZE = 1024; long expectedMaxPoolSize; DataRegionConfiguration invCfg = new DataRegionConfiguration(); invCfg.setName("invCfg"); invCfg.setInitialSize(DFLT_MEM_PLC_SIZE); invCfg.setMaxSize(DFLT_MEM_PLC_SIZE); invCfg.setPageEvictionMode(DataPageEvictionMode.RANDOM_LRU); memCfg = new DataStorageConfiguration(); memCfg.setDataRegionConfigurations(invCfg); memCfg.setPageSize(DFLT_PAGE_SIZE); ccfg = new CacheConfiguration(DEFAULT_CACHE_NAME); expectedMaxPoolSize = invCfg.getMaxSize() / memCfg.getPageSize() / 10; if (expectedMaxPoolSize < Integer.MAX_VALUE) { // Setting the empty pages pool size greater than // DataRegionConfiguration.getMaxSize() / DataStorageConfiguration.getPageSize() / 10 invCfg.setEmptyPagesPoolSize((int)expectedMaxPoolSize + 1); memCfg.setDataRegionConfigurations(invCfg); checkStartGridException(IgniteCheckedException.class, "Failed to start processor: GridProcessorAdapter []"); } }
DataRegionConfiguration regionCfg = new DataRegionConfiguration(); regionCfg.setPersistenceEnabled(true); regionCfg.setPageEvictionMode(RANDOM_LRU); storageCfg.setDefaultDataRegionConfiguration(regionCfg); IgniteConfiguration cfg = getConfiguration("testGrid");
region.setMaxSize(mpc.getMaxSize()); region.setName(mpc.getName()); region.setPageEvictionMode(mpc.getPageEvictionMode()); region.setMetricsRateTimeInterval(mpc.getRateTimeInterval()); region.setMetricsSubIntervalCount(mpc.getSubIntervals());
/** * Reads the data region configuration. * * @param r Reader. */ private static DataRegionConfiguration readDataRegionConfiguration(BinaryRawReader r) { assert r != null; return new DataRegionConfiguration() .setName(r.readString()) .setPersistenceEnabled(r.readBoolean()) .setInitialSize(r.readLong()) .setMaxSize(r.readLong()) .setSwapPath(r.readString()) .setPageEvictionMode(DataPageEvictionMode.fromOrdinal(r.readInt())) .setEvictionThreshold(r.readDouble()) .setEmptyPagesPoolSize(r.readInt()) .setMetricsEnabled(r.readBoolean()) .setMetricsSubIntervalCount(r.readInt()) .setMetricsRateTimeInterval(r.readLong()) .setCheckpointPageBufferSize(r.readLong()); }