Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / apache ignite / 21 сообщений из 21, страница 1 из 1
16.10.2018, 18:20
    #39718371
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
apache ignite
Поясните,
если инстанс запускается как отдельный сервис, как можно задать ttl кэша?
Все примеры с ttl что я нашел - с запуском инстанса ignite, а не использованием стороннего.

Делаю так:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
        ClientConfiguration cfg = new ClientConfiguration().setAddresses("127.0.0.1:10800");

        try (IgniteClient igniteClient = Ignition.startClient(cfg)) {

            ClientCacheConfiguration configuration = new ClientCacheConfiguration();
            configuration.setName("test");
            configuration.setAtomicityMode(CacheAtomicityMode.TRANSACTIONAL);
            configuration.setWriteSynchronizationMode(CacheWriteSynchronizationMode.FULL_SYNC);
            configuration.setEagerTtl(true);

            ClientCache<Integer, String> cache = igniteClient.getOrCreateCache(configuration);

            Integer key = 1;
            cache.put(key, "test value");

            String cachedVal = cache.get(key);
            System.out.format(">>> Loaded [%s] from the cache.\n", cachedVal);

        }
        catch (ClientException e) {
            System.err.println(e.getMessage());
        }
        catch (Exception e) {
            System.err.format("Unexpected failure: %s\n", e);
        }
...
Рейтинг: 0 / 0
16.10.2018, 20:07
    #39718418
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
apache ignite
Оказывается нельзя.
Нужно настраивать на сервере. Это, конечно, очень не практично.

http://apache-ignite-users.70518.x6.nabble.com/Thin-client-doesn-t-support-Expiry-Policies-td22422.html
...
Рейтинг: 0 / 0
16.10.2018, 20:07
    #39718419
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
apache ignite
Создать, главное, можно. А поменять TTL нет...
...
Рейтинг: 0 / 0
16.10.2018, 23:24
    #39718485
cossack5
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
apache ignite
Hett,

Там вроде никакие параметры нельзя поменять.
...
Рейтинг: 0 / 0
17.10.2018, 08:26
    #39718539
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
apache ignite
Вот на трекере ишью
https://issues.apache.org/jira/browse/IGNITE-9033
...
Рейтинг: 0 / 0
18.10.2018, 09:40
    #39719203
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
apache ignite
Поясните по транзакциям, вот есть такой кеш


Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
        <property name="cacheConfiguration">
            <bean class="org.apache.ignite.configuration.CacheConfiguration">
                <!-- Set a cache name. -->
                <property name="name" value="transactional-cache"/>
                <!-- Set atomicity mode, can be ATOMIC or TRANSACTIONAL. ATOMIC is default. -->
                <property name="atomicityMode" value="TRANSACTIONAL"/>
            </bean>
        </property>



и такой код:

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
        try (Ignite ignite = Ignition.start("config/ignite.xml")) {

            Thread.sleep(5_000); // do wait node communication
            IgniteCache<String, Integer> cache = ignite.getOrCreateCache("transactional-cache");

            System.out.println("Start loop");
            for(int i = 0; i < 100; i++) {
                try (Transaction tx = ignite.transactions().txStart()) {
                    Integer value = cache.get("val");
                    if (value == null) {
                        value = 0;
                    }
                    cache.put("val", value + 1);
                    tx.commit();
                }
                Thread.sleep(100);
            }
            System.out.println(cache.get("val"));
            Thread.sleep(10_000); // do wait other nodes

        }



В итоге одна нода отработала как ожидалось:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
[13:37:45]    __________  ________________ 
[13:37:45]   /  _/ ___/ |/ /  _/_  __/ __/ 
[13:37:45]  _/ // (7 7    // /  / / / _/   
[13:37:45] /___/\___/_/|_/___/ /_/ /___/  
[13:37:45] 
[13:37:45] ver. 2.6.0#20180710-sha1:669feacc
[13:37:45] 2018 Copyright(C) Apache Software Foundation
[13:37:45] 
[13:37:45] Ignite documentation:  http://ignite.apache.org 
[13:37:45] 
[13:37:45] Quiet mode.
[13:37:45]   ^-- Logging by 'JavaLogger [quiet=true, config=null]'
[13:37:45]   ^-- To see **FULL** console log here add -DIGNITE_QUIET=false or "-v" to ignite.{sh|bat}
[13:37:45] 
[13:37:45] OS: Linux 4.15.0-36-generic amd64
[13:37:45] VM information: Java(TM) SE Runtime Environment 1.8.0_181-b13 Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.181-b13
[13:37:45] Initial heap size is 250MB (should be no less than 512MB, use -Xms512m -Xmx512m).
[13:37:45] Configured plugins:
[13:37:45]   ^-- None
[13:37:45] 
[13:37:45] Configured failure handler: [hnd=StopNodeOrHaltFailureHandler [tryStop=false, timeout=0]]
[13:37:46] 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.
[13:37:46] Security status [authentication=off, tls/ssl=off]
окт 18, 2018 1:37:47 PM org.apache.ignite.logger.java.JavaLogger error
SEVERE: Failed to send/receive address message (will try to reconnect).
java.io.IOException: Операция не позволена (sendto failed)
	at java.net.PlainDatagramSocketImpl.send(Native Method)
	at java.net.DatagramSocket.send(DatagramSocket.java:693)
	at org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder$AddressSender.body(TcpDiscoveryMulticastIpFinder.java:891)
	at org.apache.ignite.spi.IgniteSpiThread.run(IgniteSpiThread.java:62)

[13:37:51] Nodes started on local machine require more than 20% of physical RAM what can lead to significant slowdown due to swapping (please decrease JVM heap size, data region size or checkpoint buffer size) [required=13697MB, available=15983MB]
[13:37:51] Performance suggestions for grid  (fix if possible)
[13:37:51] To disable, set -DIGNITE_PERFORMANCE_SUGGESTIONS_DISABLED=true
[13:37:51]   ^-- Disable grid events (remove 'includeEventTypes' from configuration)
[13:37:51]   ^-- Enable G1 Garbage Collector (add '-XX:+UseG1GC' to JVM options)
[13:37:51]   ^-- Specify JVM heap max size (add '-Xmx<size>[g|G|m|M|k|K]' to JVM options)
[13:37:51]   ^-- Set max direct memory size if getting 'OOME: Direct buffer memory' (add '-XX:MaxDirectMemorySize=<size>[g|G|m|M|k|K]' to JVM options)
[13:37:51]   ^-- Disable processing of calls to System.gc() (add '-XX:+DisableExplicitGC' to JVM options)
[13:37:51]   ^-- Enable ATOMIC mode if not using transactions (set 'atomicityMode' to ATOMIC)
[13:37:51] Refer to this page for more performance suggestions:  https://apacheignite.readme.io/docs/jvm-and-system-tuning 
[13:37:51] 
[13:37:51] To start Console Management & Monitoring run ignitevisorcmd.{sh|bat}
[13:37:51] 
[13:37:51] Ignite node started OK (id=74f68126)
[13:37:51] Topology snapshot [ver=2, servers=2, clients=0, CPUs=8, offheap=6.2GB, heap=6.9GB]
[13:37:51]   ^-- Node [id=74F68126-86DB-4BEE-909E-7E46735CBE8F, clusterState=ACTIVE]
[13:37:51] Data Regions Configured:
[13:37:51]   ^-- default [initSize=256,0 MiB, maxSize=3,1 GiB, persistenceEnabled=false]
Start loop
200
[13:38:50] Ignite node stopped OK [uptime=00:00:58.679]

Process finished with exit code 0




А во второй где-то потерялись значения:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
[13:37:44]    __________  ________________ 
[13:37:44]   /  _/ ___/ |/ /  _/_  __/ __/ 
[13:37:44]  _/ // (7 7    // /  / / / _/   
[13:37:44] /___/\___/_/|_/___/ /_/ /___/  
[13:37:44] 
[13:37:44] ver. 2.6.0#20180710-sha1:669feacc
[13:37:44] 2018 Copyright(C) Apache Software Foundation
[13:37:44] 
[13:37:44] Ignite documentation:  http://ignite.apache.org 
[13:37:44] 
[13:37:44] Quiet mode.
[13:37:44]   ^-- Logging by 'JavaLogger [quiet=true, config=null]'
[13:37:44]   ^-- To see **FULL** console log here add -DIGNITE_QUIET=false or "-v" to ignite.{sh|bat}
[13:37:44] 
[13:37:44] OS: Linux 4.15.0-36-generic amd64
[13:37:44] VM information: Java(TM) SE Runtime Environment 1.8.0_181-b13 Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.181-b13
[13:37:44] Initial heap size is 250MB (should be no less than 512MB, use -Xms512m -Xmx512m).
[13:37:44] Configured plugins:
[13:37:44]   ^-- None
[13:37:44] 
[13:37:44] Configured failure handler: [hnd=StopNodeOrHaltFailureHandler [tryStop=false, timeout=0]]
[13:37:45] 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.
[13:37:45] Security status [authentication=off, tls/ssl=off]
окт 18, 2018 1:37:49 PM org.apache.ignite.logger.java.JavaLogger error
SEVERE: Failed to send/receive address message (will try to reconnect).
java.io.IOException: Операция не позволена (sendto failed)
	at java.net.PlainDatagramSocketImpl.send(Native Method)
	at java.net.DatagramSocket.send(DatagramSocket.java:693)
	at org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder$AddressSender.body(TcpDiscoveryMulticastIpFinder.java:891)
	at org.apache.ignite.spi.IgniteSpiThread.run(IgniteSpiThread.java:62)

[13:37:50] Performance suggestions for grid  (fix if possible)
[13:37:50] To disable, set -DIGNITE_PERFORMANCE_SUGGESTIONS_DISABLED=true
[13:37:50]   ^-- Disable grid events (remove 'includeEventTypes' from configuration)
[13:37:50]   ^-- Enable G1 Garbage Collector (add '-XX:+UseG1GC' to JVM options)
[13:37:50]   ^-- Specify JVM heap max size (add '-Xmx<size>[g|G|m|M|k|K]' to JVM options)
[13:37:50]   ^-- Set max direct memory size if getting 'OOME: Direct buffer memory' (add '-XX:MaxDirectMemorySize=<size>[g|G|m|M|k|K]' to JVM options)
[13:37:50]   ^-- Disable processing of calls to System.gc() (add '-XX:+DisableExplicitGC' to JVM options)
[13:37:50]   ^-- Enable ATOMIC mode if not using transactions (set 'atomicityMode' to ATOMIC)
[13:37:50] Refer to this page for more performance suggestions:  https://apacheignite.readme.io/docs/jvm-and-system-tuning 
[13:37:50] 
[13:37:50] To start Console Management & Monitoring run ignitevisorcmd.{sh|bat}
[13:37:50] 
[13:37:50] Ignite node started OK (id=c53689ee)
[13:37:50] Topology snapshot [ver=1, servers=1, clients=0, CPUs=8, offheap=3.1GB, heap=3.5GB]
[13:37:50]   ^-- Node [id=C53689EE-E0E0-4070-BDAA-FE1A38970E49, clusterState=ACTIVE]
[13:37:50] Data Regions Configured:
[13:37:50]   ^-- default [initSize=256,0 MiB, maxSize=3,1 GiB, persistenceEnabled=false]
[13:37:51] Topology snapshot [ver=2, servers=2, clients=0, CPUs=8, offheap=6.2GB, heap=6.9GB]
[13:37:51]   ^-- Node [id=C53689EE-E0E0-4070-BDAA-FE1A38970E49, clusterState=ACTIVE]
[13:37:51] Data Regions Configured:
[13:37:51]   ^-- default [initSize=256,0 MiB, maxSize=3,1 GiB, persistenceEnabled=false]
Start loop
194
[13:38:50] Ignite node stopped OK [uptime=00:00:59.654]
окт 18, 2018 1:38:50 PM org.apache.ignite.logger.java.JavaLogger error
SEVERE: Runtime error caught during grid runnable execution: IgniteSpiThread [name=tcp-disco-multicast-addr-rcvr-#28]
java.lang.NullPointerException
	at org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder.requestAddresses(TcpDiscoveryMulticastIpFinder.java:628)
	at org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder.access$700(TcpDiscoveryMulticastIpFinder.java:80)
	at org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder$AddressReceiver.body(TcpDiscoveryMulticastIpFinder.java:780)
	at org.apache.ignite.spi.IgniteSpiThread.run(IgniteSpiThread.java:62)

окт 18, 2018 1:38:50 PM org.apache.ignite.logger.java.JavaLogger error
SEVERE: Runtime error caught during grid runnable execution: IgniteSpiThread [name=tcp-disco-multicast-addr-rcvr-#26]
java.lang.NullPointerException
	at org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder.requestAddresses(TcpDiscoveryMulticastIpFinder.java:628)
	at org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder.access$700(TcpDiscoveryMulticastIpFinder.java:80)
	at org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder$AddressReceiver.body(TcpDiscoveryMulticastIpFinder.java:780)
	at org.apache.ignite.spi.IgniteSpiThread.run(IgniteSpiThread.java:62)

окт 18, 2018 1:38:50 PM org.apache.ignite.logger.java.JavaLogger error
SEVERE: Runtime error caught during grid runnable execution: IgniteSpiThread [name=tcp-disco-multicast-addr-rcvr-#27]
java.lang.NullPointerException
	at org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder.requestAddresses(TcpDiscoveryMulticastIpFinder.java:628)
	at org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder.access$700(TcpDiscoveryMulticastIpFinder.java:80)
	at org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder$AddressReceiver.body(TcpDiscoveryMulticastIpFinder.java:780)
	at org.apache.ignite.spi.IgniteSpiThread.run(IgniteSpiThread.java:62)

окт 18, 2018 1:38:50 PM org.apache.ignite.logger.java.JavaLogger error
SEVERE: Runtime error caught during grid runnable execution: IgniteSpiThread [name=tcp-disco-multicast-addr-rcvr-#25]
java.lang.NullPointerException
	at org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder.requestAddresses(TcpDiscoveryMulticastIpFinder.java:628)
	at org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder.access$700(TcpDiscoveryMulticastIpFinder.java:80)
	at org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder$AddressReceiver.body(TcpDiscoveryMulticastIpFinder.java:780)
	at org.apache.ignite.spi.IgniteSpiThread.run(IgniteSpiThread.java:62)


Process finished with exit code 0



И исключение вывалилось.
...
Рейтинг: 0 / 0
18.10.2018, 09:46
    #39719209
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
apache ignite
По дефолту repeteable read и pessimistic concurency.
Пробовал и так:

Код: java
1.
2.
3.
4.
                try (Transaction tx = ignite.transactions().txStart(
                        TransactionConcurrency.PESSIMISTIC,
                        TransactionIsolation.SERIALIZABLE
                )) {



Но проблему не решило.
...
Рейтинг: 0 / 0
18.10.2018, 09:49
    #39719210
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
apache ignite
Забыл написать, ноды запускаются одновременно и как видно по логу успевают наладить коммуникацию между собой.
После чего запускается цикл.
...
Рейтинг: 0 / 0
18.10.2018, 10:22
    #39719239
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
apache ignite
-Djava.net.preferIPv4Stack=true

пробовал?
...
Рейтинг: 0 / 0
18.10.2018, 10:28
    #39719241
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
apache ignite
и почему бы для этого кейса не использовать AtomicLong ?

https://ignite.apache.org/releases/latest/javadoc/org/apache/ignite/Ignite.html#atomicLong-java.lang.String-long-boolean-
...
Рейтинг: 0 / 0
18.10.2018, 10:35
    #39719250
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
apache ignite
Dmitry.-Djava.net.preferIPv4Stack=true

пробовал?

А что это даст?
Попробовал, ничего не изменилось (и исключение так же вываливается). Ноды между собой и так вроде нормально коммуницируют.
...
Рейтинг: 0 / 0
18.10.2018, 10:35
    #39719251
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
apache ignite
Dmitry.и почему бы для этого кейса не использовать AtomicLong ?

https://ignite.apache.org/releases/latest/javadoc/org/apache/ignite/Ignite.html#atomicLong-java.lang.String-long-boolean-

Да тут вопрос не столько в "как сделать счетчик", сколько в изучении транзакций в игнайте.
...
Рейтинг: 0 / 0
18.10.2018, 11:45
    #39719283
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
apache ignite
а если попробовать "Static IP Finder" вместо "Multicast IP Finder" ?

https://apacheignite.readme.io/docs/tcpip-discovery
...
Рейтинг: 0 / 0
18.10.2018, 11:52
    #39719285
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
apache ignite
Dmitry.а если попробовать "Static IP Finder" вместо "Multicast IP Finder" ?

https://apacheignite.readme.io/docs/tcpip-discovery

Зачем? Ноды ведь друг друга и так прекрасно видят.
...
Рейтинг: 0 / 0
18.10.2018, 11:54
    #39719286
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
apache ignite
и транзакции вроде работают именно так, как я и ожидал:
после того как первый клиент выполнил get - данные заблокировались, второй клиент ожидает лока и get ему результат не возвращает.
...
Рейтинг: 0 / 0
18.10.2018, 12:00
    #39719287
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
apache ignite
Разобрался, просто я сам затупил.
Первая нода закончила быстрее и вывела результат, вторая еще инкрементит.

Вот так все сходится.
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
        try (Ignite ignite = Ignition.start("config/ignite.xml")) {

            Thread.sleep(5_000); // do wait node communication
            IgniteCache<String, Integer> cache = ignite.getOrCreateCache("transactional-cache");

            System.out.println("Start loop");


            for(int i = 0; i < 100; i++) {
                try (Transaction tx = ignite.transactions().txStart(
                        TransactionConcurrency.PESSIMISTIC,
                        TransactionIsolation.SERIALIZABLE
                )) {
                    System.out.println(i);
                    Integer value = cache.get("val");
                    if (value == null) {
                        value = 0;
                    }
                    cache.put("val", value + 1);
                    tx.commit();
                }
                Thread.sleep(100);
            }
            Thread.sleep(5_000); // do wait other nodes
            System.out.println(cache.get("val"));
            Thread.sleep(15_000); // do wait other nodes

        }
...
Рейтинг: 0 / 0
18.10.2018, 12:03
    #39719288
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
apache ignite
Ошибки явно связаны с мультикастом

Код: plaintext
1.
2.
3.
4.
java.lang.NullPointerException
	at org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder.requestAddresses(TcpDiscoveryMulticastIpFinder.java:628)
	at org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder.access$700(TcpDiscoveryMulticastIpFinder.java:80)
	at org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder$AddressReceiver.body(TcpDiscoveryMulticastIpFinder.java:780)
	at org.apache.ignite.spi.IgniteSpiThread.run(IgniteSpiThread.java:62)

поэтому либо тестировать транзакции - либо разбираться почему в твоей сетке мультикаст не работает
...
Рейтинг: 0 / 0
18.10.2018, 12:09
    #39719290
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
apache ignite
Dmitry.Ошибки явно связаны с мультикастом

Код: plaintext
1.
2.
3.
4.
java.lang.NullPointerException
	at org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder.requestAddresses(TcpDiscoveryMulticastIpFinder.java:628)
	at org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder.access$700(TcpDiscoveryMulticastIpFinder.java:80)
	at org.apache.ignite.spi.discovery.tcp.ipfinder.multicast.TcpDiscoveryMulticastIpFinder$AddressReceiver.body(TcpDiscoveryMulticastIpFinder.java:780)
	at org.apache.ignite.spi.IgniteSpiThread.run(IgniteSpiThread.java:62)

поэтому либо тестировать транзакции - либо разбираться почему в твоей сетке мультикаст не работает

Оно не влияет на эксперимент, ноды же находят друг друга.
...
Рейтинг: 0 / 0
27.10.2018, 12:17
    #39723857
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
apache ignite
Кто-то может подсказать, что означает параметр fair ?
И про create не догоняю, в чем разница если будет true/false ?

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
    /**
     * Gets or creates reentrant lock. If reentrant lock is not found in cache and {@code create} flag
     * is {@code true}, it is created using provided name.
     *
     * @param name Name of the lock.
     * @param failoverSafe {@code True} to create failover safe lock which means that
     *      if any node leaves topology, all locks already acquired by that node are silently released
     *      and become available for other nodes to acquire. If flag is {@code false} then
     *      all threads on other nodes waiting to acquire lock are interrupted.
     * @param fair If {@code True}, fair lock will be created.
     * @param create Boolean flag indicating whether data structure should be created if does not exist.
     * @return ReentrantLock for the given name.
     * @throws IgniteException If reentrant lock could not be fetched or created.
     */
    public IgniteLock reentrantLock(String name, boolean failoverSafe, boolean fair, boolean create)
        throws IgniteException;
...
Рейтинг: 0 / 0
27.10.2018, 21:25
    #39723938
maxkar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
apache ignite
HettКто-то может подсказать, что означает параметр fair ?
И про create не догоняю, в чем разница если будет true/false ?


Начнем со второго, потому что проще. Если create == false то может быть будет Exception (если лока с именем еще нет). А если create == true - Exception не будет и лок создастся.

fair - это стандартный fair для многопоточности, он в java.util.concurrent такой же. Он контроллирует гарантию того, что конкретный поток, вызвавший lock.lock() когда-нибудь получит управление (при условии, что другие потоки корректно делают lock/unlock). Если fair == true - каждый поток, вызвавший lock.lock() получит в конце концов управление (и в целом они будут захватывать блокировку в порядке вызова метода). А если fair == false такой гарантии нет. При достаточном количестве конкурирующих за блокировку потоков звезды могут сложиться так, что какой-то поток А блокировну никогда не захватит, она будет постоянно захвачена одним из потоков B, C и D. "Конкурирующие" - это в духе

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
String name = ...;
while(true) {
  lock.lock();
  try {
    System.out.println("I am " + name);
    Thread.sleep(1000);
  } finally {
    lock.unlock();
  }
}


Можете считать, что у нас 10 таких потоков. И все они конкурируют друг с другом. И в зависимости от fair, будет либо организованная очередь на запуск в момент unlock (fair == true), либо счасливчик будет выбираться из 9 остальных случайно (fair == false, при этом не факт что строго случайно).
...
Рейтинг: 0 / 0
27.10.2018, 21:48
    #39723948
Hett
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
apache ignite
maxkar,

понял, спасибо!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / apache ignite / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]