I start an Ignite server first, 
then start an Ignite client which do some asynchronously operations on
cache.
But only after several seconds, the operation jammed.

Is there anything wrong about my code?

public class ContinuousQuery {

        public static void main(String[] args) {
                Ignition.setClientMode(true);
                String cacheName = "Test";
                Ignite ignite = Ignition.start();
                System.out.println();
                System.out.println(">>>TestMain started.");
                CacheConfiguration<Integer, UUID> cacheCfg = new
CacheConfiguration<>(cacheName);
                cacheCfg.setBackups(0);
                cacheCfg.setCacheMode(CacheMode.PARTITIONED);
                cacheCfg.setAtomicityMode(CacheAtomicityMode.ATOMIC);
                cacheCfg.setMemoryMode(CacheMemoryMode.OFFHEAP_TIERED);
                cacheCfg.setOffHeapMaxMemory(200L * 1024L * 1024L);
                cacheCfg.setSwapEnabled(false);
                boolean isAsync = true;
                for (int i = 1;; i++) {
                        IgniteCache<Integer, UUID> cache = 
ignite.getOrCreateCache(cacheCfg);

                        for (int j = 0; j < 1000000; j++) {
                                UUID val = UUID.randomUUID();
                                doit(isAsync, i, cache, j, val);
                        }
                }
        }

        private static void doit(boolean isAsync, final int i, 
IgniteCache<Integer,
UUID> cache, final Integer key,
                        final UUID value) {
                if (isAsync) {
                        final IgniteCache<Integer, UUID> asyncCache = 
cache.withAsync();
                        // setp 1
                        asyncCache.put(key, value);
                        // setp 1 asynchronously wait for result.
                        asyncCache.future().listen(new 
IgniteInClosure<IgniteFuture&lt;?>>() {
                                @Override
                                public void apply(IgniteFuture<?> fut) {
                                        System.out.println(i + ", timeNow=" + 
timeNow() + ":setp 1 put
operation completed '" + fut.isDone()
                                                        + "' [key=" + key + ", 
value=" + fut.get() + "]");
                                        // setp 2
                                        asyncCache.remove(key);
                                        // setp 2 asynchronously wait for 
result.
                                        asyncCache.future().listen(new 
IgniteInClosure<IgniteFuture&lt;?>>() {
                                                @Override
                                                public void 
apply(IgniteFuture<?> fut) {
                                                        System.out.println(i + 
", timeNow=" + timeNow() + ":setp 2 remove
operation completed '"
                                                                        + 
fut.isDone() + "' [key=" + key + ", value=" + fut.get() + "]");
                                                }
                                        });
                                }
                        });
                } else {
                        // setp 1
                        cache.put(key, value);
                        System.out.println(i + ", timeNow=" + timeNow() + 
":setp 1 put operation
completed [key=" + key + "]");
                        // setp 2
                        boolean result = cache.remove(key);
                        System.out.println(i + ", timeNow=" + timeNow() + 
":setp 2 remove
operation completed [key=" + key
                                        + ", result=" + result + "]");
                }
        }

        private static String timeNow() {
                Date date = new Date();
                DateFormat format = new SimpleDateFormat("yyyy-MM-dd 
HH:mm:ss.SSS");
                String time = format.format(date);
                return time;
        }
}

Following is the test result:
[10:19:55] Topology snapshot [ver=2, servers=1, clients=1, CPUs=32,
heap=12.0GB]

>>>TestMain started.
1, timeNow=2017-02-21 10:19:55.652:setp 1 put operation completed 'true'
[key=0, value=null]
1, timeNow=2017-02-21 10:19:55.658:setp 2 remove operation completed 'true'
[key=0, value=true]
1, timeNow=2017-02-21 10:19:55.659:setp 1 put operation completed 'true'
[key=1, value=null]
1, timeNow=2017-02-21 10:19:55.663:setp 2 remove operation completed 'true'
[key=1, value=true]
1, timeNow=2017-02-21 10:19:55.664:setp 1 put operation completed 'true'
[key=2, value=null]
1, timeNow=2017-02-21 10:19:55.667:setp 2 remove operation completed 'true'
[key=2, value=true]
1, timeNow=2017-02-21 10:19:55.668:setp 1 put operation completed 'true'
[key=3, value=null]
1, timeNow=2017-02-21 10:19:55.672:setp 2 remove operation completed 'true'
[key=3, value=true]
1, timeNow=2017-02-21 10:19:55.673:setp 1 put operation completed 'true'
[key=4, value=null]
1, timeNow=2017-02-21 10:19:55.677:setp 2 remove operation completed 'true'
[key=4, value=true]
1, timeNow=2017-02-21 10:19:55.678:setp 1 put operation completed 'true'
[key=5, value=null]
1, timeNow=2017-02-21 10:19:55.681:setp 2 remove operation completed 'true'
[key=5, value=true]
1, timeNow=2017-02-21 10:19:55.682:setp 1 put operation completed 'true'
[key=6, value=null]
1, timeNow=2017-02-21 10:19:55.686:setp 1 put operation completed 'true'
[key=7, value=null]
1, timeNow=2017-02-21 10:19:55.687:setp 2 remove operation completed 'true'
[key=6, value=true]
1, timeNow=2017-02-21 10:19:55.716:setp 2 remove operation completed 'true'
[key=7, value=true]

Then it jammed.




--
View this message in context: 
http://apache-ignite-users.70518.x6.nabble.com/Ignite-client-doing-asynchronously-operation-will-be-jammed-tp10746.html
Sent from the Apache Ignite Users mailing list archive at Nabble.com.

Reply via email to