You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by am...@apache.org on 2019/06/05 11:08:22 UTC
[ignite] 19/31: GG-19180 [GG-19116] Backport: Fix
CacheContinuousQueryAsyncFailoverAtomicSelfTest.testFailoverStartStopBackup
(#73)
This is an automated email from the ASF dual-hosted git repository.
amashenkov pushed a commit to branch gg-19225
in repository https://gitbox.apache.org/repos/asf/ignite.git
commit 3d758743b1cbc1164d7ef659d8796a40bfbee768
Author: pavlukhin <vo...@gmail.com>
AuthorDate: Fri May 31 15:47:51 2019 +0300
GG-19180 [GG-19116] Backport: Fix CacheContinuousQueryAsyncFailoverAtomicSelfTest.testFailoverStartStopBackup (#73)
---
.../CacheContinuousQueryFailoverAbstractSelfTest.java | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryFailoverAbstractSelfTest.java b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryFailoverAbstractSelfTest.java
index cd1ae10..696ae8a 100644
--- a/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryFailoverAbstractSelfTest.java
+++ b/modules/core/src/test/java/org/apache/ignite/internal/processors/cache/query/continuous/CacheContinuousQueryFailoverAbstractSelfTest.java
@@ -1755,11 +1755,22 @@ public abstract class CacheContinuousQueryFailoverAbstractSelfTest extends GridC
if (System.currentTimeMillis() > startFilterTime) {
// Stop filter and check events.
if (dinQry != null) {
- dinQry.close();
+ // If sync callback is used then we can close a query before checking notifications
+ // because CQ listeners on a server side have a pending notification upon each
+ // successfull cache update operations completion.
+ if (!asyncCallback())
+ dinQry.close();
- log.info("Continuous query listener closed. Await events: " + expEvtsNewLsnr.size());
+ log.info("Await events: " + expEvtsNewLsnr.size());
checkEvents(expEvtsNewLsnr, dinLsnr, backups == 0);
+
+ // If async callback is used and we close a query before checking notifications then
+ // some updates can be missed because a callback submitted in parallel can be executed
+ // after CQ is closed and no notification will be sent as a result.
+ // So, we close CQ after the check.
+ if (asyncCallback())
+ dinQry.close();
}
dinLsnr = new CacheEventListener2();