/** * Register a continuous query, that counts updates on the provided cache. * * @param cache Cache. * @param loc If {@code true}, then local continuous query will be registered. * @param updCntr Update counter. * @param rmtFilter Remote filter. */ private void listenToUpdates(IgniteCache<Integer, String> cache, boolean loc, AtomicInteger updCntr, CacheEntryEventSerializableFilter<Integer, String> rmtFilter) { ContinuousQuery<Integer, String> cq = new ContinuousQuery<>(); cq.setLocal(loc); cq.setLocalListener((evts) -> { for (CacheEntryEvent e : evts) updCntr.incrementAndGet(); }); if (rmtFilter != null) cq.setRemoteFilterFactory(FactoryBuilder.factoryOf(rmtFilter)); cache.query(cq); } }
/** * @param cache Ignite cache. * @throws Exception If fail. */ private void executeContinuousQuery(IgniteCache cache) throws Exception { ContinuousQuery<Integer, String> qry = new ContinuousQuery<>(); qry.setLocalListener( new CacheEntryUpdatedListener<Integer, String>() { @Override public void onUpdated(Iterable<CacheEntryEvent<? extends Integer, ? extends String>> events) throws CacheEntryListenerException { for (CacheEntryEvent<? extends Integer, ? extends String> event : events) System.out.println("Key = " + event.getKey() + ", Value = " + event.getValue()); } } ); final Class<CacheEntryEventSerializableFilter> remoteFilterClass = (Class<CacheEntryEventSerializableFilter>) ldr.loadClass("org.apache.ignite.tests.p2p.CacheDeploymentCacheEntryEventSerializableFilter"); qry.setRemoteFilterFactory(new ClassFilterFactory(remoteFilterClass)); cache.query(qry); for (int i = 0; i < 100; i++) cache.put(i, "Message " + i); }
final ContinuousQuery<Integer, String> qry2 = new ContinuousQuery<>(); qry1.setRemoteFilterFactory(new DummyEventFilterFactory<>()); qry2.setRemoteFilterFactory(new DummyEventFilterFactory<>());
qry.setRemoteFilterFactory(new DummyEventFilterFactory<>());
qry.setRemoteFilterFactory(FactoryBuilder.factoryOf( new CacheEntryEventSerializableFilter<Integer, String>() { @Override public boolean evaluate(CacheEntryEvent<? extends Integer, ? extends String> e)
qry.setRemoteFilterFactory(new EntryEventFilterFactory(idx)); qry.setLocalListener(new CacheEntryUpdatedListener() {
/** * @throws Exception If failed. */ @Test public void testManyQueryBackupQueue() throws Exception { List<QueryCursor> qryCursors = new ArrayList<>(); for (int i = 0; i < QUERY_COUNT; i++) { ContinuousQuery<Object, Object> qry = new ContinuousQuery<>(); qry.setLocalListener(new CacheEventListener()); qry.setRemoteFilterFactory(new AlwaysFalseFilterFactory()); qryCursors.add(grid(0).cache(CACHE_NAME).query(qry)); } for (int i = 0; i < KEYS_COUNT; i++) { log.info("Put key: " + i); for (int j = 0; j < 150; j++) grid(ThreadLocalRandom.current().nextInt(GRID_COUNT)).cache(CACHE_NAME).put(i, new byte[1024 * 50]); } int size = backupQueueSize(); assertTrue(size > 0); assertTrue(size <= BACKUP_ACK_THRESHOLD * QUERY_COUNT * /* partition count */1024); for (QueryCursor qry : qryCursors) qry.close(); }
qry.setRemoteFilterFactory(new RemoteFilterFactory()); qry.setLocalListener(new CacheEntryUpdatedListener<Integer, Integer>() {
qry.setRemoteFilterFactory(FactoryBuilder.factoryOf( new CacheEntryEventSerializableFilter<Integer, String>() { @Override public boolean evaluate(
qry.setRemoteFilterFactory( (Factory<? extends CacheEntryEventFilter<Integer, Integer>>)(Object)evtFilterFactory.newInstance());
qry.setRemoteFilterFactory( FactoryBuilder.factoryOf(new CacheTestRemoteFilterAsync(ccfg.getName())));
qry.setRemoteFilterFactory(FactoryBuilder.factoryOf(CacheTestRemoteFilter.class));
qry.setLocalListener(new TestCacheAsyncEventListener(queue, qryCntr)); qry.setRemoteFilterFactory(FactoryBuilder.factoryOf( new CacheTestRemoteFilterAsync(ccfg.getName()))); qry.setLocalListener(new TestCacheEventListener(queue, qryCntr)); qry.setRemoteFilterFactory(FactoryBuilder.factoryOf( new CacheTestRemoteFilter(ccfg.getName())));
/** * @throws Exception If failed. */ @Test public void testBackupQueue() throws Exception { final CacheEventListener lsnr = new CacheEventListener(); ContinuousQuery<Object, Object> qry = new ContinuousQuery<>(); qry.setLocalListener(lsnr); qry.setRemoteFilterFactory(new AlwaysFalseFilterFactory()); try (QueryCursor<?> ignore = grid(0).cache(CACHE_NAME).query(qry)) { for (int i = 0; i < KEYS_COUNT; i++) { log.info("Put key: " + i); for (int j = 0; j < 100; j++) grid(j % GRID_COUNT).cache(CACHE_NAME).put(i, new byte[1024 * 50]); } log.info("Finish."); } }
final ContinuousQuery qry = new ContinuousQuery(); qry.setRemoteFilterFactory(new Factory<CacheEntryEventFilter>() { @Override public CacheEntryEventFilter create() { return null;
qry.setRemoteFilterFactory(new AlwaysFalseFilterFactory()); qry.setAutoUnsubscribe(false);
/** * @throws Exception If failed. */ @Test public void testEventAvailabilityScope() throws Exception { startGrids(GRID_COUNT); final CacheEventListener lsnr = new CacheEventListener(); ContinuousQuery<Object, Object> qry = new ContinuousQuery<>(); qry.setLocalListener(lsnr); qry.setRemoteFilterFactory(new FilterFactory()); Object keys[] = new Object[GRID_COUNT]; // Add initial values. for (int i = 0; i < GRID_COUNT; ++i) { keys[i] = primaryKey(grid(i).cache(DEFAULT_CACHE_NAME)); grid(0).cache(DEFAULT_CACHE_NAME).put(keys[i], -1); } try (QueryCursor<?> cur = grid(0).cache(DEFAULT_CACHE_NAME).query(qry)) { // Replace values on the keys. for (int i = 0; i < KEYS_COUNT; i++) { log.info("Put key: " + i); grid(i % GRID_COUNT).cache(DEFAULT_CACHE_NAME).put(keys[i % GRID_COUNT], i); } } assertTrue("There are not filtered events", !events.isEmpty()); for (CacheEntryEvent<?, ?> event : events) { assertNotNull("Key is null", event.getKey()); assertNotNull("Value is null", event.getValue()); assertNotNull("Old value is null", event.getOldValue()); } }
conQry.setRemoteFilterFactory(FactoryBuilder.factoryOf(rmtFltr));
conQry.setRemoteFilterFactory(FactoryBuilder.factoryOf(rmtFltr));