[
https://issues.apache.org/jira/browse/IGNITE-12662?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17035396#comment-17035396
]
Alexey Scherbakov commented on IGNITE-12662:
[~macrergate]
This ticket looks outdated.
Baseline topology is supported for in-memory and mixed configurations.
You can run attached test and see for yourself.
{noformat}
package org.apache.ignite.internal.processors.cache;
import org.apache.ignite.Ignite;
import org.apache.ignite.cache.affinity.rendezvous.RendezvousAffinityFunction;
import org.apache.ignite.cluster.ClusterState;
import org.apache.ignite.configuration.CacheConfiguration;
import org.apache.ignite.configuration.DataRegionConfiguration;
import org.apache.ignite.configuration.DataStorageConfiguration;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.internal.TestRecordingCommunicationSpi;
import
org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionDemandMessage;
import org.apache.ignite.internal.util.typedef.G;
import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
import org.junit.Test;
/** */
public class CacheNoRebalanceOnBaselineNodeLeftSupportTest extends
GridCommonAbstractTest {
/** */
private static final int REG_SIZE = 30 * 1024 * 1024;
/** */
private static final String PERSISTENT = "persistent";
/** */
private static final String VOLATILE = "volatile";
/** */
private boolean mixed;
/** {@inheritDoc} */
@Override protected IgniteConfiguration getConfiguration(String
igniteInstanceName) throws Exception {
IgniteConfiguration cfg = super.getConfiguration(igniteInstanceName);
cfg.setCommunicationSpi(new TestRecordingCommunicationSpi());
cfg.setClusterStateOnStart(ClusterState.INACTIVE);
if (mixed) {
DataRegionConfiguration drCfg1 = new DataRegionConfiguration();
drCfg1.setName(PERSISTENT);
drCfg1.setPersistenceEnabled(true);
drCfg1.setInitialSize(REG_SIZE);
drCfg1.setMaxSize(REG_SIZE);
DataRegionConfiguration drCfg2 = new DataRegionConfiguration();
drCfg2.setName(VOLATILE);
drCfg2.setInitialSize(REG_SIZE);
drCfg2.setMaxSize(REG_SIZE);
cfg.setDataStorageConfiguration(
new DataStorageConfiguration().
setWalSegmentSize(4 * 1024 * 1024).
setDataRegionConfigurations(drCfg2).
setDefaultDataRegionConfiguration(drCfg1));
cfg.setCacheConfiguration(
new
CacheConfiguration(PERSISTENT).setDataRegionName(PERSISTENT).setBackups(1),
new
CacheConfiguration(VOLATILE).setDataRegionName(VOLATILE).setBackups(1));
}
else {
DataRegionConfiguration drCfg2 = new DataRegionConfiguration();
drCfg2.setName(VOLATILE);
drCfg2.setInitialSize(REG_SIZE);
drCfg2.setMaxSize(REG_SIZE);
cfg.setDataStorageConfiguration(
new DataStorageConfiguration().
setWalSegmentSize(4 * 1024 * 1024).
setDefaultDataRegionConfiguration(drCfg2));
cfg.setCacheConfiguration(new
CacheConfiguration(VOLATILE).setDataRegionName(VOLATILE).setBackups(1));
}
return cfg;
}
/** {@inheritDoc} */
@Override protected void beforeTest() throws Exception {
super.beforeTest();
cleanPersistenceDir();
}
/** {@inheritDoc} */
@Override protected void afterTest() throws Exception {
super.afterTest();
cleanPersistenceDir();
}
/** */
@Test
public void testMixed() throws Exception {
mixed = true;
try {
Ignite crd = startGridsMultiThreaded(3);
crd.cluster().state(ClusterState.ACTIVE);
for (int k = 0; k <
RendezvousAffinityFunction.DFLT_PARTITION_COUNT; k++) {
crd.cache(PERSISTENT).put(k, k);
crd.cache(VOLATILE).put(k, k);
}
for (Ignite grid : G.allGrids())
TestRecordingCommunicationSpi.spi(grid).record(GridDhtPartitionDemandMessage.class);
stopGrid(1);
awaitPartitionMapExchange();
for (Ignite grid : G.allGrids())
assertTrue(TestRecordingCommunicationSpi.spi(grid).recordedMessages(true).isEmpty());
}
finally {
stopAllGrids();
}
}
/** */
@Test
public void testVolatile() throws Exception {
mixed = false;
try {
Ignite crd = startGridsMultiThreaded(3);
crd.cluster().baselineAutoAdjustEnabled(false);
crd.cluster().state(ClusterState.ACTIVE);
for (int k = 0; k <