[ 
https://issues.apache.org/jira/browse/IGNITE-8640?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16588870#comment-16588870
 ] 

Vladimir Ozerov edited comment on IGNITE-8640 at 8/22/18 1:55 PM:
------------------------------------------------------------------

[~NIzhikov], [~garus.d.g], 

Igniters,

Please also pay attention to IGNITE-9347. This might be complete duplicate, but 
I am not sure whether this ticket covers described situation as well. I see at 
least two problems:
 # In my case exchange worker fails due to assertion, not due to unhandled 
exception from {{GridCacheProcessor#validate}}, as IGNITE-1094 appears to 
already handle this error.
 # I think it makes sense to additionally validate cache configuration 
{{before}} it is sent through custom discovery message. This way, 99% 
validation problems will be handled without involving exchange worker at all. 
Probably the same {{GridCacheProcessor#validate}} method may be used here. The 
only thing that concerns me is instantiation of cache store inside this method. 
Need to understand whether it is legal or not (I think it is ok).


was (Author: vozerov):
[~NIzhikov], [~garus.d.g], 

Igniters,

Please also pay attention to IGNITE-9347. This might be complete duplicate, but 
I am not sure whether this ticket covers described situation as well. I see at 
least two problems:
 # In my case exchange worker fails due to assertion, not due to unhandled 
exception from \{{GridCacheProcessor#validate}}, as IGNITE-1094 appears to 
already handle this error.
 # I think it makes to additionally validate cache configuration \{{before}} it 
is sent through custom discovery message. This way, 99% validation problems 
will be handled without involving exchange worker at all. Probably the same 
\{{GridCacheProcessor#validate}} method may be used here. The only thing that 
concerns me is instantiation of cache store inside this method. Need to 
understand whether it is legal or not (I think it is ok).

> If first createCache fail - Ignite is freezing on next createCache
> ------------------------------------------------------------------
>
>                 Key: IGNITE-8640
>                 URL: https://issues.apache.org/jira/browse/IGNITE-8640
>             Project: Ignite
>          Issue Type: Bug
>          Components: cache
>    Affects Versions: 2.6
>            Reporter: Nikolay Izhikov
>            Assignee: Denis Garus
>            Priority: Critical
>             Fix For: 2.7
>
>
> If first {{createCache}} operation fails on some condition inside 
> {{GridCacheProcessor#validate}} then second {{createCache}} will freeze 
> forever.
> Reproducer:
> {code:java}
> package org.apache.ignite.internal.processors.cache;
> import org.apache.ignite.IgniteCache;
> import org.apache.ignite.IgniteCheckedException;
> import org.apache.ignite.cache.eviction.fifo.FifoEvictionPolicy;
> import org.apache.ignite.configuration.CacheConfiguration;
> import org.apache.ignite.internal.IgniteEx;
> import org.apache.ignite.testframework.GridTestUtils;
> import org.apache.ignite.testframework.junits.common.GridCommonAbstractTest;
> public class CreateCacheFreezeTest extends GridCommonAbstractTest {
>     public void testCreateEncryptedNotPersistedCacheFail() throws Exception {
>         IgniteEx ignite = startGrid(0);
>         
>         GridTestUtils.assertThrowsWithCause(() -> {
>             CacheConfiguration<Long, String> cc = new 
> CacheConfiguration<>("failed");
>             cc.setEvictionPolicy(new FifoEvictionPolicy());
>             cc.setOnheapCacheEnabled(false);
>             ignite.createCache(cc);
>             return 0;
>         }, IgniteCheckedException.class);
>         IgniteCache<Long, String> cache = ignite.createCache(new 
> CacheConfiguration<>("default"));
>         assertNotNull(cache);
>     }
> }
> {code}
> Log message:
> {noformat}
> [2018-05-29 
> 16:38:11,958][ERROR][exchange-worker-#38%cache.CreateCacheFreezeTest0%][GridDhtPartitionsExchangeFuture]
>  Failed to reinitialize local partitions (preloading will be stopped): 
> GridDhtPartitionExchangeId [topVer=AffinityTopologyVersion [topVer=1, 
> minorTopVer=1], discoEvt=DiscoveryCustomEvent 
> [customMsg=DynamicCacheChangeBatch 
> [id=67cce1ca361-993dd9c2-f4fe-443b-af43-27e06424e1b0, 
> reqs=[DynamicCacheChangeRequest [cacheName=failed, hasCfg=true, 
> nodeId=a525b74c-aec5-4c62-855a-ff96ef300000, clientStartOnly=false, 
> stop=false, destroy=false, disabledAfterStartfalse]], 
> exchangeActions=ExchangeActions [startCaches=[failed], stopCaches=null, 
> startGrps=[failed], stopGrps=[], resetParts=null, stateChangeRequest=null], 
> startCaches=false], affTopVer=AffinityTopologyVersion [topVer=1, 
> minorTopVer=1], super=DiscoveryEvent [evtNode=TcpDiscoveryNode 
> [id=a525b74c-aec5-4c62-855a-ff96ef300000, addrs=[127.0.0.1], 
> sockAddrs=[/127.0.0.1:47500], discPort=47500, order=1, intOrder=1, 
> lastExchangeTime=1527601090538, loc=true, ver=2.5.0#19700101-sha1:00000000, 
> isClient=false], topVer=1, nodeId8=a525b74c, msg=null, 
> type=DISCOVERY_CUSTOM_EVT, tstamp=1527601091938]], nodeId=a525b74c, 
> evt=DISCOVERY_CUSTOM_EVT]
> java.lang.AssertionError: stopping=false, groupName=null, caches=[]
>       at 
> org.apache.ignite.internal.processors.cache.CacheGroupContext.singleCacheContext(CacheGroupContext.java:375)
>       at 
> org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtLocalPartition.<init>(GridDhtLocalPartition.java:197)
>       at 
> org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtPartitionTopologyImpl.getOrCreatePartition(GridDhtPartitionTopologyImpl.java:828)
>       at 
> org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtPartitionTopologyImpl.initPartitions(GridDhtPartitionTopologyImpl.java:369)
>       at 
> org.apache.ignite.internal.processors.cache.distributed.dht.GridDhtPartitionTopologyImpl.beforeExchange(GridDhtPartitionTopologyImpl.java:544)
>       at 
> org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.distributedExchange(GridDhtPartitionsExchangeFuture.java:1190)
>       at 
> org.apache.ignite.internal.processors.cache.distributed.dht.preloader.GridDhtPartitionsExchangeFuture.init(GridDhtPartitionsExchangeFuture.java:722)
>       at 
> org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$ExchangeWorker.body0(GridCachePartitionExchangeManager.java:2452)
>       at 
> org.apache.ignite.internal.processors.cache.GridCachePartitionExchangeManager$ExchangeWorker.body(GridCachePartitionExchangeManager.java:2332)
>       at 
> org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:110)
>       at java.lang.Thread.run(Thread.java:748)
> {noformat}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to