[ 
https://issues.apache.org/jira/browse/IGNITE-12662?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=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 < 
RendezvousAffinityFunction.DFLT_PARTITION_COUNT; 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();
        }
    }
}
{noformat}

> Get rid of CacheConfiguration#getRebalanceDelay and related functionality.
> --------------------------------------------------------------------------
>
>                 Key: IGNITE-12662
>                 URL: https://issues.apache.org/jira/browse/IGNITE-12662
>             Project: Ignite
>          Issue Type: Improvement
>            Reporter: Alexey Scherbakov
>            Priority: Major
>             Fix For: 2.9
>
>
> We have for a long time this property to mitigate a case with premature 
> rebalancing on node restart.
> Currently this is handled by baseline topology.
> I suggest to deprecate and remove related functionality in next releases.
> For example org.apache.ignite.IgniteCache#rebalance is no longer needed as 
> well.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to