Hi, 
Any idea if this is fixed any later version of ignite?
If not I will raise a bug .
Regards 
Veena

Sent from my iPhone

> On 20 Jun 2022, at 09:19, Veena Mithare <veena.mith...@gmail.com> wrote:
> 
> 
> 
> Hi , 
> 
> This issue was observed again in our environment. We have a cluster of 20 
> client nodes +3 server nodes. 
> 
> Around 10 nodes listen issue a continuous query to listen to updates from the 
> same cache. If for some reason an exception is thrown while  sending the 
> cache update notification to one of the clients, the rest of the clients get 
> delayed updates .It looks  as if the process of sending notifications to 
> clients is in a synchronous loop.  
> 
> This was observed when the issue mentioned in here happened : 
> 
> https://lists.apache.org/thread/tzzksk2cm4dwhd84bcswgosvbvjv01nq
> 
> I can see the below code for continuous query manager which seems to send 
> notifications synchronously . 
> 
> Is there any ignite test case, which I can use to test/reproduce this? It 
> will be very difficult to produce a reproducer for a condition where a 
> discovery spi thinks a client as live, but communication spi isn’t able to 
> reach it.
> CacheContinuousQueryManager.java
>  
> ===================================
> public void onEntryUpdated(
>     Map<UUID, CacheContinuousQueryListener> lsnrCol,
>     KeyCacheObject key,
>     CacheObject newVal,
>     CacheObject oldVal,
>     boolean internal,
>     int partId,
>     boolean primary,
>     boolean preload,
>     long updateCntr,
>     @Nullable GridDhtAtomicAbstractUpdateFuture fut,
>     AffinityTopologyVersion topVer)
>     throws IgniteCheckedException
> {
>     assert key != null;
>     assert lsnrCol != null;
> 
>     boolean hasNewVal = newVal != null;
>     boolean hasOldVal = oldVal != null;
> 
>     if (!hasNewVal && !hasOldVal) {
>         skipUpdateEvent(lsnrCol, key, partId, updateCntr, primary, topVer);
> 
>         return;
>     }
> 
>     EventType evtType = !hasNewVal ? REMOVED : !hasOldVal ? CREATED : UPDATED;
> 
>     boolean initialized = false;
> 
>     boolean recordIgniteEvt = primary && !internal && 
> cctx.events().isRecordable(EVT_CACHE_QUERY_OBJECT_READ);
> 
>     for (CacheContinuousQueryListener lsnr : lsnrCol.values()) {
>         if (preload && !lsnr.notifyExisting() || lsnr.isPrimaryOnly() && 
> !primary)
>             continue;
> 
>         if (!initialized) {
>             if (lsnr.oldValueRequired()) {
>                 oldVal = (CacheObject)cctx.unwrapTemporary(oldVal);
> 
>                 if (oldVal != null)
>                     oldVal.finishUnmarshal(cctx.cacheObjectContext(), 
> cctx.deploy().globalLoader());
>             }
> 
>             if (newVal != null)
>                 newVal.finishUnmarshal(cctx.cacheObjectContext(), 
> cctx.deploy().globalLoader());
> 
>             initialized = true;
>         }
> 
>         CacheContinuousQueryEntry e0 = new CacheContinuousQueryEntry(
>             cctx.cacheId(),
>             evtType,
>             key,
>             (!internal && evtType == REMOVED && lsnr.oldValueRequired()) ? 
> oldVal : newVal,
>             lsnr.oldValueRequired() ? oldVal : null,
>             lsnr.keepBinary(),
>             partId,
>             updateCntr,
>             topVer,
>             (byte)0);
> 
>         IgniteCacheProxy jcache = 
> cctx.kernalContext().cache().jcacheProxy(cctx.name(), true);
> 
>         assert jcache != null : "Failed to get cache proxy [name=" + 
> cctx.name() +
>             ", locStart=" + cctx.startTopologyVersion() +
>             ", locNode=" + cctx.localNode() +
>             ", stopping=" + cctx.kernalContext().isStopping();
> 
>         CacheContinuousQueryEvent evt = new 
> CacheContinuousQueryEvent<>(jcache, cctx, e0);
> 
>         lsnr.onEntryUpdated(evt, primary, recordIgniteEvt, fut);
>     }
> }
>  
> 
> 
> regards,
> Veena.
> 
>> On Tue, Dec 14, 2021 at 2:11 PM Veena Mithare <v.mith...@cmcmarkets.com> 
>> wrote:
>>  
>> 
>> Hi Team,
>> 
>>  
>> 
>> Just following up on this .
>> 
>>  
>> 
>> My question is ,
>> 
>>  
>> 
>> If : There is an update on a cache and there are a few clients listening to 
>> the cache update changes - >
>> should notification failure to a few clients( because of network issues etc. 
>> experienced by the Communication SPI ), delay notification to the other 
>> clients interested.
>>  
>> 
>> If point b is true, wouldn’t that be a bug ..
>> 
>>  
>> 
>> Regards,
>> 
>> Veena.
>> 
>>  
>> 
>> From: Veena Mithare 
>> Sent: 10 December 2021 17:22
>> To: 'user@ignite.apache.org' <user@ignite.apache.org>
>> Subject: RE: Delay in receiving notifications 2.8.1
>> 
>>  
>> 
>> The delay seems to match the connection time outs we see in the logs :
>> 
>>  
>> 
>> x.log:2021-12-10T14:25:06,167 WARN  o.a.i.s.c.t.TcpCommunicationSpi 
>> [callback-#6346]: Connection timed out (will stop attempts to perform the 
>> connect) [node=c61379ba-0776-40cf-aa95-d40fb0d057dc, 
>> connTimeoutStgy=ExponentialBackoffTimeoutStrategy [maxTimeout=10000, 
>> totalTimeout=15000, startNanos=3732477449666384, currTimeout=10000], 
>> failureDetectionTimeoutEnabled=false, timeout=2776, err=null, 
>> addr=/fde1:53ba:e9a0:de11:f602:70ff:fef0:ecab%idrac:47103]
>> 
>> x.log:2021-12-10T14:25:21,182 WARN  o.a.i.s.c.t.TcpCommunicationSpi 
>> [callback-#6346]: Connection timed out (will stop attempts to perform the 
>> connect) [node=28ada9a9-f863-458c-aa4a-368d14f9d917, 
>> connTimeoutStgy=ExponentialBackoffTimeoutStrategy [maxTimeout=10000, 
>> totalTimeout=15000, startNanos=3732492463335720, currTimeout=10000], 
>> failureDetectionTimeoutEnabled=false, timeout=2510, err=null, 
>> addr=/fde1:53ba:e9a0:de11:f602:70ff:fef0:ecab%idrac:47100]
>> 
>>  
>> 
>> the configuration give is as below :
>> 
>> <property name="communicationSpi">
>>   <bean class="org.apache.ignite.spi.communication.tcp.TcpCommunicationSpi" 
>> scope="prototype">
>>     <property name="connectTimeout" value="5000"/>
>>     <property name="maxConnectTimeout" value="10000"/>
>>     <property name="localPort" value="${ignite.communicationSpiPort:47100}"/>
>>     <property name="localPortRange" value="20"/>
>> 
>>   </bean>
>> </property>
>> 
>>  
>> 
>>  
>> 
>> From: Veena Mithare 
>> Sent: 10 December 2021 17:16
>> To: user@ignite.apache.org
>> Subject: Delay in receiving notifications 2.8.1
>> 
>>  
>> 
>> Hi Team,
>> 
>>  
>> 
>> We have a 3 node cluster on 2.8.1 .  And we have around 30 clients and 
>> around 20 of them have continuous query registered against the same cache ( 
>> say CACHEA )
>> 
>>  
>> 
>> We faced the below scenario :
>> 
>>  
>> 
>> Cache A was updated .
>> A few clients( say 4 or 5 ) received the update with 1 or 2 seconds.
>> For about 2 or 3 clients, we can see that server times out connecting to 
>> them – ( this could be a valid timeout – because of network issues etc. )
>> A few more clients  received the update about 25 seconds later.
>>  
>> 
>> It looks like the point 3 above seems to have affected the clients in point 
>> 4. Request you to kindly clarify .
>> 
>>  
>> 
>> If not , what could be the reason for the delay for the clients in point 4.
>> 
>>  
>> 
>> Regards,
>> 
>> Veena.
>> 
>>  
>> 
>>  
>> 
>>  
>> 
>>  
>> 
>> 
>> 
>> Spread bets and CFDs are complex instruments and come with a high risk of 
>> losing money rapidly due to leverage. 66% of retail investor accounts lose 
>> money when spread betting and/or trading CFDs with this provider. You should 
>> consider whether you understand how spread bets and CFDs work and whether 
>> you can afford to take the high risk of losing your money. 
>> 
>> Professional clients: Losses can exceed deposits when spread betting and 
>> trading CFDs. Countdowns carry a level of risk to your capital as you could 
>> lose all of your investment. These products may not be suitable for all 
>> clients therefore ensure you understand the risks and seek independent 
>> advice. Invest only what you can afford to lose. 
>> 
>> CMC Markets UK plc (173730) and CMC Spreadbet plc (170627) are authorised 
>> and regulated by the Financial Conduct Authority in the United Kingdom. CMC 
>> Markets UK plc and CMC Spreadbet plc are registered in England and Wales 
>> with Company Numbers 02448409 and 02589529 and with their registered offices 
>> at 133 Houndsditch, London, EC3A 7BX. 
>> 
>> The content of this e-mail (including any attachments) is strictly 
>> confidential and is for the sole use of the intended addressee(s). If you 
>> are not the intended recipient of this e-mail please notify the sender 
>> immediately and delete this e-mail from your system. Any disclosure, 
>> copying, dissemination or use of its content (including any attachments) is 
>> strictly prohibited. CMC Markets UK plc and CMC Spreadbet plc reserve the 
>> right to intercept and monitor the content of the e-mail messages to and 
>> from its systems. 
>> 
>> E-mails may be interfered with or may contain viruses or other defects for 
>> which CMC Markets UK plc and CMC Spreadbet plc accept no responsibility. It 
>> is the responsibility of the recipient to carry out a virus check on the 
>> e-mail and any attachment(s). 
>> 
>> This communication is not intended as an offer or solicitation for the 
>> purchase or sale of a financial instrument or as an official confirmation of 
>> any transaction unless specifically presented as such.

Reply via email to