Just to mention we do have @IgniteAsyncCallback annotation on our remote filter 
and local listener.We use Continuous query with transformer. Will raise a bug

Sent from my iPhone

> On 23 Jun 2022, at 08:35, Veena Mithare <veena.mith...@gmail.com> wrote:
> 
> 
> Hi , 
> 
> Can someone kindly help me know if this is a known issue .
> 
> Regards,
> Veena.
> 
>> On Wed, Jun 22, 2022 at 9:12 AM <veena.mith...@gmail.com> wrote:
>> 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