[ https://issues.apache.org/jira/browse/IGNITE-8712?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16504544#comment-16504544 ]
Pavel Pereslegin edited comment on IGNITE-8712 at 6/7/18 11:24 AM: ------------------------------------------------------------------- Data structures store information about their state (meta information) in the metacache (cache key is the name of datastructure instance). When accessing data structure, a separate instance (*one per node*) is created and cached in the local datastructures Map. When data structure method close() is invoked the item is removed from the metacache and continuous query listener uses to nofify all nodes in the cluster to remove associated local instance from local datastruŃtures Map. The problem occurs if the listener is notified asynchronously and the transaction (that initiated update event) ends earlier. The listener on the *non-affinity node* is notified *synchronously* only if {{sync}} flag of CacheContinuousQueryHandler is set to true, but for now this flag is always set to false (except JCacheQuery). I updated signature of method executeInternalQuery() in CacheContinuousQueryManager to change the value of this flag. was (Author: xtern): Data structures store information about their state (meta information) in the metacache (cache-key is the name of the instance of the data structure). When accessing data structure, a separate instance (*one per node*) is created and cached in the local datastructures Map. When data structure method close() is invoked the item is removed from the metacache and continuous query listener uses to nofify all nodes in the cluster to remove associated local instance from local datastruŃtures Map. The problem occurs if the listener is notified asynchronously and the transaction (that initiated update event) ends earlier. The listener on the *non-affinity node* is notified *synchronously* only if {{sync}} flag of CacheContinuousQueryHandler is set to true, but for now this flag is always set to false (except JCacheQuery). I updated signature of method executeInternalQuery() in CacheContinuousQueryManager to change the value of this flag. > IgniteDataStructureUniqueNameTest#testUniqueNameMultithreaded fails sometimes > in master. > ---------------------------------------------------------------------------------------- > > Key: IGNITE-8712 > URL: https://issues.apache.org/jira/browse/IGNITE-8712 > Project: Ignite > Issue Type: Bug > Components: data structures > Affects Versions: 2.5 > Reporter: Pavel Pereslegin > Assignee: Pavel Pereslegin > Priority: Minor > Labels: MakeTeamcityGreenAgain > > https://ci.ignite.apache.org/project.html?projectId=IgniteTests24Java8&buildTypeId=&tab=testDetails&testNameId=5920780021361517364&order=TEST_STATUS_DESC&branch_IgniteTests24Java8=%3Cdefault%3E&itemsCount=10 > Typical output: > {noformat} > junit.framework.AssertionFailedError: expected:<class > org.apache.ignite.internal.processors.datastructures.GridCacheSetProxy> but > was:<class > org.apache.ignite.internal.processors.datastructures.GridCacheAtomicStampedImpl> > at > org.apache.ignite.internal.processors.cache.datastructures.IgniteDataStructureUniqueNameTest.testUniqueName(IgniteDataStructureUniqueNameTest.java:385) > at > org.apache.ignite.internal.processors.cache.datastructures.IgniteDataStructureUniqueNameTest.testUniqueNameMultithreaded(IgniteDataStructureUniqueNameTest.java:85) > {noformat} -- This message was sent by Atlassian JIRA (v7.6.3#76005)