CPVM 1.2 Setup¶
Устарело почти полностью
Пример запуска одного рантайма с включенным AppServer:
java \ -ea \ -jar runtime.jar \ -n $NODEID \ -h localhost \ -p 40124 \ --tag "test-node" \ --log FILE \ --cbtype KV \ --kv-address "localhost:10000" \ --luapath ./lua-libs \ --appserver "localhost:5678" \ --enable-test-user "true" \
Аргументы: "nodeid" (-n) - должен быть уникальным в пределах всего кластера. Без уникальности ноды с таким же id могут выйти из строя. "tag" - если задан, будет отображаться в логах для сообщений из основного event-loop ноды, в противном случае будет отображатся nodeId. "log" * FILE - вывод файл с автоматической ротацией (старые логи будут сжиматься в gz и ложится в logs/) * CONSOLE - вывод в консоль * CONSOLE_AND_FILE - все вместе "kv-address" - адреса KV-сервисов (CB, RuntimeStorage, Logs) "luapath" - если нужно подуснуть какие-то кастомные lua-библиотеки "appserver" - запуск AppServer на указанном адресе * "enable-test-user" - все AppServer-запросы без кук воспринимаются как запросы тестового пользователя "$TEST_USER"
Вывод после старта:
Спойлер (кликните для показа/скрытия){: class="spoiler_links" title="Click this ..." }
2017-08-29 07-58-29 [test-node]: CPVM 1.1.619 (82a273670fe87e105600269e7c3b70b144dbcb12) debug mode 2017-08-29 07-58-29 [test-node]: ID = 161815 2017-08-29 07-58-29 [test-node]: aeron: try launch embedded driver 2017-08-29 07-58-29 [test-node]: aeron: active driver detected 2017-08-29 07-58-29 [test-node]: aeron: IPC listen -> 105660 2017-08-29 07-58-29 [test-node]: aeron: UDP listen -> 127.0.0.1:40124 / 105660 2017-08-29 07-58-29 [test-node]: aeron: IPC listen -> 105670 2017-08-29 07-58-29 [test-node]: aeron: UDP listen -> 127.0.0.1:40134 / 12 2017-08-29 07-58-29 [test-node]: HTTP server started at http://127.0.0.1:5678/ 2017-08-29 07-58-29 [test-node]: HTTP routes: GET /account/me/ GET /account/{otherUserId} POST /auth/login POST /auth/logout POST /auth/signup GET /cb/fragments POST /cb/fragments/{frId} GET /cb/fragments/{frId}/bytecode POST /cb/fragments/{frId}/bytecode GET /cb/fragments/{frId}/meta POST /cb/fragments/{frId}/meta GET /cb/fragments/{frId}/source POST /cb/fragments/{frId}/source GET /cb/users/{otherUserId}/fragments POST /managment/setupTopology POST /managment/terminate POST /vm/start POST /vm/stop GET /vm/transactions/ GET /vm/transactions/{trId}/lpf/byFragment/{frId} GET /vm/transactions/{trId}/statistics GET /vm/transactions/{trId}/status GET /vm/version 2017-08-29 07-58-29 [test-node]: using KV codebase 2017-08-29 07-58-29 [test-node]: optimal parallelism: 8 2017-08-29 07-58-29 [test-node]: new remote interface: ru.acapella.runtime.api.internal.BaseNodeApi 2017-08-29 07-58-29 [test-node]: new remote interface: ru.acapella.runtime.HeartbeatAPI 2017-08-29 07-58-29 [test-node]: new remote interface: ru.acapella.runtime.api.internal.FragmentRunAPI 2017-08-29 07-58-29 [test-node]: new remote interface: ru.acapella.runtime.FailoverApi 2017-08-29 07-58-29 [test-node]: ready 2017-08-29 07-58-29 [test-node]: aeron: try connect: ipc(75536)
Вывод HTTP server started at http://127.0.0.1:5678/
значит AppServer готов к работе.
- Если Runtime поднимается для теста можно использовать параметр
--enable-test-user
, который позволяет обращается ко всему API без авторизации. - Иначе необходимо зарегистрировать пользвателя:
curl -H "Content-Type: application/json" -d '{"username":"PainInTheAss","password":"33fnDF9unfwEFz1Fdsf87","email":"killthemall@gmail.com","firstName":"Max","lastName":"Payne"}' -X POST http://localhost:5678/auth/signup
- Авторизация. В хедер
Authorization
ложим пароль в base64.
curl -d "username=PainInTheAss" --header "Authorization: MzNmbkRGRjl1bmZ3RUZ6MUZkc2Y4Nw==" -X POST "http://localhost:5678/auth/login" {"token":"7b03fedaa44f4a5688f49edd7d285033"}
- Соединяем ноды с адресами "host:40124", "host:40125", "host:40126":
curl -H "Content-Type: application/json" -d '[["host:40124", "host:40125"], ["host:40124", "host:40126"], ["host:40125", "host:40126"]]' -X POST http://localhost:5678/managment/setupTopology
В логах должно отобразится:
2017-08-29 08-39-07 [node1]: connected to node2 2017-08-29 08-39-07 [node1]: connected to node3 2017-08-29 08-39-07 [node2]: connected to node1 2017-08-29 08-39-08 [node2]: connected to node3 2017-08-29 08-39-07 [node3]: connected to node1 2017-08-29 08-39-08 [node3]: connected to node2
- Запуск простого фрагмента через cli-launcher.
TODO описание машины и фрагмента
Сначала запустим mult_root.lua
с параметром 50
в "транзакционном" режиме, без параллельности, что соответсвует пресету "transactional":
/usr/bin/python3.6 main.py --address localhost:5678 --fname mult_root --preset transactional Using 'transactional' preset Uploading 'mult_2_py' Uploading 'mult_2' Uploading 'mult_1_py' Uploading 'mult_root_py' Uploading 'mult_1' Uploading 'mult_root' Start fragment: mult_root Transaction started: 84ef24ca75849e6 Transaction completed Execution time: Without overheads (worker): 43 ms Total (worker): 0:01:03.252343 Total (node): 0:01:03.252890 Transaction timestamps: Start: 13:15:28.563000 [2017-08-30] End: 13:16:31.816000 [2017-08-30] Counters: Total conflicts: 0 Total restarts: 0 Async calls: 0 Sync calls: 71 TVM reads: 690902 TVM writes: 14703 TVM traffic: TVM bytes read: 1.01 MB TVM bytes write: 76.54 KB
Включим параллельность изменив пресет на "acapella":
/usr/bin/python3.6 main.py --address localhost:5678 --fname mult_root --preset acapella Using 'acapella' preset Uploading 'mult_2_py' Uploading 'mult_2' Uploading 'mult_1_py' Uploading 'mult_root_py' Uploading 'mult_1' Uploading 'mult_root' Start fragment: mult_root Transaction started: 33f965fc70634260 Transaction completed Execution time: Without overheads (worker): 57 ms Total (worker): 59 ms Total (node): 0:00:35.805273 Transaction timestamps: Start: 13:17:20.565000 [2017-08-30] End: 13:17:56.371000 [2017-08-30] Counters: Total conflicts: 0 Total restarts: 0 Async calls: 71 Sync calls: 0 TVM reads: 690902 TVM writes: 14703 TVM traffic: TVM bytes read: 1.02 MB TVM bytes write: 76.71 KB
Общее время исполнения падает:
Total (node): 0:01:02.690510 Total (node): 0:00:35.805273
- Масштабирование
Запускаем mult_root.lua
с параметром 30
на кластере с одной нодой node2
(одна машина, 4 ядра (8 HT)):
/usr/bin/python3.6 main.py --address localhost:5678 --fname mult_root --preset acapella Using 'acapella' preset Uploading 'mult_2_py' Uploading 'mult_2' Uploading 'mult_1_py' Uploading 'mult_root_py' Uploading 'mult_1' Uploading 'mult_root' Start fragment: mult_root Transaction started: 23a1c3cd264343e7 Transaction completed Execution time: Without overheads (worker): 12 ms Total (worker): 16 ms Total (node): 0:00:08.753459 Transaction timestamps: Start: 10:46:11.108000 [2017-08-31] End: 10:46:19.021000 [2017-08-31] Counters: Total conflicts: 0 Total restarts: 0 Async calls: 47 Sync calls: 0 TVM reads: 470113 TVM writes: 94695 TVM traffic: TVM bytes read: 549.97 KB TVM bytes write: 20.86 KB
Запустим еще одну ноду node1
на второй машине, c аналогичной конфгурацией, 4 ядра (8 HT)). Соединим их:
2017-08-31 10-48-32 [node2]: connected to node1 udp(192.168.1.19:40123 [105659]) (131081) 2017-08-31 10-48-32 [node1]: connected to node2 udp(192.168.1.20:40124 [105660]) (131082)
Запустим тест еще раз:
/usr/bin/python3.6 main.py --address localhost:5678 --fname mult_root --preset acapella Using 'acapella' preset Uploading 'mult_2_py' Uploading 'mult_2' Uploading 'mult_1_py' Uploading 'mult_root_py' Uploading 'mult_1' Uploading 'mult_root' Start fragment: mult_root Transaction started: 23a1c3cd264343e7 Transaction completed Execution time: Without overheads (worker): 11 ms Total (worker): 19 ms Total (node): 0:00:05.223781 Transaction timestamps: Start: 10-49-05.570000 [2017-08-31] End: 10-49-10.798000 [2017-08-31] Counters: Total conflicts: 0 Total restarts: 0 Async calls: 47 Sync calls: 0 TVM reads: 470113 TVM writes: 94695 TVM traffic: TVM bytes read: 543.65 KB TVM bytes write: 19.99 KB
Общее время исполнения падает:
Total (node): 0:00:08.753459 Total (node): 0:00:05.223781
В логах обоих узлов можно наблюдать распределение задач:
Спойлер (кликните для показа/скрытия){: class="spoiler_links" title="Click this ..." }
2017-08-31 10-49-05 [node2]: existing fragment version: 111669149696 2017-08-31 10-49-05 [node2]: uploading fragment: mult_2_py(27) 2017-08-31 10-49-05 [node2]: uploading fragment finished: mult_2_py(27) 2017-08-31 10-49-05 [node2]: try upload fragment: mult_2 2017-08-31 10-49-05 [node2]: existing fragment version: 111669149696 2017-08-31 10-49-05 [node2]: uploading fragment: mult_2(27) 2017-08-31 10-49-05 [node2]: uploading fragment finished: mult_2(27) 2017-08-31 10-49-05 [node2]: try upload fragment: mult_1_py 2017-08-31 10-49-05 [node2]: existing fragment version: 111669149696 2017-08-31 10-49-05 [node2]: uploading fragment: mult_1_py(27) 2017-08-31 10-49-05 [node2]: uploading fragment finished: mult_1_py(27) 2017-08-31 10-49-05 [node2]: try upload fragment: mult_root_py 2017-08-31 10-49-05 [node2]: existing fragment version: 111669149696 2017-08-31 10-49-05 [node2]: uploading fragment: mult_root_py(27) 2017-08-31 10-49-05 [node2]: uploading fragment finished: mult_root_py(27) 2017-08-31 10-49-05 [node2]: try upload fragment: mult_1 2017-08-31 10-49-05 [node2]: existing fragment version: 111669149696 2017-08-31 10-49-05 [node2]: uploading fragment: mult_1(27) 2017-08-31 10-49-05 [node2]: uploading fragment finished: mult_1(27) 2017-08-31 10-49-05 [node2]: try upload fragment: mult_root 2017-08-31 10-49-05 [node2]: existing fragment version: 111669149696 2017-08-31 10-49-05 [node2]: uploading fragment: mult_root(27) 2017-08-31 10-49-05 [node2]: uploading fragment finished: mult_root(27) 2017-08-31 10-49-05 [node2]: try upload fragment: fr0 2017-08-31 10-49-05 [node2]: existing fragment version: 38654705664 2017-08-31 10-49-05 [node2]: uploading fragment: fr0(10) 2017-08-31 10-49-05 [node2]: uploading fragment finished: fr0(10) 2017-08-31 10-49-05 [node2]: RRF: {mult_root(HEAD), 516d7d23f078447f-0.0} 2017-08-31 10-49-05 [node2]: request prototype mult_root(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-05 [node2]: transaction status updated: 516d7d23f078447f -> running 2017-08-31 10-49-05 [node2]: request fragment 'mult_root(27)' from CodeBase 2017-08-31 10-49-05 [node2]: prototype cached: mult_root(27) 2017-08-31 10-49-05 [node2]: start fragment: {mult_root(27), 516d7d23f078447f-0.0} 2017-08-31 10-49-05 [worker4294967297]: start new thread: Thread[ForkJoinPool-1-worker-25,5,main] 2017-08-31 10-49-05 [worker4294967297]: compile fragment: mult_root(27) 2017-08-31 10-49-05 [worker4294967297]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-05 [worker4294967298]: start new thread: Thread[ForkJoinPool-1-worker-18,5,main] 2017-08-31 10-49-06 [node2]: RRFFF: {mult_root -> mult_1(HEAD), 516d7d23f078447f-0.4.0} 2017-08-31 10-49-06 [node2]: request prototype mult_1(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-06 [node2]: request fragment 'mult_1(27)' from CodeBase 2017-08-31 10-49-06 [node2]: prototype cached: mult_1(27) 2017-08-31 10-49-06 [node2]: start fragment: {mult_root -> mult_1(27), 516d7d23f078447f-0.4.0} 2017-08-31 10-49-06 [worker4294967297]: compile fragment: mult_1(27) 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.139.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.140.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.141.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.142.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.143.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.144.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.145.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.146.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.147.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.148.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.149.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.150.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.151.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.152.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.153.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.154.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.155.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.156.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.157.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.158.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.159.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.160.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.161.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.162.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.163.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.164.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.165.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.166.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.167.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.168.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.169.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.170.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.171.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.172.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.173.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.174.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.175.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.176.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.177.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.178.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.179.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.180.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.181.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.182.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.183.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.184.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.185.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.186.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.187.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: RRFFF: {mult_1 -> mult_2(HEAD), 516d7d23f078447f-0.4.255x19.188.0} 2017-08-31 10-49-07 [node2]: request prototype mult_2(HEAD). transaction: 516d7d23f078447f 2017-08-31 10-49-07 [node2]: new shared stream: [transactions, 516d7d23f078447f, logs, log] 2017-08-31 10-49-07 [node2]: register: SharedStream(transactions/516d7d23f078447f/logs/log) 2017-08-31 10-49-07 [node2]: request fragment 'mult_2(27)' from CodeBase 2017-08-31 10-49-07 [node2]: prototype cached: mult_2(27) 2017-08-31 10-49-07 [node2]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.139.0} 2017-08-31 10-49-07 [worker4294967298]: compile fragment: mult_2(27) 2017-08-31 10-49-07 [worker4294967298]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [node2]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.153.0} 2017-08-31 10-49-07 [worker4294967299]: start new thread: Thread[ForkJoinPool-1-worker-11,5,main] 2017-08-31 10-49-07 [worker4294967299]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [node2]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.154.0} 2017-08-31 10-49-07 [worker4294967300]: start new thread: Thread[ForkJoinPool-1-worker-4,5,main] 2017-08-31 10-49-07 [worker4294967300]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [node2]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.155.0} 2017-08-31 10-49-07 [worker4294967301]: start new thread: Thread[ForkJoinPool-1-worker-29,5,main] 2017-08-31 10-49-07 [worker4294967301]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [node2]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.156.0} 2017-08-31 10-49-07 [node2]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.157.0} 2017-08-31 10-49-07 [worker4294967302]: start new thread: Thread[ForkJoinPool-1-worker-22,5,main] 2017-08-31 10-49-07 [worker4294967304]: start new thread: Thread[ForkJoinPool-1-worker-8,5,main] 2017-08-31 10-49-07 [worker4294967302]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [worker4294967304]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [node2]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.158.0} 2017-08-31 10-49-07 [worker4294967303]: start new thread: Thread[ForkJoinPool-1-worker-15,5,main] 2017-08-31 10-49-07 [worker4294967303]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [worker4294967305]: start new thread: Thread[ForkJoinPool-1-worker-1,5,main] 2017-08-31 10-49-07 [node2]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.159.0} 2017-08-31 10-49-07 [worker4294967305]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [node2]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.160.0} 2017-08-31 10-49-07 [worker4294967306]: start new thread: Thread[ForkJoinPool-1-worker-26,5,main] 2017-08-31 10-49-07 [worker4294967306]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [node2]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.161.0} 2017-08-31 10-49-07 [worker4294967307]: start new thread: Thread[ForkJoinPool-1-worker-19,5,main] 2017-08-31 10-49-07 [worker4294967307]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [node2]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.162.0} 2017-08-31 10-49-07 [worker4294967308]: start new thread: Thread[ForkJoinPool-1-worker-12,5,main] 2017-08-31 10-49-07 [worker4294967308]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [node2]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.163.0} 2017-08-31 10-49-07 [worker4294967309]: start new thread: Thread[ForkJoinPool-1-worker-5,5,main] 2017-08-31 10-49-07 [worker4294967309]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [node2]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.164.0} 2017-08-31 10-49-07 [worker4294967310]: start new thread: Thread[ForkJoinPool-1-worker-30,5,main] 2017-08-31 10-49-07 [worker4294967310]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [node2]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.165.0} 2017-08-31 10-49-07 [worker4294967311]: start new thread: Thread[ForkJoinPool-1-worker-23,5,main] 2017-08-31 10-49-07 [worker4294967311]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [node2]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.166.0} 2017-08-31 10-49-07 [node2]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.167.0} 2017-08-31 10-49-07 [worker4294967312]: start new thread: Thread[ForkJoinPool-1-worker-16,5,main] 2017-08-31 10-49-07 [node2]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.168.0} 2017-08-31 10-49-07 [worker4294967313]: start new thread: Thread[ForkJoinPool-1-worker-9,5,main] 2017-08-31 10-49-07 [worker4294967312]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [worker4294967315]: start new thread: Thread[ForkJoinPool-1-worker-27,5,main] 2017-08-31 10-49-07 [worker4294967314]: start new thread: Thread[ForkJoinPool-1-worker-2,5,main] 2017-08-31 10-49-07 [worker4294967315]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [node2]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.169.0} 2017-08-31 10-49-07 [worker4294967314]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [node2]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.170.0} 2017-08-31 10-49-07 [worker4294967313]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [worker4294967316]: start new thread: Thread[ForkJoinPool-1-worker-20,5,main] 2017-08-31 10-49-07 [worker4294967316]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [worker4294967317]: start new thread: Thread[ForkJoinPool-1-worker-13,5,main] 2017-08-31 10-49-07 [node2]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.140.0} 2017-08-31 10-49-07 [node2]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.171.0} 2017-08-31 10-49-07 [worker4294967318]: start new thread: Thread[ForkJoinPool-1-worker-6,5,main] 2017-08-31 10-49-07 [worker4294967318]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [node2]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.172.0} 2017-08-31 10-49-07 [worker4294967319]: start new thread: Thread[ForkJoinPool-1-worker-31,5,main] 2017-08-31 10-49-07 [worker4294967317]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [worker4294967319]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [worker4294967320]: start new thread: Thread[ForkJoinPool-1-worker-24,5,main] 2017-08-31 10-49-07 [node2]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.173.0} 2017-08-31 10-49-07 [worker4294967320]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [node2]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.174.0} 2017-08-31 10-49-07 [node2]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.175.0} 2017-08-31 10-49-07 [node2]: RRF {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.176.0} to 131081 2017-08-31 10-49-07 [node2]: RRF {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.177.0} to 131081 2017-08-31 10-49-07 [node2]: RRF {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.178.0} to 131081 2017-08-31 10-49-07 [node2]: RRF {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.141.0} to 131081 2017-08-31 10-49-07 [node2]: RRF {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.179.0} to 131081 2017-08-31 10-49-07 [node2]: RRF {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.180.0} to 131081 2017-08-31 10-49-07 [node2]: RRF {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.181.0} to 131081 2017-08-31 10-49-07 [node2]: RRF {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.182.0} to 131081 2017-08-31 10-49-07 [node2]: RRF {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.183.0} to 131081 2017-08-31 10-49-07 [node2]: RRF {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.184.0} to 131081 2017-08-31 10-49-07 [node2]: RRF {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.185.0} to 131081 2017-08-31 10-49-07 [node2]: RRF {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.186.0} to 131081 2017-08-31 10-49-07 [node2]: RRF {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.187.0} to 131081 2017-08-31 10-49-07 [node2]: RRF {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.142.0} to 131081 2017-08-31 10-49-07 [node2]: RRF {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.188.0} to 131081 2017-08-31 10-49-07 [node2]: RRF {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.143.0} to 131081 2017-08-31 10-49-07 [node2]: RRF {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.144.0} to 131081 2017-08-31 10-49-07 [node2]: RRF {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.145.0} to 131081 2017-08-31 10-49-07 [node2]: RRF {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.146.0} to 131081 2017-08-31 10-49-07 [node2]: RRF {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.147.0} to 131081 2017-08-31 10-49-07 [node2]: RRF {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.148.0} to 131081 2017-08-31 10-49-07 [node2]: RRF {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.149.0} to 131081 2017-08-31 10-49-07 [node2]: RRF {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.150.0} to 131081 2017-08-31 10-49-07 [node2]: RRF {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.151.0} to 131081 2017-08-31 10-49-07 [node2]: RRF {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.152.0} to 131081 2017-08-31 10-49-07 [node2]: SharedStream(transactions/516d7d23f078447f/logs/log): sync 23 bytes 2017-08-31 10-49-07 [node2]: reserveArea(tryReuse = null). Batch -> 10 2017-08-31 10-49-07 [node2]: SharedStream(transactions/516d7d23f078447f/logs/log): reserved -> 0..10 2017-08-31 10-49-07 [node2]: SharedStream(transactions/516d7d23f078447f/logs/log): (0..10) is expired 2017-08-31 10-49-09 [node2]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.157.0} 2017-08-31 10-49-09 [node2]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.166.0} 2017-08-31 10-49-09 [node2]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.162.0} 2017-08-31 10-49-09 [node2]: RRF: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.152.0} 2017-08-31 10-49-09 [node2]: request cycle: mult_2(27)[516d7d23f078447f-0.4.255x19.152.0] 2017-08-31 10-49-09 [node2]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.152.0} 2017-08-31 10-49-09 [node2]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.161.0} 2017-08-31 10-49-09 [node2]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.171.0} 2017-08-31 10-49-09 [node2]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.167.0} 2017-08-31 10-49-09 [node2]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.173.0} 2017-08-31 10-49-09 [node2]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.154.0} 2017-08-31 10-49-09 [node2]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.159.0} 2017-08-31 10-49-09 [node2]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.153.0} 2017-08-31 10-49-09 [node2]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.158.0} 2017-08-31 10-49-09 [node2]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.160.0} 2017-08-31 10-49-09 [node2]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.169.0} 2017-08-31 10-49-09 [node2]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.165.0} 2017-08-31 10-49-09 [node2]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.140.0} 2017-08-31 10-49-09 [node2]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.168.0} 2017-08-31 10-49-09 [node2]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.139.0} 2017-08-31 10-49-09 [node2]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.163.0} 2017-08-31 10-49-09 [node2]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.155.0} 2017-08-31 10-49-09 [node2]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.164.0} 2017-08-31 10-49-09 [node2]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.172.0} 2017-08-31 10-49-09 [node2]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.156.0} 2017-08-31 10-49-09 [node2]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.170.0} 2017-08-31 10-49-10 [node2]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.175.0} 2017-08-31 10-49-10 [node2]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.174.0} 2017-08-31 10-49-10 [node2]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.152.0} 2017-08-31 10-49-10 [node2]: job completed: {mult_root -> mult_1(27), 516d7d23f078447f-0.4.0} 2017-08-31 10-49-10 [node2]: job completed: {mult_root(27), 516d7d23f078447f-0.0} 2017-08-31 10-49-10 [node2]: tr executed: {mult_root(27), 516d7d23f078447f-0.0} FragmentRunResult{status=OK, errorString='null', conflicts=null} 2017-08-31 10-49-10 [node2]: SharedStream(transactions/516d7d23f078447f/logs/log): request termination 2017-08-31 10-49-10 [node2]: SharedStream(users/transactions/516d7d23f078447f/logs/registry/exclusiveLogs): request termination 2017-08-31 10-49-10 [node2]: SharedStream(users/transactions/516d7d23f078447f/logs/registry/exclusiveLogs): terminated 2017-08-31 10-49-10 [node2]: SharedStream(transactions/516d7d23f078447f/logs/log): terminated 2017-08-31 10-49-10 [node2]: transaction status updated: 516d7d23f078447f -> finished
Обозначения:
start fragment: ...
- локальный запуск исполнения фрагментаRRF: ...
- Request Run Fragment - кто-то запросил исполнение фрагментаRRFFF: ...
- Request Run Fragment From Fragment - запуск подфрагментаmult_1 -> mult_2(27)
- идентификатор запуска фрагментаmult_2
версии 27 изmult_1
mult_2(HEAD)
- последняя версия фрагментаmult_2
516d7d23f078447f-0.4.255x19.186.0
- глобальный идентификатор запуска фрагмента. Первая часть "516d7d23f078447f
" - transaction ID, вторая часть "0.4.255x19.186.0
" - DAM в сокращенной форме ("255x19
" означает повторение255
19 раз подряд)
За счет того, что запускаемые задачи довольно тяжелые, нагрузка распределилась почти поровну:
Спойлер (кликните для показа/скрытия){: class="spoiler_links" title="Click this ..." }
2017-08-31 10-49-07 [node1]: RRF: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.176.0} 2017-08-31 10-49-07 [node1]: request fragment 'mult_2(27)' from CodeBase 2017-08-31 10-49-07 [node1]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.176.0} 2017-08-31 10-49-07 [worker4294967297]: start new thread: Thread[ForkJoinPool-1-worker-25,5,main] 2017-08-31 10-49-07 [node1]: RRF: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.177.0} 2017-08-31 10-49-07 [node1]: request fragment 'mult_2(27)' from CodeBase 2017-08-31 10-49-07 [worker4294967297]: compile fragment: mult_2(27) 2017-08-31 10-49-07 [node1]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.177.0} 2017-08-31 10-49-07 [worker4294967298]: start new thread: Thread[ForkJoinPool-1-worker-18,5,main] 2017-08-31 10-49-07 [worker4294967298]: compile fragment: mult_2(27) 2017-08-31 10-49-07 [node1]: RRF: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.178.0} 2017-08-31 10-49-07 [node1]: request fragment 'mult_2(27)' from CodeBase 2017-08-31 10-49-07 [node1]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.178.0} 2017-08-31 10-49-07 [worker4294967299]: start new thread: Thread[ForkJoinPool-1-worker-11,5,main] 2017-08-31 10-49-07 [worker4294967299]: compile fragment: mult_2(27) 2017-08-31 10-49-07 [node1]: RRF: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.141.0} 2017-08-31 10-49-07 [node1]: request fragment 'mult_2(27)' from CodeBase 2017-08-31 10-49-07 [node1]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.141.0} 2017-08-31 10-49-07 [worker4294967300]: start new thread: Thread[ForkJoinPool-1-worker-4,5,main] 2017-08-31 10-49-07 [worker4294967300]: compile fragment: mult_2(27) 2017-08-31 10-49-07 [node1]: RRF: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.179.0} 2017-08-31 10-49-07 [node1]: request fragment 'mult_2(27)' from CodeBase 2017-08-31 10-49-07 [node1]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.179.0} 2017-08-31 10-49-07 [worker4294967301]: start new thread: Thread[ForkJoinPool-1-worker-29,5,main] 2017-08-31 10-49-07 [worker4294967301]: compile fragment: mult_2(27) 2017-08-31 10-49-07 [node1]: RRF: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.180.0} 2017-08-31 10-49-07 [node1]: request fragment 'mult_2(27)' from CodeBase 2017-08-31 10-49-07 [node1]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.180.0} 2017-08-31 10-49-07 [worker4294967302]: start new thread: Thread[ForkJoinPool-1-worker-22,5,main] 2017-08-31 10-49-07 [worker4294967302]: compile fragment: mult_2(27) 2017-08-31 10-49-07 [node1]: RRF: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.181.0} 2017-08-31 10-49-07 [node1]: request fragment 'mult_2(27)' from CodeBase 2017-08-31 10-49-07 [node1]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.181.0} 2017-08-31 10-49-07 [worker4294967303]: start new thread: Thread[ForkJoinPool-1-worker-15,5,main] 2017-08-31 10-49-07 [worker4294967303]: compile fragment: mult_2(27) 2017-08-31 10-49-07 [node1]: RRF: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.182.0} 2017-08-31 10-49-07 [node1]: request fragment 'mult_2(27)' from CodeBase 2017-08-31 10-49-07 [node1]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.182.0} 2017-08-31 10-49-07 [worker4294967304]: start new thread: Thread[ForkJoinPool-1-worker-8,5,main] 2017-08-31 10-49-07 [worker4294967304]: compile fragment: mult_2(27) 2017-08-31 10-49-07 [node1]: RRF: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.183.0} 2017-08-31 10-49-07 [node1]: request fragment 'mult_2(27)' from CodeBase 2017-08-31 10-49-07 [node1]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.183.0} 2017-08-31 10-49-07 [worker4294967305]: start new thread: Thread[ForkJoinPool-1-worker-1,5,main] 2017-08-31 10-49-07 [worker4294967305]: compile fragment: mult_2(27) 2017-08-31 10-49-07 [node1]: RRF: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.184.0} 2017-08-31 10-49-07 [node1]: request fragment 'mult_2(27)' from CodeBase 2017-08-31 10-49-07 [node1]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.184.0} 2017-08-31 10-49-07 [worker4294967306]: start new thread: Thread[ForkJoinPool-1-worker-26,5,main] 2017-08-31 10-49-07 [worker4294967306]: compile fragment: mult_2(27) 2017-08-31 10-49-07 [node1]: RRF: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.185.0} 2017-08-31 10-49-07 [node1]: request fragment 'mult_2(27)' from CodeBase 2017-08-31 10-49-07 [node1]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.185.0} 2017-08-31 10-49-07 [worker4294967307]: start new thread: Thread[ForkJoinPool-1-worker-19,5,main] 2017-08-31 10-49-07 [worker4294967307]: compile fragment: mult_2(27) 2017-08-31 10-49-07 [node1]: RRF: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.186.0} 2017-08-31 10-49-07 [node1]: request fragment 'mult_2(27)' from CodeBase 2017-08-31 10-49-07 [node1]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.186.0} 2017-08-31 10-49-07 [worker4294967308]: start new thread: Thread[ForkJoinPool-1-worker-12,5,main] 2017-08-31 10-49-07 [worker4294967308]: compile fragment: mult_2(27) 2017-08-31 10-49-07 [node1]: RRF: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.187.0} 2017-08-31 10-49-07 [node1]: request fragment 'mult_2(27)' from CodeBase 2017-08-31 10-49-07 [node1]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.187.0} 2017-08-31 10-49-07 [worker4294967309]: start new thread: Thread[ForkJoinPool-1-worker-5,5,main] 2017-08-31 10-49-07 [worker4294967309]: compile fragment: mult_2(27) 2017-08-31 10-49-07 [node1]: RRF: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.142.0} 2017-08-31 10-49-07 [node1]: request fragment 'mult_2(27)' from CodeBase 2017-08-31 10-49-07 [node1]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.142.0} 2017-08-31 10-49-07 [worker4294967310]: start new thread: Thread[ForkJoinPool-1-worker-30,5,main] 2017-08-31 10-49-07 [worker4294967310]: compile fragment: mult_2(27) 2017-08-31 10-49-07 [node1]: RRF: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.188.0} 2017-08-31 10-49-07 [node1]: request fragment 'mult_2(27)' from CodeBase 2017-08-31 10-49-07 [node1]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.188.0} 2017-08-31 10-49-07 [worker4294967311]: start new thread: Thread[ForkJoinPool-1-worker-23,5,main] 2017-08-31 10-49-07 [worker4294967311]: compile fragment: mult_2(27) 2017-08-31 10-49-07 [node1]: RRF: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.143.0} 2017-08-31 10-49-07 [node1]: request fragment 'mult_2(27)' from CodeBase 2017-08-31 10-49-07 [node1]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.143.0} 2017-08-31 10-49-07 [node1]: RRF: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.144.0} 2017-08-31 10-49-07 [node1]: request fragment 'mult_2(27)' from CodeBase 2017-08-31 10-49-07 [node1]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.144.0} 2017-08-31 10-49-07 [node1]: RRF: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.145.0} 2017-08-31 10-49-07 [node1]: request fragment 'mult_2(27)' from CodeBase 2017-08-31 10-49-07 [node1]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.145.0} 2017-08-31 10-49-07 [node1]: RRF: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.146.0} 2017-08-31 10-49-07 [node1]: request fragment 'mult_2(27)' from CodeBase 2017-08-31 10-49-07 [node1]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.146.0} 2017-08-31 10-49-07 [node1]: RRF: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.147.0} 2017-08-31 10-49-07 [node1]: request fragment 'mult_2(27)' from CodeBase 2017-08-31 10-49-07 [node1]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.147.0} 2017-08-31 10-49-07 [node1]: RRF: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.148.0} 2017-08-31 10-49-07 [node1]: request fragment 'mult_2(27)' from CodeBase 2017-08-31 10-49-07 [node1]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.148.0} 2017-08-31 10-49-07 [node1]: RRF: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.149.0} 2017-08-31 10-49-07 [node1]: request fragment 'mult_2(27)' from CodeBase 2017-08-31 10-49-07 [node1]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.149.0} 2017-08-31 10-49-07 [node1]: RRF: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.150.0} 2017-08-31 10-49-07 [node1]: request fragment 'mult_2(27)' from CodeBase 2017-08-31 10-49-07 [node1]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.150.0} 2017-08-31 10-49-07 [worker4294967313]: start new thread: Thread[ForkJoinPool-1-worker-9,5,main] 2017-08-31 10-49-07 [node1]: RRF: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.151.0} 2017-08-31 10-49-07 [node1]: request fragment 'mult_2(27)' from CodeBase 2017-08-31 10-49-07 [node1]: start fragment: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.151.0} 2017-08-31 10-49-07 [node1]: RRF: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.152.0} 2017-08-31 10-49-07 [worker4294967305]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [node1]: no suitable nodes for: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.152.0} 2017-08-31 10-49-07 [worker4294967312]: start new thread: Thread[ForkJoinPool-1-worker-16,5,main] 2017-08-31 10-49-07 [worker4294967314]: start new thread: Thread[ForkJoinPool-1-worker-2,5,main] 2017-08-31 10-49-07 [worker4294967313]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [worker4294967312]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [worker4294967302]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [worker4294967309]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [worker4294967301]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [worker4294967304]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [worker4294967303]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [worker4294967298]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [worker4294967315]: start new thread: Thread[ForkJoinPool-1-worker-27,5,main] 2017-08-31 10-49-07 [worker4294967300]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [worker4294967311]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [worker4294967314]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [worker4294967316]: start new thread: Thread[ForkJoinPool-1-worker-20,5,main] 2017-08-31 10-49-07 [worker4294967299]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [worker4294967310]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [worker4294967297]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [worker4294967306]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [worker4294967308]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [worker4294967307]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [worker4294967318]: start new thread: Thread[ForkJoinPool-1-worker-13,5,main] 2017-08-31 10-49-07 [worker4294967317]: start new thread: Thread[ForkJoinPool-1-worker-6,5,main] 2017-08-31 10-49-07 [worker4294967315]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [worker4294967319]: start new thread: Thread[ForkJoinPool-1-worker-31,5,main] 2017-08-31 10-49-07 [worker4294967318]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [worker4294967319]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [worker4294967316]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [worker4294967317]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-07 [node1]: prototype cached: mult_2(27) 2017-08-31 10-49-07 [worker4294967320]: start new thread: Thread[ForkJoinPool-1-worker-24,5,main] 2017-08-31 10-49-07 [worker4294967320]: new TVM client: 127.0.0.1:6379 2017-08-31 10-49-09 [node1]: RRF {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.152.0} to 131082 (rebalance) 2017-08-31 10-49-09 [node1]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.186.0} 2017-08-31 10-49-09 [node1]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.177.0} 2017-08-31 10-49-09 [node1]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.180.0} 2017-08-31 10-49-09 [node1]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.151.0} 2017-08-31 10-49-09 [node1]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.147.0} 2017-08-31 10-49-09 [node1]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.176.0} 2017-08-31 10-49-09 [node1]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.182.0} 2017-08-31 10-49-09 [node1]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.184.0} 2017-08-31 10-49-09 [node1]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.146.0} 2017-08-31 10-49-09 [node1]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.178.0} 2017-08-31 10-49-09 [node1]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.181.0} 2017-08-31 10-49-09 [node1]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.150.0} 2017-08-31 10-49-09 [node1]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.183.0} 2017-08-31 10-49-09 [node1]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.187.0} 2017-08-31 10-49-09 [node1]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.148.0} 2017-08-31 10-49-09 [node1]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.142.0} 2017-08-31 10-49-09 [node1]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.185.0} 2017-08-31 10-49-09 [node1]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.188.0} 2017-08-31 10-49-09 [node1]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.143.0} 2017-08-31 10-49-09 [node1]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.144.0} 2017-08-31 10-49-09 [node1]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.141.0} 2017-08-31 10-49-09 [node1]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.179.0} 2017-08-31 10-49-10 [node1]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.149.0} 2017-08-31 10-49-10 [node1]: job completed: {mult_1 -> mult_2(27), 516d7d23f078447f-0.4.255x19.145.0}
- Failover.
Запустим 3 узла: node1
/node2
/node3
(node id: 131081, 131082, 13103), на каждом включим AppServer.
Оптравим запрос на старт длинной транзакции на node2
.
При включенном параметре запуска failover
на всех нодах с AppServer можно будет увидеть следующее:
2017-08-30 11-30-48 [node1]: failover initialized: failover(8954e80fab9e4be1, n=3){131081, {131083, 131082}} 2017-08-30 11-30-48 [node2]: failover initialized: failover(8954e80fab9e4be1, n=3){131082, {131081, 131083}} 2017-08-30 11-30-48 [node3]: failover initialized: failover(8954e80fab9e4be1, n=3){131083, {131081, 131082}}
После убийства node2
, ноды иницируют перевыборы и выйгрывает node1
, которая перезапускает транзакцию:
2017-08-30 11-30-50 [node1]: entry node131082 is dead. Start election: failover(8954e80fab9e4be1, n=2){131081, {131083, 131082}} 2017-08-30 11-30-50 [node1]: election succeed. Restart transaction 2017-08-30 11-30-50 [node1]: restart transaction: 8954e80fab9e4be1 2017-08-30 11-30-50 [node3]: entry node131082 is dead. Start election: failover(8954e80fab9e4be1, n=2){131083, {131081, 131082}} 2017-08-30 11-30-50 [node3]: election failed.