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 <[email protected]> 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();
