powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / apache ignite
21 сообщений из 21, страница 1 из 1
apache ignite
    #39718371
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поясните,
если инстанс запускается как отдельный сервис, как можно задать 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
apache ignite
    #39718418
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оказывается нельзя.
Нужно настраивать на сервере. Это, конечно, очень не практично.

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

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


Код: 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
apache ignite
    #39719209
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По дефолту repeteable read и pessimistic concurency.
Пробовал и так:

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



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

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

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

пробовал?

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

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

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

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

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

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

Вот так все сходится.
Код: 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
apache ignite
    #39719288
Фотография 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
apache ignite
    #39719290
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
apache ignite
    #39723857
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто-то может подсказать, что означает параметр 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
apache ignite
    #39723938
maxkar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
apache ignite
    #39723948
Фотография Hett
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maxkar,

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


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