1
votes

While running github example related to ignite CacheEvents program, not getting any output (Example link : https://github.com/apache/ignite/blob/master/examples/src/main/java/org/apache/ignite/examples/datagrid/CacheEventsExample.java ). Can any one please help me in this?

Example :

package com.example;

/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

import java.util.UUID;
import org.apache.ignite.Ignite;
import org.apache.ignite.IgniteCache;
import org.apache.ignite.IgniteException;
import org.apache.ignite.Ignition;
import org.apache.ignite.configuration.IgniteConfiguration;
import org.apache.ignite.events.CacheEvent;
import org.apache.ignite.lang.IgniteBiPredicate;
import org.apache.ignite.lang.IgnitePredicate;

import static org.apache.ignite.events.EventType.EVT_CACHE_OBJECT_PUT;
import static org.apache.ignite.events.EventType.EVT_CACHE_OBJECT_READ;
import static org.apache.ignite.events.EventType.EVT_CACHE_OBJECT_REMOVED;

/**
 * This examples demonstrates events API. Note that ignite events are disabled by default and
 * must be specifically enabled, just like in {@code examples/config/example-ignite.xml} file.
 * <p>
 * Remote nodes should always be started with special configuration file which
 * enables P2P class loading: {@code 'ignite.{sh|bat} examples/config/example-ignite.xml'}.
 * <p>
 * Alternatively you can run {@link ExampleNodeStartup} in another JVM which will
 * start node with {@code examples/config/example-ignite.xml} configuration.
 */
public class CacheEventsExample {
    /** Cache name. */
    private static final String CACHE_NAME = "CACHE";
    Ignite ignite ;
    /**
     * Executes example.
     *
     * @param args Command line arguments, none required.
     * @throws IgniteException If example execution failed.
     */
    public static void main(String[] args) throws IgniteException, InterruptedException {
        /*s*/
        final Ignite ignite = Ignition.start();
        try  {

            System.out.println();
            System.out.println(">>> Cache events example started.");

            // Auto-close cache at the end of the example.
            IgniteCache<Integer, String> cache = ignite.getOrCreateCache(CACHE_NAME);

           System.out.println("   after cache create   ");
                // This optional local callback is called for each event notification
                // that passed remote predicate listener.
                IgniteBiPredicate<UUID, CacheEvent> locLsnr = new IgniteBiPredicate<UUID, CacheEvent>() {
                    @Override public boolean apply(UUID uuid, CacheEvent evt) {
                        System.out.println("Received event [evt=" + evt.name() + ", key=" + evt.key() +
                            ", oldVal=" + evt.oldValue() + ", newVal=" + evt.newValue());

                        return true; // Continue listening.
                    }
                };
                System.out.println("  after local listener");
                // Remote listener which only accepts events for keys that are
                // greater or equal than 10 and if event node is primary for this key.
                IgnitePredicate<CacheEvent> rmtLsnr = new IgnitePredicate<CacheEvent>() {
                    @Override public boolean apply(CacheEvent evt) {
                        System.out.println("ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ ");
                        System.out.println("Cache event [name=" + evt.name() + ", key=" + evt.key() + ']');

                        int key = evt.key();

                        return key >= 10 && ignite.affinity(CACHE_NAME).isPrimary(ignite.cluster().localNode(), key);
                    }
                };
                System.out.println("  After remote listener ");
                // Subscribe to specified cache events on all nodes that have cache running.
                // Cache events are explicitly enabled in examples/config/example-ignite.xml file.
                ignite.events(ignite.cluster().forCacheNodes(CACHE_NAME)).remoteListen(locLsnr, rmtLsnr,
                    EVT_CACHE_OBJECT_PUT, EVT_CACHE_OBJECT_READ, EVT_CACHE_OBJECT_REMOVED);

                // Generate cache events.
                for (int i = 0; i < 20; i++){
                    System.out.println(" insert data into cache "+i);
                    cache.put(i, Integer.toString(i));
                }
                // Wait for a while while callback is notified about remaining puts.
                Thread.sleep(2000);
        }catch(Exception e){
            System.out.println("ERRRROR  :  "+e);
        }
    }
}

This logs generated while running above mention example:

>>> ver. 2.1.0#20170720-sha1:a6ca5c8a
>>> 2017 Copyright(C) Apache Software Foundation
>>> 
>>> Ignite documentation: http://ignite.apache.org
[2017-08-02 13:52:27,940][INFO ][main][IgniteKernal] Config URL: n/a
[2017-08-02 13:52:27,940][INFO ][main][IgniteKernal] Daemon mode: off
[2017-08-02 13:52:27,940][INFO ][main][IgniteKernal] OS: Linux 4.2.0-42-

generic amd64
[2017-08-02 13:52:27,940][INFO ][main][IgniteKernal] OS user: developers
[2017-08-02 13:52:27,942][INFO ][main][IgniteKernal] PID: 1343
[2017-08-02 13:52:27,942][INFO ][main][IgniteKernal] Language runtime: Java Platform API Specification ver. 1.7
[2017-08-02 13:52:27,943][INFO ][main][IgniteKernal] VM information: OpenJDK Runtime Environment 1.7.0_131-b00 Oracle Corporation OpenJDK 64-Bit Server VM 24.131-b00
[2017-08-02 13:52:27,944][INFO ][main][IgniteKernal] VM total memory: 1.7GB
[2017-08-02 13:52:27,944][INFO ][main][IgniteKernal] Remote Management [restart: off, REST: on, JMX (remote: off)]
[2017-08-02 13:52:27,944][INFO ][main][IgniteKernal] IGNITE_HOME=null
[2017-08-02 13:52:27,944][INFO ][main][IgniteKernal] VM arguments: [-DIGNITE_QUIET=false, -Dfile.encoding=UTF-8]
[2017-08-02 13:52:27,944][INFO ][main][IgniteKernal] System cache's MemoryPolicy size is configured to 40 MB. Use MemoryConfiguration.systemCacheMemorySize property to change the setting.
[2017-08-02 13:52:27,944][INFO ][main][IgniteKernal] Configured caches [in 'sysMemPlc' memoryPolicy: ['ignite-sys-cache', 'ignite-hadoop-mr-sys-cache']]
[2017-08-02 13:52:27,955][WARN ][pub-#14%null%][GridDiagnostic] Initial heap size is 123MB (should be no less than 512MB, use -Xms512m -Xmx512m).
[2017-08-02 13:52:28,080][INFO ][main][IgnitePluginProcessor] Configured plugins:
[2017-08-02 13:52:28,080][INFO ][main][IgnitePluginProcessor]   ^-- None
[2017-08-02 13:52:28,080][INFO ][main][IgnitePluginProcessor] 
[2017-08-02 13:52:28,142][INFO ][main][TcpCommunicationSpi] Successfully bound communication NIO server to TCP port [port=47100, locHost=0.0.0.0/0.0.0.0, selectorsCnt=4, selectorSpins=0, pairedConn=false]
[2017-08-02 13:52:28,150][WARN ][main][TcpCommunicationSpi] Message queue limit is set to 0 which may lead to potential OOMEs when running cache operations in FULL_ASYNC or PRIMARY_SYNC modes due to message queues growth on sender and receiver sides.
[2017-08-02 13:52:28,180][WARN ][main][NoopCheckpointSpi] Checkpoints are disabled (to enable configure any GridCheckpointSpi implementation)
[2017-08-02 13:52:28,216][WARN ][main][GridCollisionManager] Collision resolution is disabled (all jobs will be activated upon arrival).
[2017-08-02 13:52:28,217][INFO ][main][IgniteKernal] Security status [authentication=off, tls/ssl=off]
Aug 02, 2017 1:52:28 PM java.util.logging.LogManager$RootLogger log
SEVERE: Failed to resolve default logging config file: config/java.util.logging.properties
[2017-08-02 13:52:28,564][INFO ][main][SqlListenerProcessor] SQL connector processor has started on TCP port 10800
[2017-08-02 13:52:28,621][INFO ][main][GridTcpRestProtocol] Command protocol successfully started [name=TCP binary, host=0.0.0.0/0.0.0.0, port=11211]
[2017-08-02 13:52:28,888][INFO ][main][GridJettyRestProtocol] Command protocol successfully started [name=Jetty REST, host=/0.0.0.0, port=8080]
[2017-08-02 13:52:28,917][WARN ][main][IgniteKernal] Hadoop module will not start due to exception: Failed to resolve Hadoop classpath (please define HADOOP_HOME environment variable and point it to your Hadoop distribution).
[2017-08-02 13:52:28,938][INFO ][main][IgniteKernal] Non-loopback local IPs: 00.00.00.00, fe80:0:0:0:42b0:34ff:febf:6fe%2
[2017-08-02 13:52:28,938][INFO ][main][IgniteKernal] Enabled local MACs: 40B034BF06FE
[2017-08-02 13:52:28,985][INFO ][main][TcpDiscoverySpi] Successfully bound to TCP port [port=47500, localHost=0.0.0.0/0.0.0.0, locNodeId=ee678636-f45e-4c8a-856d-c339fef7a29c]

[2017-08-02 13:52:28,990][WARN ][main][TcpDiscoveryMulticastIpFinder] TcpDiscoveryMulticastIpFinder has no pre-configured addresses (it is recommended in production to specify at least one address in TcpDiscoveryMulticastIpFinder.getAddresses() configuration property)
[2017-08-02 13:52:30,269][INFO ][exchange-worker-#34%null%][time] Started exchange init [topVer=AffinityTopologyVersion [topVer=1, minorTopVer=0], crd=true, evt=10, node=TcpDiscoveryNode [id=ee678636-f45e-4c8a-856d-c339fef7a29c, addrs=[0:0:0:0:0:0:0:1%1, 00.00.00.00, 127.0.0.1], sockAddrs=[/00.00.00.00:47500, /127.0.0.1:47500, /0:0:0:0:0:0:0:1%1:47500], discPort=47500, order=1, intOrder=1, lastExchangeTime=1501662148985, loc=true, ver=2.1.0#20170720-sha1:a6ca5c8a, isClient=false], evtNode=TcpDiscoveryNode [id=ee678636-f45e-4c8a-856d-c339fef7a29c, addrs=[0:0:0:0:0:0:0:1%1, 00.00.00.00, 127.0.0.1], sockAddrs=[/00.00.00.00:47500, /127.0.0.1:47500, /0:0:0:0:0:0:0:1%1:47500], discPort=47500, order=1, intOrder=1, lastExchangeTime=1501662148985, loc=true, ver=2.1.0#20170720-sha1:a6ca5c8a, isClient=false], customEvt=null]
[2017-08-02 13:52:30,276][WARN ][exchange-worker-#34%null%][IgniteCacheDatabaseSharedManager] No user-defined default MemoryPolicy found; system default of 1GB size will be used.
[2017-08-02 13:52:30,576][INFO ][exchange-worker-#34%null%][GridCacheProcessor] Started cache [name=ignite-sys-cache, memoryPolicyName=sysMemPlc, mode=REPLICATED, atomicity=TRANSACTIONAL]
[2017-08-02 13:52:30,579][INFO ][exchange-worker-#34%null%][GridCacheProcessor] Started cache [name=ignite-hadoop-mr-sys-cache, memoryPolicyName=sysMemPlc, mode=REPLICATED, atomicity=TRANSACTIONAL]
[2017-08-02 13:52:30,606][INFO ][exchange-worker-#34%null%][GridDhtPartitionsExchangeFuture] Finished waiting for partition release future [topVer=AffinityTopologyVersion [topVer=1, minorTopVer=0], waitTime=0ms]
[2017-08-02 13:52:30,687][INFO ][exchange-worker-#34%null%][GridDhtPartitionsExchangeFuture] Snapshot initialization completed [topVer=AffinityTopologyVersion [topVer=1, minorTopVer=0], time=0ms]
[2017-08-02 13:52:30,700][INFO ][exchange-worker-#34%null%][time] Finished exchange init [topVer=AffinityTopologyVersion [topVer=1, minorTopVer=0], crd=true]
[2017-08-02 13:52:30,707][INFO ][exchange-worker-#34%null%][GridCachePartitionExchangeManager] Skipping rebalancing (nothing scheduled) [top=AffinityTopologyVersion [topVer=1, minorTopVer=0], evt=NODE_JOINED, node=ee678636-f45e-4c8a-856d-c339fef7a29c]
[2017-08-02 13:52:30,783][INFO ][main][IgniteKernal] Performance suggestions for grid  (fix if possible)
[2017-08-02 13:52:30,783][INFO ][main][IgniteKernal] To disable, set -DIGNITE_PERFORMANCE_SUGGESTIONS_DISABLED=true
[2017-08-02 13:52:30,783][INFO ][main][IgniteKernal]   ^-- Switch to the most recent 1.8 JVM version
[2017-08-02 13:52:30,783][INFO ][main][IgniteKernal]   ^-- Specify JVM heap max size (add '-Xmx<size>[g|G|m|M|k|K]' to JVM options)
[2017-08-02 13:52:30,784][INFO ][main][IgniteKernal]   ^-- Set max direct memory size if getting 'OOME: Direct buffer memory' (add '-XX:MaxDirectMemorySize=<size>[g|G|m|M|k|K]' to JVM options)
[2017-08-02 13:52:30,784][INFO ][main][IgniteKernal]   ^-- Disable processing of calls to System.gc() (add '-XX:+DisableExplicitGC' to JVM options)
[2017-08-02 13:52:30,784][INFO ][main][IgniteKernal] Refer to this page for more performance suggestions: https://apacheignite.readme.io/docs/jvm-and-system-tuning
[2017-08-02 13:52:30,784][INFO ][main][IgniteKernal] 
[2017-08-02 13:52:30,784][INFO ][main][IgniteKernal] To start Console Management & Monitoring run ignitevisorcmd.{sh|bat}
[2017-08-02 13:52:30,784][INFO ][main][IgniteKernal] 
[2017-08-02 13:52:30,785][INFO ][main][IgniteKernal] 

>>> +----------------------------------------------------------------------+
>>> Ignite ver. 2.1.0#20170720-sha1:a6ca5c8a97e9a4c9d73d40ce76d1504c14ba1940
>>> +----------------------------------------------------------------------+
>>> OS name: Linux 4.2.0-42-generic amd64
>>> CPU(s): 4
>>> Heap: 1.7GB
>>> VM name: 1343@localhost
>>> Local node [ID=EE678636-F45E-4C8A-856D-C339FEF7A29C, order=1, clientMode=false]
>>> Local node addresses: [00.00.00.00/0:0:0:0:0:0:0:1%1, /00.00.00.00, /127.0.0.1]
>>> Local ports: TCP:8080 TCP:10800 TCP:11211 TCP:47100 UDP:47400 TCP:47500 

[2017-08-02 13:52:30,786][INFO ][main][GridDiscoveryManager] Topology snapshot [ver=1, servers=1, clients=0, CPUs=4, heap=1.7GB]

>>> Cache events example started.
[2017-08-02 13:52:30,802][INFO ][exchange-worker-#34%null%][time] Started exchange init [topVer=AffinityTopologyVersion [topVer=1, minorTopVer=1], crd=true, evt=18, node=TcpDiscoveryNode [id=ee678636-f45e-4c8a-856d-c339fef7a29c, addrs=[0:0:0:0:0:0:0:1%1, 00.00.00.00, 127.0.0.1], sockAddrs=[/00.00.00.00:47500, /127.0.0.1:47500, /0:0:0:0:0:0:0:1%1:47500], discPort=47500, order=1, intOrder=1, lastExchangeTime=1501662148985, loc=true, ver=2.1.0#20170720-sha1:a6ca5c8a, isClient=false], evtNode=TcpDiscoveryNode [id=ee678636-f45e-4c8a-856d-c339fef7a29c, addrs=[0:0:0:0:0:0:0:1%1, 00.00.00.00, 127.0.0.1], sockAddrs=[/00.00.00.00:47500, /127.0.0.1:47500, /0:0:0:0:0:0:0:1%1:47500], discPort=47500, order=1, intOrder=1, lastExchangeTime=1501662148985, loc=true, ver=2.1.0#20170720-sha1:a6ca5c8a, isClient=false], customEvt=DynamicCacheChangeBatch [id=0d3f902ad51-474b0be6-3ed8-4797-9c9e-9a2166009164, reqs=[DynamicCacheChangeRequest [cacheName=CACHE, hasCfg=true, nodeId=ee678636-f45e-4c8a-856d-c339fef7a29c, clientStartOnly=false, stop=false, destroy=false]], exchangeActions=ExchangeActions [startCaches=[CACHE], stopCaches=null, startGrps=[CACHE], stopGrps=[], resetParts=null, stateChangeRequest=null], startCaches=false]]
[2017-08-02 13:52:30,844][INFO ][exchange-worker-#34%null%][GridCacheProcessor] Started cache [name=CACHE, memoryPolicyName=default, mode=PARTITIONED, atomicity=ATOMIC]
[2017-08-02 13:52:30,846][INFO ][exchange-worker-#34%null%][GridDhtPartitionsExchangeFuture] Finished waiting for partition release future [topVer=AffinityTopologyVersion [topVer=1, minorTopVer=1], waitTime=0ms]
[2017-08-02 13:52:30,963][INFO ][exchange-worker-#34%null%][GridDhtPartitionsExchangeFuture] Snapshot initialization completed [topVer=AffinityTopologyVersion [topVer=1, minorTopVer=1], time=0ms]
   after cache create   
[2017-08-02 13:52:30,964][INFO ][exchange-worker-#34%null%][time] Finished exchange init [topVer=AffinityTopologyVersion [topVer=1, minorTopVer=1], crd=true]
  after local listener
  After remote listener 
[2017-08-02 13:52:30,975][INFO ][exchange-worker-#34%null%][GridCachePartitionExchangeManager] Skipping rebalancing (nothing scheduled) [top=AffinityTopologyVersion [topVer=1, minorTopVer=1], evt=DISCOVERY_CUSTOM_EVT, node=ee678636-f45e-4c8a-856d-c339fef7a29c]
[2017-08-02 13:52:30,979][WARN ][main][GridEventStorageManager] Added listener for disabled event type: CACHE_OBJECT_PUT
[2017-08-02 13:52:30,979][WARN ][main][GridEventStorageManager] Added listener for disabled event type: CACHE_OBJECT_READ
[2017-08-02 13:52:30,979][WARN ][main][GridEventStorageManager] Added listener for disabled event type: CACHE_OBJECT_REMOVED
1
Just tried this example and everything works fine, please share your log file and steps how you run this exampleEvgenii Zhuravlev
Copy and Past the code and changed ignite start method (Ignition.start())) and run it.Rhishi
only ">>> Cache events example started." this console were presentRhishi
Try to run ignite with -DIGNITE_QUIET=false and share logsEvgenii Zhuravlev
I have mention generated logs in questionRhishi

1 Answers

4
votes

You started Ignite with default config xml file. By default all events are disabled and must be specifically enabled. So, start Ignite with "examples/config/example-ignite.xml", as it was in example before your changes:

Ignite ignite = Ignition.start("examples/config/example-ignite.xml")

Or, you can create your own config and enable certain events in it:

<property name="includeEventTypes">
     <list>
         <util:constant static-field="org.apache.ignite.events.EventType.EVT_CACHE_OBJECT_PUT"/>
         <util:constant static-field="org.apache.ignite.events.EventType.EVT_CACHE_OBJECT_READ"/>
         <util:constant static-field="org.apache.ignite.events.EventType.EVT_CACHE_OBJECT_REMOVED"/>
     </list>
</property>