You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@ignite.apache.org by "Pavel Pereslegin (Jira)" <ji...@apache.org> on 2021/01/23 18:47:00 UTC

[jira] [Created] (IGNITE-14044) Cache with node filter is not destroyed properly on the filtered node.

Pavel Pereslegin created IGNITE-14044:
-----------------------------------------

             Summary: Cache with node filter is not destroyed properly on the filtered node.
                 Key: IGNITE-14044
                 URL: https://issues.apache.org/jira/browse/IGNITE-14044
             Project: Ignite
          Issue Type: Bug
            Reporter: Pavel Pereslegin


Steps to reproduce the problem:
 # Start 2 nodes
 # Create a cache with node filter (filter second node)
 # Destroy cache
 # Restart nodes

Expected: cache was destroyed on both nodes.
 Actual: cache was destroyed only on one node, the second node cannot join the cluster with the following error:
{noformat}
Caused by: class org.apache.ignite.spi.IgniteSpiException: Joining node has caches with data which are not presented on cluster, it could mean that they were already destroyed, to add the node to cluster - remove directories with the caches[cache1]
	at org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi.checkFailedError(TcpDiscoverySpi.java:2052)
	at org.apache.ignite.spi.discovery.tcp.ServerImpl.joinTopology(ServerImpl.java:1197)
	at org.apache.ignite.spi.discovery.tcp.ServerImpl.spiStart(ServerImpl.java:472)
	at org.apache.ignite.spi.discovery.tcp.TcpDiscoverySpi.spiStart(TcpDiscoverySpi.java:2154)
	at org.apache.ignite.internal.managers.GridManagerAdapter.startSpi(GridManagerAdapter.java:278)
	... 23 more
{noformat}
Reproducer
{code:java}
public class IgnitePdsDestroyCacheWithNodeFilterTest extends GridCommonAbstractTest {
    @Override protected IgniteConfiguration getConfiguration(String igniteInstanceName) throws Exception {
        return super.getConfiguration(igniteInstanceName)
            .setConsistentId(igniteInstanceName)
            .setDataStorageConfiguration(new DataStorageConfiguration()
            .setDefaultDataRegionConfiguration(new DataRegionConfiguration()
                .setPersistenceEnabled(true)));
    }

    @Test
    public void testDestroyCacheWithNodeFilter() throws Exception {
        cleanPersistenceDir();

        Ignite ignite = startGrids(2);

        ignite.cluster().state(ClusterState.ACTIVE);

        UUID nodeId0 = ignite.cluster().localNode().id();

        CacheConfiguration<Object, Object> cfg1 = new CacheConfiguration<>("cache1")
            .setCacheMode(CacheMode.REPLICATED)
            .setNodeFilter(n -> nodeId0.equals(n.id()));

        IgniteCache<?, ?> cache1 = ignite.createCache(cfg1);

        cache1.destroy();

        forceCheckpoint();

        awaitPartitionMapExchange();

        stopAllGrids();

        ignite = startGrids(2); // failing here

        ignite.cluster().state(ClusterState.ACTIVE);
    }
}
{code}



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