Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ccfraft!AdvanceCommitIndex advance to the smalles possible index, whereas raft.h advances to the largest possible one. #5879

Merged
merged 8 commits into from
Jan 5, 2024

Conversation

lemmy
Copy link
Contributor

@lemmy lemmy commented Dec 20, 2023

Originally found in #5798.

@lemmy lemmy added the tla TLA+ specifications label Dec 20, 2023
@lemmy lemmy force-pushed the mku-AdvanceCommitIndexOptimization branch from 37aea57 to b27f894 Compare December 20, 2023 21:15
@ghost
Copy link

ghost commented Dec 20, 2023

mku-AdvanceCommitIndexOptimization@79936 aka 20240105.19 vs main ewma over 20 builds from 79678 to 79931

Click to see table

main

build_id build_number pi_basic_mt_sgx_cft^ pi_basic_mt_sgx_cft_mem Commit latency factor tpcc_sgx_cft^ tpcc_sgx_cft_mem ls_sgx_cft^ ls_sgx_cft_mem pi_ls_sgx_cft^ pi_ls_sgx_cft_mem pi_basic_sgx_cft^ pi_basic_sgx_cft_mem pi_basic_js_sgx_cft^ pi_basic_js_sgx_cft_mem ls_jwt_sgx_cft^ ls_jwt_sgx_cft_mem pi_ls_jwt_sgx_cft^ pi_ls_jwt_sgx_cft_mem pi_basic_mt_virtual_cft^ tpcc_virtual_cft^ ls_js_sgx_cft^ ls_js_sgx_cft_mem ls_virtual_cft^ ls_full_js_sgx_cft^ ls_full_js_sgx_cft_mem pi_ls_virtual_cft^ pi_basic_virtual_cft^ ls_js_jwt_sgx_cft^ ls_js_jwt_sgx_cft_mem pi_basic_js_virtual_cft^ tlc_3node_fixed_duration_s tlc_3node_fixed_states tlc_atomic_reconfig_duration_s tlc_atomic_reconfig_states tlc_reconfig_duration_s tlc_reconfig_states ls_jwt_virtual_cft^ pi_ls_jwt_virtual_cft^ ls_js_virtual_cft^ ls_full_js_virtual_cft^ ls_js_jwt_virtual_cft^ hist_sgx_cft^ RB put (/s)^ CHAMP put (/s)^ RB get (/s)^ CHAMP get (/s)^ tlc_sim_traces tlc_sim_levelmean
79678 20231220.18 28217.3 2.51822e+07 0.791999 5558.58 8.59996e+07 14061.7 1.88908e+07 14133.4 1.05021e+07 15598 1.25993e+07 1437.1 1.25993e+07 6906.58 1.88908e+07 6985.7 6.30784e+06 70893.4 17425.3 5794.4 1.67936e+07 52743.3 5731.37 1.67936e+07 56074.6 61667.5 3993.12 1.67936e+07 4603.9 6 86496 431 1.2541e+07 236 6.31473e+06 21027.1 22116.6 17741.1 17275.2 11597.5 47191.7 837557 1.18345e+06 8.11176e+06 3.06298e+07 2274 403
79693 20231221.3 27963.8 2.51822e+07 0.825277 5633.86 8.59996e+07 14089 1.88908e+07 14143.4 1.05021e+07 15608.7 1.46964e+07 1418.7 1.25993e+07 7243.3 1.67936e+07 6931.6 6.30784e+06 73753.8 17281.9 5760.75 1.67936e+07 53233.4 5475.1 1.67936e+07 57492.4 62214.5 3977.28 1.67936e+07 4570.5 6 86496 443 1.2541e+07 240 6.31473e+06 20675.4 21741.5 17380 17681.7 11860.3 43951.7 810554 1.17945e+06 8.1552e+06 3.0712e+07 2247 403
79707 20231222.3 28028.2 2.30851e+07 0.812946 5620.72 8.59996e+07 14007.1 1.67936e+07 14111.8 1.05021e+07 15564.3 1.46964e+07 1429.5 1.25993e+07 6869.23 1.88908e+07 7085 6.30784e+06 86154.2 17192.9 5786 1.67936e+07 52990.6 5731.94 1.67936e+07 58113.2 62042.6 3996.47 1.67936e+07 4644.1 7 86496 433 1.2541e+07 243 6.31473e+06 20983.2 22005.6 20798.9 17660.2 11716.6 44675.9 840758 1.17882e+06 8.1646e+06 3.06982e+07 2385 403
79724 20231225.2 28166.4 2.30851e+07 0.835919 5619.85 8.59996e+07 14035.1 1.67936e+07 14190.5 1.05021e+07 15651.5 1.25993e+07 1440.9 1.25993e+07 7241.84 1.67936e+07 6978.6 6.30784e+06 74118.7 17292.1 5808 1.67936e+07 52861.9 5474.82 1.88908e+07 56705.4 61889.5 3994.32 1.67936e+07 4601.8 7 86496 436 1.2541e+07 237 6.31473e+06 20650.7 21723.1 17483.2 17588.3 11783.8 46135.5 834644 1.1791e+06 8.14888e+06 3.27303e+07 2316 403
79739 20231226.3 28205.8 2.51822e+07 0.830636 5613.09 8.59996e+07 14076 1.88908e+07 14178.4 1.05021e+07 15658.8 1.25993e+07 1443.1 1.25993e+07 7268.57 1.67936e+07 6983.8 6.30784e+06 70865.4 17368.3 5759.16 1.67936e+07 52752.6 5489.93 1.88908e+07 56752.4 62271.2 3983.36 1.67936e+07 4587.3 6 86496 428 1.2541e+07 244 6.31473e+06 21018.1 22055.1 17838.1 17531.8 11814.9 47038.4 824513 1.17359e+06 8.14881e+06 3.08443e+07 2478 403
79750 20231227.1 27885.2 2.51822e+07 0.818602 5599.89 8.59996e+07 14026.9 1.67936e+07 14100 1.05021e+07 15563.2 1.25993e+07 1425.9 1.25993e+07 6848.41 1.67936e+07 6932.3 6.30784e+06 87959.6 17400.9 5796.65 1.67936e+07 53080.8 5448.92 1.67936e+07 56737.9 61924.4 3976.43 1.67936e+07 4624.8 6 86496 430 1.2541e+07 242 6.31473e+06 20931.4 18203 20610 17300.9 11921.8 45579.1 838072 1.18283e+06 8.15446e+06 3.07475e+07 2258 403
79764 20231228.1 28069.2 2.30851e+07 0.785802 5579.3 8.59996e+07 14013.7 1.88908e+07 14133.7 1.05021e+07 15558.2 1.25993e+07 1426 1.25993e+07 6801.15 1.67936e+07 7035 6.30784e+06 100210 17482.4 5760.56 1.67936e+07 52691.7 5478.71 1.67936e+07 56538.7 62169.5 3992.59 1.67936e+07 4606.1 6 86496 434 1.2541e+07 235 6.31473e+06 21182.6 22162.1 17804.6 17513 11666.7 47564.7 832827 1.17369e+06 8.16737e+06 3.1373e+07 2144 403
79781 20231229.2 27896.7 2.51822e+07 0.801636 5589.66 8.59996e+07 14027.6 1.88908e+07 14166.7 1.05021e+07 15567.2 1.46964e+07 1425.2 1.25993e+07 6793.52 1.67936e+07 7078.9 6.30784e+06 70323.6 17379.6 5797.56 1.67936e+07 53058 5483.48 1.67936e+07 56634.4 62290.7 3993.74 1.67936e+07 4544.7 6 86496 436 1.2541e+07 240 6.31473e+06 21324.7 22159.2 17388.8 17492.5 11838.8 40847.4 834593 1.18035e+06 8.15979e+06 3.07217e+07 2181 403
79795 20240101.3 28203.3 2.51822e+07 0.78501 5573.08 8.59996e+07 14058.6 1.88908e+07 14075.3 1.05021e+07 15400.4 1.25993e+07 1433.5 1.25993e+07 6907.22 1.88908e+07 6981.9 6.30784e+06 88523 17464.7 5797.99 1.67936e+07 53125.1 5721.54 1.67936e+07 57116.7 61313 3992.77 1.67936e+07 4568.7 7 86496 437 1.2541e+07 244 6.31473e+06 20746.1 22281.6 17744.9 17841.4 11654.5 45491.3 828138 1.18098e+06 8.16847e+06 3.08021e+07 2254 403
79809 20240102.3 27998 2.51822e+07 0.818907 5582.58 8.59996e+07 14069 1.88908e+07 14207.7 1.05021e+07 15632.9 1.46964e+07 1438 1.25993e+07 7254.86 1.67936e+07 6979.5 6.30784e+06 89517.2 17426.2 5809.21 1.67936e+07 52688.3 5725.47 1.88908e+07 56487.3 62076.8 4000.63 1.67936e+07 4588.5 6 86496 427 1.2541e+07 241 6.31473e+06 20938.1 21383.1 17806.2 17373.5 11613.7 39813.8 838128 1.18558e+06 8.15241e+06 3.07577e+07 2304 403
79821 20240102.7 28223.4 2.30851e+07 0.812237 5591.2 8.59996e+07 14003.1 1.88908e+07 14188.3 1.05021e+07 15498.1 1.46964e+07 1429.2 1.25993e+07 7246.07 1.67936e+07 6934.2 6.30784e+06 100850 17312.2 5809.09 1.67936e+07 53352.6 5478.56 1.67936e+07 57235.7 62129.2 4007.06 1.67936e+07 4590.4 7 86496 446 1.2541e+07 237 6.31473e+06 21078.7 22285.6 20842.2 17429 11612.2 40366 832255 1.17903e+06 8.15355e+06 3.03592e+07 2331 403
79832 20240102.10 27705.2 2.51822e+07 0.780568 5592.62 8.59996e+07 14075.6 1.88908e+07 14247 1.05021e+07 15580.2 1.46964e+07 1429.8 1.25993e+07 6842.56 1.67936e+07 7079.5 6.30784e+06 90345.4 17247.1 5781.21 1.67936e+07 52935.7 5767.74 1.67936e+07 56910 62683.8 3982.1 1.67936e+07 4647.1 6 86496 424 1.2541e+07 245 6.31473e+06 20739.3 20193.9 20729.9 17575.8 11690.8 42743.5 823735 1.18304e+06 8.15511e+06 3.0778e+07 2301 403
79836 20240103.1 28173 2.51822e+07 0.8277 5617.23 8.59996e+07 14088.9 1.88908e+07 14246.2 1.05021e+07 15684.4 1.46964e+07 1430.6 1.25993e+07 7262.76 1.67936e+07 6980.2 6.30784e+06 68113.2 17163.7 5814.99 1.67936e+07 52985.4 5465.89 1.88908e+07 57238.7 62511.8 3973.9 1.67936e+07 4622.6 6 86496 417 1.2541e+07 238 6.31473e+06 20776.5 21693.9 20385 17974.8 11889.2 43365.4 827987 1.18005e+06 8.16857e+06 3.13533e+07 2109 403
79850 20240104.1 28107.5 2.51822e+07 0.774183 5647.78 8.59996e+07 14069.1 1.88908e+07 14203.3 1.05021e+07 15616.9 1.25993e+07 1430.7 1.25993e+07 7263.29 1.67936e+07 7142 6.30784e+06 88847.3 17222.5 5808.21 1.67936e+07 53076.9 5739.03 1.88908e+07 56886.7 62583 4019.28 1.67936e+07 4618.3 6 86496 447 1.2541e+07 239 6.31473e+06 20820.4 21956.8 17246.1 17545.1 11727 45361.8 833007 1.17531e+06 8.1401e+06 3.07056e+07 2277 403
79858 20240104.5 28151.4 2.30851e+07 0.762951 5612.73 8.59996e+07 14105.1 1.88908e+07 14237.6 1.05021e+07 15657.2 1.46964e+07 1437 1.05021e+07 7259.07 1.88908e+07 6983.6 6.30784e+06 72092.6 17237.2 5791.47 1.67936e+07 53156.1 5734.66 1.67936e+07 56700.3 62251.6 4001.19 1.67936e+07 4624.7 6 86496 420 1.2541e+07 238 6.31473e+06 20802.9 22305.5 17912 17600.9 12005.6 46312.7 832473 1.18246e+06 8.14589e+06 3.0464e+07 2357 403
79876 20240104.10 27983.2 2.51822e+07 0.770841 5617.52 8.59996e+07 14034.5 1.67936e+07 14165.8 1.05021e+07 15592.9 1.25993e+07 1427.3 1.25993e+07 7241.98 1.67936e+07 6915.4 6.30784e+06 82253.2 17196.9 5771.22 1.67936e+07 53164.5 5737.28 1.67936e+07 56410.8 62397 3985.63 1.67936e+07 4645.9 6 86496 429 1.2541e+07 234 6.31473e+06 20949.8 22178.9 17324.7 17551.5 11659.7 40222.9 829045 1.18083e+06 8.15014e+06 3.10298e+07 2315 403
79893 20240105.3 28242.6 2.30851e+07 0.770387 5619.63 8.59996e+07 14091.5 1.88908e+07 14247.6 1.05021e+07 15674.3 1.25993e+07 1436.8 1.25993e+07 7241.21 1.67936e+07 7028.1 6.30784e+06 79459.2 17195.7 5776.46 1.67936e+07 53109.3 5739.53 1.67936e+07 56423.9 61913.6 4001.54 1.67936e+07 4637.7 6 86496 438 1.2541e+07 234 6.31473e+06 21053.6 21897.2 17479.2 17489.6 11786.3 41192.1 834184 1.18333e+06 8.13454e+06 3.07928e+07 2312 403
79901 20240105.6 28134.7 2.51822e+07 0.804442 5625.32 8.59996e+07 14099 1.88908e+07 14266.8 1.05021e+07 15657.8 1.46964e+07 1428.6 1.25993e+07 6896.08 1.67936e+07 7033.2 6.30784e+06 96416.1 17253.5 5807.41 1.67936e+07 52754.9 5744.67 1.88908e+07 54886.9 61431.1 4003.65 1.67936e+07 4615.1 6 86496 445 1.2541e+07 240 6.31473e+06 20971.5 21889.5 17410.2 17219.9 11532.7 42166 837682 1.17356e+06 8.14881e+06 3.18111e+07 2258 403
79920 20240105.14 28090.3 2.51822e+07 0.804667 5642.82 8.59996e+07 14097.8 1.88908e+07 14249.7 1.05021e+07 15643 1.46964e+07 1426.1 1.25993e+07 6883.92 1.88908e+07 6976.3 6.30784e+06 72389.5 17195.4 5819.57 1.67936e+07 53484.4 5767.4 1.67936e+07 56927.5 63034.1 3983.21 1.67936e+07 4635.9 6 86496 434 1.2541e+07 235 6.31473e+06 20600.9 21708 20208.9 17600.9 11868.5 42864.9 816929 1.18007e+06 8.14615e+06 3.06564e+07 2325 403
79931 20240105.18 28155.9 2.51822e+07 0.830304 5572.38 8.59996e+07 14067.9 1.67936e+07 14143.9 1.05021e+07 15609.5 1.25993e+07 1433 1.25993e+07 6844.24 1.67936e+07 6937.8 6.30784e+06 78451.8 17203.8 5775.62 1.67936e+07 53081 5454.13 1.67936e+07 57491.7 63657.6 3990.64 1.67936e+07 4644.3 6 86496 436 1.2541e+07 236 6.31473e+06 20979.1 21753.3 20837.9 17426.7 11781.2 41115.6 835630 1.17185e+06 8.15319e+06 3.14385e+07 2224 403

mku-AdvanceCommitIndexOptimization

build_id build_number pi_basic_mt_sgx_cft^ pi_basic_mt_sgx_cft_mem Commit latency factor pi_basic_mt_virtual_cft^ tpcc_sgx_cft^ tpcc_sgx_cft_mem tpcc_virtual_cft^ ls_virtual_cft^ pi_ls_virtual_cft^ pi_basic_virtual_cft^ ls_sgx_cft^ ls_sgx_cft_mem pi_ls_sgx_cft^ pi_ls_sgx_cft_mem pi_basic_js_virtual_cft^ pi_basic_sgx_cft^ pi_basic_sgx_cft_mem ls_jwt_virtual_cft^ pi_ls_jwt_virtual_cft^ ls_js_virtual_cft^ ls_full_js_virtual_cft^ ls_js_jwt_virtual_cft^ pi_basic_js_sgx_cft^ pi_basic_js_sgx_cft_mem ls_jwt_sgx_cft^ ls_jwt_sgx_cft_mem pi_ls_jwt_sgx_cft^ pi_ls_jwt_sgx_cft_mem ls_js_sgx_cft^ ls_js_sgx_cft_mem hist_sgx_cft^ tlc_3node_fixed_duration_s tlc_3node_fixed_states tlc_atomic_reconfig_duration_s tlc_atomic_reconfig_states tlc_reconfig_duration_s tlc_reconfig_states ls_full_js_sgx_cft^ ls_full_js_sgx_cft_mem ls_js_jwt_sgx_cft^ ls_js_jwt_sgx_cft_mem RB put (/s)^ CHAMP put (/s)^ RB get (/s)^ CHAMP get (/s)^ tlc_sim_traces tlc_sim_levelmean
79830 20240102.9 28367.3 2.51822e+07 0.805113 81163.4 5547.31 8.59996e+07 17262.4 53022.1 57230.5 61833.1 14057 1.88908e+07 14164.1 1.05021e+07 4637.9 15543.8 1.46964e+07 20661.1 22229.6 20853.2 17685.3 11700 1425.3 1.25993e+07 6843.95 1.67936e+07 7034.7 6.30784e+06 5799.42 1.67936e+07 40459.7 6 77678 397 1.14441e+07 230 5.86578e+06 5485.69 1.88908e+07 4003.02 1.67936e+07 835302 1.18311e+06 8.13308e+06 3.03448e+07 2314 403
79885 20240104.13 28320.8 2.51822e+07 0.800469 78357.3 5631.86 8.59996e+07 17222 52837.1 56859.9 61620 14084.6 1.88908e+07 14220.2 1.05021e+07 4631.5 15576 1.25993e+07 21048.8 21349.7 18152.1 17251.5 11733.3 1437.8 1.25993e+07 7266.99 1.67936e+07 6964.3 6.30784e+06 5781.02 1.67936e+07 40145.7 6 77678 396 1.14441e+07 221 5.86578e+06 5495.94 1.88908e+07 3985.35 1.67936e+07 834875 1.17282e+06 8.17359e+06 3.02056e+07 2249 403
79906 20240105.7 28163.4 2.30851e+07 0.803955 73328.6 5596.79 8.59996e+07 17187 53012.6 56892.5 60810.2 14016.1 1.88908e+07 14174.8 1.05021e+07 4617.6 15494.2 1.25993e+07 21174.4 21090.8 17523.3 17208.6 11598 1430.1 1.25993e+07 7246.97 1.67936e+07 6924.7 6.30784e+06 5825.12 1.67936e+07 45494.5 5 77678 406 1.14441e+07 222 5.86578e+06 5511.24 1.88908e+07 4019.26 1.67936e+07 838320 1.18298e+06 8.14858e+06 3.17342e+07 2296 403
79909 20240105.8 28050.3 2.30851e+07 0.782061 73745.1 5664.63 8.59996e+07 17220.8 52610.6 56175 61384.5 14097.7 1.88908e+07 14232.4 1.05021e+07 4613.2 15601.6 1.25993e+07 21080.9 21202.2 17476.7 17419.7 11735.6 1434.9 1.25993e+07 7273.86 1.67936e+07 6923.8 6.30784e+06 5814.96 1.67936e+07 45161.4 6 77678 387 1.14441e+07 219 5.86578e+06 5739.83 1.67936e+07 4004.56 1.67936e+07 837177 1.17965e+06 8.17134e+06 3.10265e+07 2221 403
79936 20240105.19 27988.1 2.51822e+07 0.819368 89853 5575.85 8.59996e+07 17273.8 53002.8 56037.5 62991.3 14074.9 1.67936e+07 14257.2 1.05021e+07 4635.6 15624.4 1.25993e+07 20545.1 22268.7 17500.1 17708.1 11697.7 1433.2 1.25993e+07 7263.29 1.67936e+07 6963.3 6.30784e+06 5818.21 1.67936e+07 44864.2 6 77678 389 1.14441e+07 221 5.86578e+06 5716.51 1.67936e+07 3972.55 1.67936e+07 841329 1.1834e+06 8.13522e+06 3.07415e+07 2455 403

images

@lemmy
Copy link
Contributor Author

lemmy commented Dec 20, 2023

Confirmed based on commit 2d096a7 to address issue that @achamayou found in #5798.

diff --git a/tests/raft_scenarios/replicate b/tests/raft_scenarios/replicate
index 68c601a8b..8d198afe2 100644
--- a/tests/raft_scenarios/replicate
+++ b/tests/raft_scenarios/replicate
@@ -13,6 +13,7 @@ dispatch_all
 state_all
 replicate,1,helloworld
 emit_signature,1
+emit_signature,1
 periodic_all,10
 dispatch_all
 periodic_all,1
diff --git a/tla/consensus/Traceccfraft.tla b/tla/consensus/Traceccfraft.tla
index 86d49c39e..fdb58a055 100644
--- a/tla/consensus/Traceccfraft.tla
+++ b/tla/consensus/Traceccfraft.tla
@@ -58,7 +58,7 @@ IsAppendEntriesResponse(msg, dst, src, logline) ==
 ASSUME TLCGet("config").mode = "bfs"
 
 JsonFile ==
-    IF "JSON" \in DOMAIN IOEnv THEN IOEnv.JSON ELSE "traces/election.ndjson"
+    IF "JSON" \in DOMAIN IOEnv THEN IOEnv.JSON ELSE "../../tests/raft_scenarios/replicate.ndjson"
 
 JsonLog ==
     \* Deserialize the System log as a sequence of records from the log file.
diff --git a/tla/consensus/ccfraft.tla b/tla/consensus/ccfraft.tla
index f619448a4..8fd0f8b9d 100644
--- a/tla/consensus/ccfraft.tla
+++ b/tla/consensus/ccfraft.tla
@@ -689,38 +689,47 @@ ChangeConfiguration(i) ==
 AdvanceCommitIndex(i) ==
     /\ state[i] = Leader
     /\ LET
-        \* We want to get the smallest such index forward that is a signature
-        \* This index must be from the current term, 
-        \* as explained by Figure 8 and Section 5.4.2 of https://raft.github.io/raft.pdf
-        \* See find_highest_possible_committable_index in raft.h
-        new_index == SelectInSubSeq(log[i], commitIndex[i]+1, Len(log[i]),
-            LAMBDA e : e.contentType = TypeSignature /\ e.term = currentTerm[i])
-        new_log ==
-            IF new_index > 1 THEN
-               [ j \in 1..new_index |-> log[i][j] ]
-            ELSE
-                  << >>
-        new_config_index == LastConfigurationToIndex(i, new_index)
-        new_configurations == RestrictDomain(configurations[i], LAMBDA c : c >= new_config_index)
+            \* Select those configs that need to have a quorum to agree on this leader.
+            \* Compare https://github.com/microsoft/CCF/blob/75670480c53519fcec1a09d36aefc11b23a597f9/src/consensus/aft/raft.h#L2081
+            HasConsensusWatermark(idx) ==
+                \A config \in {c \in DOMAIN(configurations[i]) : idx >= c } :
+                    \* In all of these configs, we now need a quorum in the servers that have the correct matchIndex
+                    LET config_servers == configurations[i][config]
+                        required_quorum == Quorums[config_servers]
+                        agree_servers == {k \in config_servers : matchIndex[i][k] >= idx}
+                    IN (IF i \in config_servers THEN {i} ELSE {}) \cup agree_servers \in required_quorum
+            \* The function find_highest_possible_committable_index in raft.h returns the largest committable index
+            \* in the current term (Figure 8 and Section 5.4.2 of https://raft.github.io/raft.pdf explains why it has
+            \* to be the *current* term).  Finding the largest index is an (mplementation-level) optimization that
+            \* reduces the number of AdvanceCommitIndex calls, but this optimization also shrinks this spec's state-space.
+            \*
+            \* Theoretically, any committable index in the current term works, i.e., highestCommittableIndex could be
+            \* defined non-deterministically as:
+            \*       \E idx \in { j \in (commitIndex[i]+1)..Len(log[i]) : /\ log[i][j].term = currentTerm[i] 
+            \*                                                            /\ log[i][j].contentType = TypeSignature }
+            \*          /\ HasConsensusWatermark(idx)
+            \*          /\ ...
+            \* 
+            \* Max({0} \cup {...}) to default to 0 if no committable index is found.
+            highestCommittableIndex == Max({0} \cup { j \in (commitIndex[i]+1)..Len(log[i]) : 
+                                                                    /\ log[i][j].term = currentTerm[i] 
+                                                                    /\ log[i][j].contentType = TypeSignature
+                                                                    /\ HasConsensusWatermark(j) })
         IN
-        /\  \* Select those configs that need to have a quorum to agree on this leader
-            \A config \in {c \in DOMAIN(configurations[i]) : new_index >= c } :
-                \* In all of these configs, we now need a quorum in the servers that have the correct matchIndex
-                LET config_servers == configurations[i][config]
-                    required_quorum == Quorums[config_servers]
-                    agree_servers == {k \in config_servers : matchIndex[i][k] >= new_index}
-                IN (IF i \in config_servers THEN {i} ELSE {}) \cup agree_servers \in required_quorum
-         \* only advance if necessary (this is basically a sanity check after the Min above)
-        /\ commitIndex[i] < new_index
-        /\ commitIndex' = [commitIndex EXCEPT ![i] = new_index]
+         \* only advance if necessary (this is basically a sanity)
+        /\ commitIndex[i] < highestCommittableIndex
+        /\ commitIndex' = [commitIndex EXCEPT ![i] = highestCommittableIndex]
         /\ committableIndices' = [ committableIndices EXCEPT ![i] = @ \ 0..commitIndex'[i] ]
         \* If commit index surpasses the next configuration, pop configs, and retire as leader if removed
         /\ IF /\ Cardinality(DOMAIN configurations[i]) > 1
-              /\ new_index >= NextConfigurationIndex(i)
+              /\ highestCommittableIndex >= NextConfigurationIndex(i)
            THEN
+              LET new_configurations == RestrictDomain(configurations[i], 
+                                            LAMBDA c : c >= LastConfigurationToIndex(i, highestCommittableIndex))
+              IN
               /\ configurations' = [configurations EXCEPT ![i] = new_configurations]
               \* Retire if i is not in active configuration anymore
-              /\ IF i \notin configurations[i][Min(DOMAIN new_configurations)]
+              /\ IF i \notin configurations[i][Min(DOMAIN configurations'[i])]
                  THEN \E j \in PlausibleSucessorNodes(i) :
                     /\ state' = [state EXCEPT ![i] = RetiredLeader]
                     /\ LET msg == [type          |-> ProposeVoteRequest,

@lemmy lemmy marked this pull request as ready for review December 20, 2023 22:25
@lemmy lemmy requested a review from a team December 20, 2023 22:25
@lemmy lemmy enabled auto-merge (rebase) December 20, 2023 22:26
@lemmy
Copy link
Contributor Author

lemmy commented Dec 20, 2023

@achamayou @heidihoward The first three commits in this PR are just syntactic refactorings. You can limit the review to 21f487e if you are in a hurry.

@lemmy lemmy added this to the TLA+ Trace Validation milestone Dec 20, 2023
@lemmy
Copy link
Contributor Author

lemmy commented Dec 22, 2023

Raft scenario that suggests (confirms ?) that raft.h indeed advances to idx 11 and not 9 in @heidihoward scenario (apologies for the reversal of n1 and n2 compared to Heidi's original message):

# Consider the case where there’s two nodes, n1 and n2, with the same logs upto index 7.
# At index 8, n2 the leader reconfigures to remove n1. Index 9 is a signature, index 10
# some random transaction and index 11 is a signature. When the ACI action taken by n2,
# it should be able to commit index 11 but instead it will commit index 9.


## Consider the case where there is two nodes, n1 and n2 (leader)...
start_node,n2
emit_signature,2
assert_is_primary,n2

create_new_node,n1
connect,n1,n2
connect,n2,n1

replicate_new_configuration,2,n2,n1
periodic_all,30
dispatch_all

assert_is_primary,n2
assert_is_backup,n1

## ... with the same logs upto index 7.
replicate,2,txAtIdx4
replicate,2,txAtIdx5
replicate,2,txAtIdx6
emit_signature,2
periodic_all,30
dispatch_all

assert_commit_idx,n2,7
assert_commit_idx,n1,2

periodic_all,30
dispatch_all
assert_state_sync

assert_commit_idx,n2,7
assert_commit_idx,n1,7

## At index 8, the leader n2 reconfigures to remove n1.
replicate_new_configuration,2,n2

periodic_all,30
dispatch_all

state_all
assert_is_primary,n2
assert_is_backup,n1
assert_is_retired,n1

## Index 9 is a signature, index 10 some random transaction and index 11 is a signature. 
emit_signature,2
assert_commit_idx,n2,7

replicate,2,txAt10
assert_commit_idx,n2,7

emit_signature,2
assert_commit_idx,n2,7

## When the ACI action taken by n2, it should be able to commit index 11 but instead it will commit index 9.
periodic_all,30
dispatch_all

assert_is_primary,n2
assert_is_backup,n1
assert_is_retired,n1

assert_commit_idx,n2,11
assert_commit_idx,n1,7
sequenceDiagram
  n[n2]->>n[n2]: [KV] initialising in term 2
  n[n2]->>n[n2]: replicate 2.1 = [0 bytes]  [reconfiguration]
  n[n2]->>n[n2]: [ledger] appending: 2.1=[68 bytes] {"data":"eyJuMi
  Note over n2: Node n2 created
  n[n2]->>n[n2]: replicate 2.2 = [9 bytes] signature [raw]
  n[n2]->>n[n2]: [ledger] appending: 2.2=[36 bytes] {"data":"c2lnbm
  n[n2]->>n[n2]: [KV] compacting to 2
  Note over n[n1]: Node n[n1] created
  n[n1]-->n[n2]: connect
  n[n2]-->n[n1]: connect
  n[n2]->>n[n2]: replicate 2.3 = [0 bytes]  [reconfiguration]
  n[n2]->>n[n2]: [ledger] appending: 2.3=[96 bytes] {"data":"eyJuMS
  n[n1]->>n[n1]: periodic for 30 ms
  n[n2]->>n[n2]: periodic for 30 ms
  n[n2]->>n[n1]: append_entries (2.2, 2.2] (term 2, commit 2)
  n[n1]->>n[n1]: [KV] rolling back to 0.0, in term 2
  n[n1]->>n[n1]: [ledger] truncating to 0
  n[n2]->>n[n1]: append_entries (2.2, 2.3] (term 2, commit 2)
  n[n1]-->>n[n2]: append_entries_response NACK for 2.0
  n[n1]-->>n[n2]: append_entries_response NACK for 2.0
  n[n2]->>n[n2]: replicate 2.4 = [8 bytes] txAtIdx4 [raw]
  n[n2]->>n[n2]: [ledger] appending: 2.4=[36 bytes] {"data":"dHhBdE
  n[n2]->>n[n2]: replicate 2.5 = [8 bytes] txAtIdx5 [raw]
  n[n2]->>n[n2]: [ledger] appending: 2.5=[36 bytes] {"data":"dHhBdE
  n[n2]->>n[n2]: replicate 2.6 = [8 bytes] txAtIdx6 [raw]
  n[n2]->>n[n2]: [ledger] appending: 2.6=[36 bytes] {"data":"dHhBdE
  n[n2]->>n[n2]: replicate 2.7 = [9 bytes] signature [raw]
  n[n2]->>n[n2]: [ledger] appending: 2.7=[36 bytes] {"data":"c2lnbm
  n[n1]->>n[n1]: periodic for 30 ms
  n[n2]->>n[n2]: periodic for 30 ms
  n[n2]->>n[n1]: append_entries (0.0, 2.7] (term 2, commit 2)
  n[n1]->>n[n1]: [ledger] appending: 2.1=[68 bytes] {"data":"eyJuMi
  n[n1]->>n[n1]: [ledger] appending: 2.2=[36 bytes] {"data":"c2lnbm
  n[n1]->>n[n1]: [KV] compacting to 2
  n[n1]->>n[n1]: [ledger] appending: 2.3=[96 bytes] {"data":"eyJuMS
  n[n1]->>n[n1]: [ledger] appending: 2.4=[36 bytes] {"data":"dHhBdE
  n[n1]->>n[n1]: [ledger] appending: 2.5=[36 bytes] {"data":"dHhBdE
  n[n1]->>n[n1]: [ledger] appending: 2.6=[36 bytes] {"data":"dHhBdE
  n[n1]->>n[n1]: [ledger] appending: 2.7=[36 bytes] {"data":"c2lnbm
  n[n1]-->>n[n2]: append_entries_response ACK for 2.7
  n[n2]->>n[n2]: [KV] compacting to 7
  n[n1]->>n[n1]: periodic for 30 ms
  n[n2]->>n[n2]: periodic for 30 ms
  n[n2]->>n[n1]: append_entries (2.7, 2.7] (term 2, commit 7)
  n[n1]->>n[n1]: [KV] compacting to 7
  n[n1]-->>n[n2]: append_entries_response ACK for 2.7
  n[n2]->>n[n2]: replicate 2.8 = [0 bytes]  [reconfiguration]
  n[n2]->>n[n2]: [ledger] appending: 2.8=[68 bytes] {"data":"eyJuMi
  n[n1]->>n[n1]: periodic for 30 ms
  n[n2]->>n[n2]: periodic for 30 ms
  n[n2]->>n[n1]: append_entries (2.7, 2.8] (term 2, commit 7)
  n[n1]->>n[n1]: [ledger] appending: 2.8=[68 bytes] {"data":"eyJuMi
  n[n1]-->>n[n2]: append_entries_response ACK for 2.8
  Note right of n[n1]: leadership F membership R @2.8 (committed 7)
  Note right of n[n2]: leadership P membership A @2.8 (committed 7)
  n[n2]->>n[n2]: replicate 2.9 = [9 bytes] signature [raw]
  n[n2]->>n[n2]: [ledger] appending: 2.9=[36 bytes] {"data":"c2lnbm
  n[n2]->>n[n2]: replicate 2.10 = [6 bytes] txAt10 [raw]
  n[n2]->>n[n2]: [ledger] appending: 2.10=[32 bytes] {"data":"dHhBdD
  n[n2]->>n[n2]: replicate 2.11 = [9 bytes] signature [raw]
  n[n2]->>n[n2]: [ledger] appending: 2.11=[36 bytes] {"data":"c2lnbm
  n[n1]->>n[n1]: periodic for 30 ms
  n[n2]->>n[n2]: periodic for 30 ms
  n[n2]->>n[n1]: append_entries (2.8, 2.11] (term 2, commit 7)
  n[n1]->>n[n1]: [ledger] appending: 2.9=[36 bytes] {"data":"c2lnbm
  n[n1]->>n[n1]: [ledger] appending: 2.10=[32 bytes] {"data":"dHhBdD
  n[n1]->>n[n1]: [ledger] appending: 2.11=[36 bytes] {"data":"c2lnbm
  n[n1]-->>n[n2]: append_entries_response ACK for 2.11
  n[n2]->>n[n2]: [KV] compacting to 11

Loading

@lemmy
Copy link
Contributor Author

lemmy commented Dec 27, 2023

Same raft scenario as above, but adapted to legacy bootstrapping (commit 2d096a7 and earlier):

Scenario
nodes,0,1
connect,0,1

# Node 0 starts first, and begins sending messages first
periodic_one,0,110
dispatch_all

periodic_all,30
dispatch_all

state_all
assert_is_primary,0
assert_is_backup,1

## ... with the same logs upto index 7.
replicate,1,txAtIdx1
replicate,1,txAtIdx2
replicate,1,txAtIdx3
replicate,1,txAtIdx4
replicate,1,txAtIdx5
replicate,1,txAtIdx6
emit_signature,1
periodic_all,30
dispatch_all

assert_commit_idx,0,7
assert_commit_idx,1,0

periodic_all,30
dispatch_all
assert_state_sync

assert_commit_idx,0,7
assert_commit_idx,1,7

## At index 8, the leader n2 reconfigures to remove n1.
replicate_new_configuration,1,0

periodic_all,30
dispatch_all

state_all
assert_is_primary,0
assert_is_backup,1

## Index 9 is a signature, index 10 some random transaction and index 11 is a signature. 
emit_signature,1
assert_commit_idx,0,7

replicate,1,txAt10
assert_commit_idx,0,7

emit_signature,1
assert_commit_idx,0,7


## When the ACI action taken by n2, it should be able to commit index 11 but instead it will commit index 9.
periodic_all,30
dispatch_all

assert_is_primary,0
assert_is_backup,1
assert_is_retired,1

assert_commit_idx,0,11
assert_commit_idx,1,7
Trace
Temporal properties were violated.
The following behavior constitutes a counter-example:
1: <TraceInit line 106, col 5 to line 113, col 110 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Follower @@ "1" :> Pending)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 1) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<>> @@ "1" :> <<>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 0 @@ "1" :> 0)
/\ votedFor = ("0" :> Nil @@ "1" :> Nil)
/\ _logline = [msg |-> [state |-> [node_id |-> "0", leadership_state |-> "None", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 0, last_idx |-> 0, membership_state |-> "Active", new_view_idx |-> 0], configurations |-> <<>>, new_configuration |-> [idx |-> 0, nodes |-> [0 |-> [address |-> ":"], 1 |-> [address |-> ":"]], rid |-> 0], function |-> "add_configuration"], tag |-> "raft_trace", h_ts |-> "3", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "461"]
/\ votesGranted = ("0" :> {} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {} @@ <<"1", "1">> :> {})
2: <RaftDriverQuirks line 386, col 8 to line 390, col 142 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Follower @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 1) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<>> @@ "1" :> <<>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 0 @@ "1" :> 0)
/\ votedFor = ("0" :> Nil @@ "1" :> Nil)
/\ _logline = [msg |-> [state |-> [node_id |-> "1", leadership_state |-> "None", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 0, last_idx |-> 0, membership_state |-> "Active", new_view_idx |-> 0], configurations |-> <<>>, new_configuration |-> [idx |-> 0, nodes |-> [0 |-> [address |-> ":"], 1 |-> [address |-> ":"]], rid |-> 0], function |-> "add_configuration"], tag |-> "raft_trace", h_ts |-> "6", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "461"]
/\ votesGranted = ("0" :> {} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {} @@ <<"1", "1">> :> {})
3: <IsTimeout line 159, col 5 to line 162, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Candidate @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 1) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<>> @@ "1" :> <<>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 0)
/\ votedFor = ("0" :> "0" @@ "1" :> Nil)
/\ _logline = [msg |-> [state |-> [node_id |-> "0", leadership_state |-> "Candidate", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 0, membership_state |-> "Active", new_view_idx |-> 0], configurations |-> <<[idx |-> 0, nodes |-> [0 |-> [address |-> ":"], 1 |-> [address |-> ":"]], rid |-> 0]>>, function |-> "become_candidate"], tag |-> "raft_trace", h_ts |-> "9", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1798"]
/\ votesGranted = ("0" :> {"0"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {} @@ <<"1", "1">> :> {})
4: <IsSendRequestVote line 270, col 5 to line 282, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Candidate @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 1) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<>> @@ "1" :> <<>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<>> @@ "1" :> <<[type |-> RequestVoteRequest, dest |-> "1", source |-> "0", term |-> 1, lastCommittableIndex |-> 0, lastCommittableTerm |-> 0]>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 0)
/\ votedFor = ("0" :> "0" @@ "1" :> Nil)
/\ _logline = [msg |-> [packet |-> [msg |-> "raft_request_vote", term |-> 1, last_committable_idx |-> 0, term_of_last_committable_idx |-> 0], state |-> [node_id |-> "0", leadership_state |-> "Candidate", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 0, membership_state |-> "Active", new_view_idx |-> 0], function |-> "send_request_vote", to_node_id |-> "1"], tag |-> "raft_trace", h_ts |-> "12", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1527"]
/\ votesGranted = ("0" :> {"0"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {[type |-> RequestVoteRequest, dest |-> "1", source |-> "0", term |-> 1, lastCommittableIndex |-> 0, lastCommittableTerm |-> 0]} @@ <<"0", "1">> :> {} @@ <<"1", "1">> :> {})
5: <IsRcvRequestVoteRequest line 285, col 5 to line 300, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Candidate @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 1) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<>> @@ "1" :> <<>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<[type |-> RequestVoteResponse, dest |-> "0", source |-> "1", term |-> 1, voteGranted |-> TRUE]>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [packet |-> [msg |-> "raft_request_vote", term |-> 1, last_committable_idx |-> 0, term_of_last_committable_idx |-> 0], state |-> [node_id |-> "1", leadership_state |-> "None", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 0, last_idx |-> 0, membership_state |-> "Active", new_view_idx |-> 0], function |-> "recv_request_vote", from_node_id |-> "0"], tag |-> "raft_trace", h_ts |-> "13", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1550"]
/\ votesGranted = ("0" :> {"0"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {[type |-> RequestVoteResponse, dest |-> "0", source |-> "1", term |-> 1, voteGranted |-> TRUE]} @@ <<"1", "1">> :> {})
6: <IsBecomeFollower line 329, col 5 to line 333, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Candidate @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 1) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<>> @@ "1" :> <<>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<[type |-> RequestVoteResponse, dest |-> "0", source |-> "1", term |-> 1, voteGranted |-> TRUE]>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [state |-> [node_id |-> "1", leadership_state |-> "Follower", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 0, membership_state |-> "Active", new_view_idx |-> 0], configurations |-> <<[idx |-> 0, nodes |-> [0 |-> [address |-> ":"], 1 |-> [address |-> ":"]], rid |-> 0]>>, function |-> "become_follower"], tag |-> "raft_trace", h_ts |-> "20", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1907"]
/\ votesGranted = ("0" :> {"0"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {[type |-> RequestVoteResponse, dest |-> "0", source |-> "1", term |-> 1, voteGranted |-> TRUE]} @@ <<"1", "1">> :> {})
7: <IsRcvRequestVoteResponse line 313, col 5 to line 326, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Candidate @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 1) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<>> @@ "1" :> <<>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [packet |-> [msg |-> "raft_request_vote_response", term |-> 1, vote_granted |-> TRUE], state |-> [node_id |-> "0", leadership_state |-> "Candidate", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 0, membership_state |-> "Active", new_view_idx |-> 0], function |-> "recv_request_vote_response", from_node_id |-> "1"], tag |-> "raft_trace", h_ts |-> "22", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1660"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {} @@ <<"1", "1">> :> {})
8: <IsBecomeLeader line 165, col 5 to line 168, col 100 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 1) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<>> @@ "1" :> <<>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [state |-> [node_id |-> "0", leadership_state |-> "Leader", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 0, membership_state |-> "Active", new_view_idx |-> 0], configurations |-> <<[idx |-> 0, nodes |-> [0 |-> [address |-> ":"], 1 |-> [address |-> ":"]], rid |-> 0]>>, function |-> "become_leader"], tag |-> "raft_trace", h_ts |-> "27", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1851"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {} @@ <<"1", "1">> :> {})
9: <IsSendAppendEntries line 179, col 5 to line 193, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 1) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<>> @@ "1" :> <<>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<>> @@ "1" :> <<[type |-> AppendEntriesRequest, dest |-> "1", source |-> "0", term |-> 1, commitIndex |-> 0, prevLogTerm |-> 0, entries |-> <<>>, prevLogIndex |-> 0]>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [packet |-> [idx |-> 0, msg |-> "raft_append_entries", term |-> 1, leader_commit_idx |-> 0, prev_term |-> 0, prev_idx |-> 0, contains_new_view |-> FALSE, term_of_idx |-> 0], state |-> [node_id |-> "0", leadership_state |-> "Leader", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 0, membership_state |-> "Active", new_view_idx |-> 0], function |-> "send_append_entries", to_node_id |-> "1", sent_idx |-> 0, match_idx |-> 0], tag |-> "raft_trace", h_ts |-> "29", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "969"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {[type |-> AppendEntriesRequest, dest |-> "1", source |-> "0", term |-> 1, commitIndex |-> 0, prevLogTerm |-> 0, entries |-> <<>>, prevLogIndex |-> 0]} @@ <<"0", "1">> :> {} @@ <<"1", "1">> :> {})
10: <IsRcvAppendEntriesRequest line 196, col 5 to line 206, col 57 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 1) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<>> @@ "1" :> <<>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 0]>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [packet |-> [idx |-> 0, msg |-> "raft_append_entries", term |-> 1, leader_commit_idx |-> 0, prev_term |-> 0, prev_idx |-> 0, contains_new_view |-> FALSE, term_of_idx |-> 0], state |-> [node_id |-> "1", leadership_state |-> "Follower", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 0, membership_state |-> "Active", new_view_idx |-> 0], function |-> "recv_append_entries", from_node_id |-> "0"], tag |-> "raft_trace", h_ts |-> "31", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1007"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 0]} @@ <<"1", "1">> :> {})
11: <IsSendAppendEntriesResponse line 211, col 5 to line 213, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 1) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<>> @@ "1" :> <<>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 0]>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [packet |-> [msg |-> "raft_append_entries_response", term |-> 1, success |-> "OK", last_log_idx |-> 0], state |-> [node_id |-> "1", leadership_state |-> "Follower", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 0, membership_state |-> "Active", new_view_idx |-> 0], function |-> "send_append_entries_response", to_node_id |-> "0"], tag |-> "raft_trace", h_ts |-> "39", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1370"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 0]} @@ <<"1", "1">> :> {})
12: <IsRcvAppendEntriesResponse line 255, col 5 to line 267, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 1) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<>> @@ "1" :> <<>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [packet |-> [msg |-> "raft_append_entries_response", term |-> 1, success |-> "OK", last_log_idx |-> 0], state |-> [node_id |-> "0", leadership_state |-> "Leader", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 0, membership_state |-> "Active", new_view_idx |-> 0], function |-> "recv_append_entries_response", sent_idx |-> 0, match_idx |-> 0, from_node_id |-> "1"], tag |-> "raft_trace", h_ts |-> "40", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1411"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {} @@ <<"1", "1">> :> {})
13: <IsSendAppendEntries line 179, col 5 to line 193, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 1) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<>> @@ "1" :> <<>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<>> @@ "1" :> <<[type |-> AppendEntriesRequest, dest |-> "1", source |-> "0", term |-> 1, commitIndex |-> 0, prevLogTerm |-> 0, entries |-> <<>>, prevLogIndex |-> 0]>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [packet |-> [idx |-> 0, msg |-> "raft_append_entries", term |-> 1, leader_commit_idx |-> 0, prev_term |-> 0, prev_idx |-> 0, contains_new_view |-> FALSE, term_of_idx |-> 0], state |-> [node_id |-> "0", leadership_state |-> "Leader", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 0, membership_state |-> "Active", new_view_idx |-> 0], function |-> "send_append_entries", to_node_id |-> "1", sent_idx |-> 0, match_idx |-> 0], tag |-> "raft_trace", h_ts |-> "43", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "969"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {[type |-> AppendEntriesRequest, dest |-> "1", source |-> "0", term |-> 1, commitIndex |-> 0, prevLogTerm |-> 0, entries |-> <<>>, prevLogIndex |-> 0]} @@ <<"0", "1">> :> {} @@ <<"1", "1">> :> {})
14: <IsRcvAppendEntriesRequest line 196, col 5 to line 206, col 57 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 1) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<>> @@ "1" :> <<>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 0]>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [packet |-> [idx |-> 0, msg |-> "raft_append_entries", term |-> 1, leader_commit_idx |-> 0, prev_term |-> 0, prev_idx |-> 0, contains_new_view |-> FALSE, term_of_idx |-> 0], state |-> [node_id |-> "1", leadership_state |-> "Follower", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 0, membership_state |-> "Active", new_view_idx |-> 0], function |-> "recv_append_entries", from_node_id |-> "0"], tag |-> "raft_trace", h_ts |-> "45", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1007"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 0]} @@ <<"1", "1">> :> {})
15: <IsSendAppendEntriesResponse line 211, col 5 to line 213, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 1) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<>> @@ "1" :> <<>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 0]>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [packet |-> [msg |-> "raft_append_entries_response", term |-> 1, success |-> "OK", last_log_idx |-> 0], state |-> [node_id |-> "1", leadership_state |-> "Follower", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 0, membership_state |-> "Active", new_view_idx |-> 0], function |-> "send_append_entries_response", to_node_id |-> "0"], tag |-> "raft_trace", h_ts |-> "51", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1370"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 0]} @@ <<"1", "1">> :> {})
16: <IsRcvAppendEntriesResponse line 255, col 5 to line 267, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 1) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<>> @@ "1" :> <<>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [packet |-> [msg |-> "raft_append_entries_response", term |-> 1, success |-> "OK", last_log_idx |-> 0], state |-> [node_id |-> "0", leadership_state |-> "Leader", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 0, membership_state |-> "Active", new_view_idx |-> 0], function |-> "recv_append_entries_response", sent_idx |-> 0, match_idx |-> 0, from_node_id |-> "1"], tag |-> "raft_trace", h_ts |-> "52", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1411"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {} @@ <<"1", "1">> :> {})
17: <IsClientRequest line 171, col 5 to line 176, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 1) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42]>> @@ "1" :> <<>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [state |-> [node_id |-> "0", leadership_state |-> "Leader", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 0, membership_state |-> "Active", new_view_idx |-> 0], function |-> "replicate", globally_committable |-> FALSE, seqno |-> 1, view |-> 1], tag |-> "raft_trace", h_ts |-> "56", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "600"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {} @@ <<"1", "1">> :> {})
18: <IsClientRequest line 171, col 5 to line 176, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 1) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42]>> @@ "1" :> <<>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [state |-> [node_id |-> "0", leadership_state |-> "Leader", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 1, membership_state |-> "Active", new_view_idx |-> 0], function |-> "replicate", globally_committable |-> FALSE, seqno |-> 2, view |-> 1], tag |-> "raft_trace", h_ts |-> "61", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "600"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {} @@ <<"1", "1">> :> {})
19: <IsClientRequest line 171, col 5 to line 176, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 1) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42]>> @@ "1" :> <<>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [state |-> [node_id |-> "0", leadership_state |-> "Leader", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 2, membership_state |-> "Active", new_view_idx |-> 0], function |-> "replicate", globally_committable |-> FALSE, seqno |-> 3, view |-> 1], tag |-> "raft_trace", h_ts |-> "66", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "600"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {} @@ <<"1", "1">> :> {})
20: <IsClientRequest line 171, col 5 to line 176, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 1) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42]>> @@ "1" :> <<>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [state |-> [node_id |-> "0", leadership_state |-> "Leader", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 3, membership_state |-> "Active", new_view_idx |-> 0], function |-> "replicate", globally_committable |-> FALSE, seqno |-> 4, view |-> 1], tag |-> "raft_trace", h_ts |-> "71", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "600"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {} @@ <<"1", "1">> :> {})
21: <IsClientRequest line 171, col 5 to line 176, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 1) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42]>> @@ "1" :> <<>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [state |-> [node_id |-> "0", leadership_state |-> "Leader", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 4, membership_state |-> "Active", new_view_idx |-> 0], function |-> "replicate", globally_committable |-> FALSE, seqno |-> 5, view |-> 1], tag |-> "raft_trace", h_ts |-> "76", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "600"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {} @@ <<"1", "1">> :> {})
22: <IsClientRequest line 171, col 5 to line 176, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 1) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42]>> @@ "1" :> <<>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [state |-> [node_id |-> "0", leadership_state |-> "Leader", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 5, membership_state |-> "Active", new_view_idx |-> 0], function |-> "replicate", globally_committable |-> FALSE, seqno |-> 6, view |-> 1], tag |-> "raft_trace", h_ts |-> "81", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "600"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {} @@ <<"1", "1">> :> {})
23: <IsSignCommittableMessages line 222, col 5 to line 231, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 1) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>> @@ "1" :> <<>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {7} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [state |-> [node_id |-> "0", leadership_state |-> "Leader", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 6, membership_state |-> "Active", new_view_idx |-> 0], function |-> "replicate", globally_committable |-> TRUE, seqno |-> 7, view |-> 1], tag |-> "raft_trace", h_ts |-> "86", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "600"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {} @@ <<"1", "1">> :> {})
24: <IsSendAppendEntries line 179, col 5 to line 193, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 6) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>> @@ "1" :> <<>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {7} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<>> @@ "1" :> <<[type |-> AppendEntriesRequest, dest |-> "1", source |-> "0", term |-> 1, commitIndex |-> 0, prevLogTerm |-> 0, entries |-> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42]>>, prevLogIndex |-> 0]>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [packet |-> [idx |-> 5, msg |-> "raft_append_entries", term |-> 1, leader_commit_idx |-> 0, prev_term |-> 0, prev_idx |-> 0, contains_new_view |-> FALSE, term_of_idx |-> 1], state |-> [node_id |-> "0", leadership_state |-> "Leader", committable_indices |-> <<7>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 7, membership_state |-> "Active", new_view_idx |-> 0], function |-> "send_append_entries", to_node_id |-> "1", sent_idx |-> 0, match_idx |-> 0], tag |-> "raft_trace", h_ts |-> "91", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "969"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {[type |-> AppendEntriesRequest, dest |-> "1", source |-> "0", term |-> 1, commitIndex |-> 0, prevLogTerm |-> 0, entries |-> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42]>>, prevLogIndex |-> 0]} @@ <<"0", "1">> :> {} @@ <<"1", "1">> :> {})
25: <IsSendAppendEntries line 179, col 5 to line 193, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 8) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>> @@ "1" :> <<>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {7} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<>> @@ "1" :> <<[type |-> AppendEntriesRequest, dest |-> "1", source |-> "0", term |-> 1, commitIndex |-> 0, prevLogTerm |-> 0, entries |-> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42]>>, prevLogIndex |-> 0], [type |-> AppendEntriesRequest, dest |-> "1", source |-> "0", term |-> 1, commitIndex |-> 0, prevLogTerm |-> 1, entries |-> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>, prevLogIndex |-> 5]>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [packet |-> [idx |-> 7, msg |-> "raft_append_entries", term |-> 1, leader_commit_idx |-> 0, prev_term |-> 1, prev_idx |-> 5, contains_new_view |-> FALSE, term_of_idx |-> 1], state |-> [node_id |-> "0", leadership_state |-> "Leader", committable_indices |-> <<7>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 7, membership_state |-> "Active", new_view_idx |-> 0], function |-> "send_append_entries", to_node_id |-> "1", sent_idx |-> 5, match_idx |-> 0], tag |-> "raft_trace", h_ts |-> "93", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "969"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {[type |-> AppendEntriesRequest, dest |-> "1", source |-> "0", term |-> 1, commitIndex |-> 0, prevLogTerm |-> 0, entries |-> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42]>>, prevLogIndex |-> 0]} @@ <<"0", "1">> :> {} @@ <<"1", "1">> :> {})
26: <IsRcvAppendEntriesRequest line 196, col 5 to line 206, col 57 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 8) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>> @@ "1" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42]>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {7} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 5]>> @@ "1" :> <<[type |-> AppendEntriesRequest, dest |-> "1", source |-> "0", term |-> 1, commitIndex |-> 0, prevLogTerm |-> 1, entries |-> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>, prevLogIndex |-> 5]>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [packet |-> [idx |-> 5, msg |-> "raft_append_entries", term |-> 1, leader_commit_idx |-> 0, prev_term |-> 0, prev_idx |-> 0, contains_new_view |-> FALSE, term_of_idx |-> 1], state |-> [node_id |-> "1", leadership_state |-> "Follower", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 0, membership_state |-> "Active", new_view_idx |-> 0], function |-> "recv_append_entries", from_node_id |-> "0"], tag |-> "raft_trace", h_ts |-> "95", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1007"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {[type |-> AppendEntriesRequest, dest |-> "1", source |-> "0", term |-> 1, commitIndex |-> 0, prevLogTerm |-> 1, entries |-> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>, prevLogIndex |-> 5]} @@ <<"0", "1">> :> {[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 5]} @@ <<"1", "1">> :> {})
27: <IsExecuteAppendEntries line 305, col 8 to line 310, col 81 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 8) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>> @@ "1" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42]>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {7} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 5]>> @@ "1" :> <<[type |-> AppendEntriesRequest, dest |-> "1", source |-> "0", term |-> 1, commitIndex |-> 0, prevLogTerm |-> 1, entries |-> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>, prevLogIndex |-> 5]>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [state |-> [node_id |-> "1", leadership_state |-> "Follower", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 0, membership_state |-> "Active", new_view_idx |-> 0], function |-> "execute_append_entries_sync", from_node_id |-> "0"], tag |-> "raft_trace", h_ts |-> "98", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1214"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {[type |-> AppendEntriesRequest, dest |-> "1", source |-> "0", term |-> 1, commitIndex |-> 0, prevLogTerm |-> 1, entries |-> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>, prevLogIndex |-> 5]} @@ <<"0", "1">> :> {[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 5]} @@ <<"1", "1">> :> {})
28: <IsExecuteAppendEntries line 305, col 8 to line 310, col 81 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 8) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>> @@ "1" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42]>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {7} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 5]>> @@ "1" :> <<[type |-> AppendEntriesRequest, dest |-> "1", source |-> "0", term |-> 1, commitIndex |-> 0, prevLogTerm |-> 1, entries |-> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>, prevLogIndex |-> 5]>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [state |-> [node_id |-> "1", leadership_state |-> "Follower", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 1, membership_state |-> "Active", new_view_idx |-> 0], function |-> "execute_append_entries_sync", from_node_id |-> "0"], tag |-> "raft_trace", h_ts |-> "100", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1214"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {[type |-> AppendEntriesRequest, dest |-> "1", source |-> "0", term |-> 1, commitIndex |-> 0, prevLogTerm |-> 1, entries |-> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>, prevLogIndex |-> 5]} @@ <<"0", "1">> :> {[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 5]} @@ <<"1", "1">> :> {})
29: <IsExecuteAppendEntries line 305, col 8 to line 310, col 81 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 8) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>> @@ "1" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42]>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {7} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 5]>> @@ "1" :> <<[type |-> AppendEntriesRequest, dest |-> "1", source |-> "0", term |-> 1, commitIndex |-> 0, prevLogTerm |-> 1, entries |-> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>, prevLogIndex |-> 5]>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [state |-> [node_id |-> "1", leadership_state |-> "Follower", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 2, membership_state |-> "Active", new_view_idx |-> 0], function |-> "execute_append_entries_sync", from_node_id |-> "0"], tag |-> "raft_trace", h_ts |-> "102", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1214"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {[type |-> AppendEntriesRequest, dest |-> "1", source |-> "0", term |-> 1, commitIndex |-> 0, prevLogTerm |-> 1, entries |-> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>, prevLogIndex |-> 5]} @@ <<"0", "1">> :> {[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 5]} @@ <<"1", "1">> :> {})
30: <IsExecuteAppendEntries line 305, col 8 to line 310, col 81 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 8) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>> @@ "1" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42]>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {7} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 5]>> @@ "1" :> <<[type |-> AppendEntriesRequest, dest |-> "1", source |-> "0", term |-> 1, commitIndex |-> 0, prevLogTerm |-> 1, entries |-> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>, prevLogIndex |-> 5]>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [state |-> [node_id |-> "1", leadership_state |-> "Follower", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 3, membership_state |-> "Active", new_view_idx |-> 0], function |-> "execute_append_entries_sync", from_node_id |-> "0"], tag |-> "raft_trace", h_ts |-> "104", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1214"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {[type |-> AppendEntriesRequest, dest |-> "1", source |-> "0", term |-> 1, commitIndex |-> 0, prevLogTerm |-> 1, entries |-> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>, prevLogIndex |-> 5]} @@ <<"0", "1">> :> {[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 5]} @@ <<"1", "1">> :> {})
31: <IsExecuteAppendEntries line 305, col 8 to line 310, col 81 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 8) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>> @@ "1" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42]>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {7} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 5]>> @@ "1" :> <<[type |-> AppendEntriesRequest, dest |-> "1", source |-> "0", term |-> 1, commitIndex |-> 0, prevLogTerm |-> 1, entries |-> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>, prevLogIndex |-> 5]>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [state |-> [node_id |-> "1", leadership_state |-> "Follower", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 4, membership_state |-> "Active", new_view_idx |-> 0], function |-> "execute_append_entries_sync", from_node_id |-> "0"], tag |-> "raft_trace", h_ts |-> "106", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1214"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {[type |-> AppendEntriesRequest, dest |-> "1", source |-> "0", term |-> 1, commitIndex |-> 0, prevLogTerm |-> 1, entries |-> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>, prevLogIndex |-> 5]} @@ <<"0", "1">> :> {[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 5]} @@ <<"1", "1">> :> {})
32: <IsSendAppendEntriesResponse line 211, col 5 to line 213, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 8) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>> @@ "1" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42]>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {7} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 5]>> @@ "1" :> <<[type |-> AppendEntriesRequest, dest |-> "1", source |-> "0", term |-> 1, commitIndex |-> 0, prevLogTerm |-> 1, entries |-> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>, prevLogIndex |-> 5]>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [packet |-> [msg |-> "raft_append_entries_response", term |-> 1, success |-> "OK", last_log_idx |-> 5], state |-> [node_id |-> "1", leadership_state |-> "Follower", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 5, membership_state |-> "Active", new_view_idx |-> 0], function |-> "send_append_entries_response", to_node_id |-> "0"], tag |-> "raft_trace", h_ts |-> "111", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1370"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {[type |-> AppendEntriesRequest, dest |-> "1", source |-> "0", term |-> 1, commitIndex |-> 0, prevLogTerm |-> 1, entries |-> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>, prevLogIndex |-> 5]} @@ <<"0", "1">> :> {[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 5]} @@ <<"1", "1">> :> {})
33: <IsRcvAppendEntriesRequest line 196, col 5 to line 206, col 57 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 8) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>> @@ "1" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {7} @@ "1" :> {7})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 5], [type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 7]>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [packet |-> [idx |-> 7, msg |-> "raft_append_entries", term |-> 1, leader_commit_idx |-> 0, prev_term |-> 1, prev_idx |-> 5, contains_new_view |-> FALSE, term_of_idx |-> 1], state |-> [node_id |-> "1", leadership_state |-> "Follower", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 5, membership_state |-> "Active", new_view_idx |-> 0], function |-> "recv_append_entries", from_node_id |-> "0"], tag |-> "raft_trace", h_ts |-> "113", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1007"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 5]} @@ <<"1", "1">> :> {})
34: <IsExecuteAppendEntries line 305, col 8 to line 310, col 81 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 8) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>> @@ "1" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {7} @@ "1" :> {7})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 5], [type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 7]>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [state |-> [node_id |-> "1", leadership_state |-> "Follower", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 5, membership_state |-> "Active", new_view_idx |-> 0], function |-> "execute_append_entries_sync", from_node_id |-> "0"], tag |-> "raft_trace", h_ts |-> "116", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1214"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 5]} @@ <<"1", "1">> :> {})
35: <IsExecuteAppendEntries line 305, col 8 to line 310, col 81 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 8) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>> @@ "1" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {7} @@ "1" :> {7})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 5], [type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 7]>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [state |-> [node_id |-> "1", leadership_state |-> "Follower", committable_indices |-> <<>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 6, membership_state |-> "Active", new_view_idx |-> 0], function |-> "execute_append_entries_sync", from_node_id |-> "0"], tag |-> "raft_trace", h_ts |-> "118", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1214"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 5]} @@ <<"1", "1">> :> {})
36: <IsSendAppendEntriesResponse line 211, col 5 to line 213, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 8) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>> @@ "1" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {7} @@ "1" :> {7})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 0) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 5], [type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 7]>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [packet |-> [msg |-> "raft_append_entries_response", term |-> 1, success |-> "OK", last_log_idx |-> 7], state |-> [node_id |-> "1", leadership_state |-> "Follower", committable_indices |-> <<7>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 7, membership_state |-> "Active", new_view_idx |-> 0], function |-> "send_append_entries_response", to_node_id |-> "0"], tag |-> "raft_trace", h_ts |-> "125", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1370"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 5]} @@ <<"1", "1">> :> {})
37: <IsRcvAppendEntriesResponse line 255, col 5 to line 267, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 8) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>> @@ "1" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {7} @@ "1" :> {7})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 5) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 7]>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [packet |-> [msg |-> "raft_append_entries_response", term |-> 1, success |-> "OK", last_log_idx |-> 5], state |-> [node_id |-> "0", leadership_state |-> "Leader", committable_indices |-> <<7>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 7, membership_state |-> "Active", new_view_idx |-> 0], function |-> "recv_append_entries_response", sent_idx |-> 7, match_idx |-> 0, from_node_id |-> "1"], tag |-> "raft_trace", h_ts |-> "126", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1411"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 7]} @@ <<"1", "1">> :> {})
38: <IsRcvAppendEntriesResponse line 255, col 5 to line 267, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 0 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 8) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>> @@ "1" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {7} @@ "1" :> {7})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 7) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [packet |-> [msg |-> "raft_append_entries_response", term |-> 1, success |-> "OK", last_log_idx |-> 7], state |-> [node_id |-> "0", leadership_state |-> "Leader", committable_indices |-> <<7>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 7, membership_state |-> "Active", new_view_idx |-> 0], function |-> "recv_append_entries_response", sent_idx |-> 7, match_idx |-> 5, from_node_id |-> "1"], tag |-> "raft_trace", h_ts |-> "128", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1411"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {} @@ <<"1", "1">> :> {})
39: <IsAdvanceCommitIndex line 236, col 8 to line 241, col 85 of module Traceccfraft>
/\ commitIndex = ("0" :> 7 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 8) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>> @@ "1" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {7})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 7) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [state |-> [node_id |-> "0", leadership_state |-> "Leader", committable_indices |-> <<>>, commit_idx |-> 7, current_view |-> 1, last_idx |-> 7, membership_state |-> "Active", new_view_idx |-> 0], configurations |-> <<[idx |-> 0, nodes |-> [0 |-> [address |-> ":"], 1 |-> [address |-> ":"]], rid |-> 0]>>, function |-> "commit"], tag |-> "raft_trace", h_ts |-> "134", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "2214"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {} @@ <<"1", "1">> :> {})
40: <IsSendAppendEntries line 179, col 5 to line 193, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 7 @@ "1" :> 0)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 8) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>> @@ "1" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {7})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 7) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<>> @@ "1" :> <<[type |-> AppendEntriesRequest, dest |-> "1", source |-> "0", term |-> 1, commitIndex |-> 7, prevLogTerm |-> 1, entries |-> <<>>, prevLogIndex |-> 7]>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [packet |-> [idx |-> 7, msg |-> "raft_append_entries", term |-> 1, leader_commit_idx |-> 7, prev_term |-> 1, prev_idx |-> 7, contains_new_view |-> FALSE, term_of_idx |-> 1], state |-> [node_id |-> "0", leadership_state |-> "Leader", committable_indices |-> <<>>, commit_idx |-> 7, current_view |-> 1, last_idx |-> 7, membership_state |-> "Active", new_view_idx |-> 0], function |-> "send_append_entries", to_node_id |-> "1", sent_idx |-> 7, match_idx |-> 7], tag |-> "raft_trace", h_ts |-> "136", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "969"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {[type |-> AppendEntriesRequest, dest |-> "1", source |-> "0", term |-> 1, commitIndex |-> 7, prevLogTerm |-> 1, entries |-> <<>>, prevLogIndex |-> 7]} @@ <<"0", "1">> :> {} @@ <<"1", "1">> :> {})
41: <IsRcvAppendEntriesRequest line 196, col 5 to line 206, col 57 of module Traceccfraft>
/\ commitIndex = ("0" :> 7 @@ "1" :> 7)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 8) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>> @@ "1" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 7) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 7]>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [packet |-> [idx |-> 7, msg |-> "raft_append_entries", term |-> 1, leader_commit_idx |-> 7, prev_term |-> 1, prev_idx |-> 7, contains_new_view |-> FALSE, term_of_idx |-> 1], state |-> [node_id |-> "1", leadership_state |-> "Follower", committable_indices |-> <<7>>, commit_idx |-> 0, current_view |-> 1, last_idx |-> 7, membership_state |-> "Active", new_view_idx |-> 0], function |-> "recv_append_entries", from_node_id |-> "0"], tag |-> "raft_trace", h_ts |-> "138", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1007"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 7]} @@ <<"1", "1">> :> {})
42: <IsAdvanceCommitIndex line 242, col 8 to line 244, col 57 of module Traceccfraft>
/\ commitIndex = ("0" :> 7 @@ "1" :> 7)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 8) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>> @@ "1" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 7) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 7]>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [state |-> [node_id |-> "1", leadership_state |-> "Follower", committable_indices |-> <<>>, commit_idx |-> 7, current_view |-> 1, last_idx |-> 7, membership_state |-> "Active", new_view_idx |-> 0], configurations |-> <<[idx |-> 0, nodes |-> [0 |-> [address |-> ":"], 1 |-> [address |-> ":"]], rid |-> 0]>>, function |-> "commit"], tag |-> "raft_trace", h_ts |-> "144", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "2214"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 7]} @@ <<"1", "1">> :> {})
43: <IsSendAppendEntriesResponse line 211, col 5 to line 213, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 7 @@ "1" :> 7)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 8) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>> @@ "1" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 7) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 7]>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [packet |-> [msg |-> "raft_append_entries_response", term |-> 1, success |-> "OK", last_log_idx |-> 7], state |-> [node_id |-> "1", leadership_state |-> "Follower", committable_indices |-> <<>>, commit_idx |-> 7, current_view |-> 1, last_idx |-> 7, membership_state |-> "Active", new_view_idx |-> 0], function |-> "send_append_entries_response", to_node_id |-> "0"], tag |-> "raft_trace", h_ts |-> "146", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1370"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 7]} @@ <<"1", "1">> :> {})
44: <IsRcvAppendEntriesResponse line 255, col 5 to line 267, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 7 @@ "1" :> 7)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 8) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>> @@ "1" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 7) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [packet |-> [msg |-> "raft_append_entries_response", term |-> 1, success |-> "OK", last_log_idx |-> 7], state |-> [node_id |-> "0", leadership_state |-> "Leader", committable_indices |-> <<>>, commit_idx |-> 7, current_view |-> 1, last_idx |-> 7, membership_state |-> "Active", new_view_idx |-> 0], function |-> "recv_append_entries_response", sent_idx |-> 7, match_idx |-> 7, from_node_id |-> "1"], tag |-> "raft_trace", h_ts |-> "147", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1411"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {} @@ <<"1", "1">> :> {})
45: <IsClientRequest line 171, col 5 to line 176, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 7 @@ "1" :> 7)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 8) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature], [term |-> 1, contentType |-> TypeEntry, request |-> 42]>> @@ "1" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>)
/\ reconfigurationCount = 0
/\ removedFromConfiguration = {}
/\ configurations = ("0" :> (0 :> {"0", "1"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 7) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [state |-> [node_id |-> "0", leadership_state |-> "Leader", committable_indices |-> <<>>, commit_idx |-> 7, current_view |-> 1, last_idx |-> 7, membership_state |-> "Active", new_view_idx |-> 0], function |-> "replicate", globally_committable |-> FALSE, seqno |-> 8, view |-> 1], tag |-> "raft_trace", h_ts |-> "151", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "600"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {} @@ <<"1", "1">> :> {})
46: <IsChangeConfiguration line 247, col 5 to line 252, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 7 @@ "1" :> 7)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 8) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeReconfiguration, configuration |-> {"0"}]>> @@ "1" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>)
/\ reconfigurationCount = 1
/\ removedFromConfiguration = {"1"}
/\ configurations = ("0" :> (0 :> {"0", "1"} @@ 9 :> {"0"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 7) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [state |-> [node_id |-> "0", leadership_state |-> "Leader", committable_indices |-> <<>>, commit_idx |-> 7, current_view |-> 1, last_idx |-> 7, membership_state |-> "Active", new_view_idx |-> 0], configurations |-> <<[idx |-> 0, nodes |-> [0 |-> [address |-> ":"], 1 |-> [address |-> ":"]], rid |-> 0]>>, new_configuration |-> [idx |-> 8, nodes |-> [0 |-> [address |-> ":"]], rid |-> 8], function |-> "add_configuration"], tag |-> "raft_trace", h_ts |-> "153", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "461"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {} @@ <<"1", "1">> :> {})
47: <IsSendAppendEntries line 179, col 5 to line 193, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 7 @@ "1" :> 7)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 9) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeReconfiguration, configuration |-> {"0"}]>> @@ "1" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature]>>)
/\ reconfigurationCount = 1
/\ removedFromConfiguration = {"1"}
/\ configurations = ("0" :> (0 :> {"0", "1"} @@ 9 :> {"0"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 7) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<>> @@ "1" :> <<[type |-> AppendEntriesRequest, dest |-> "1", source |-> "0", term |-> 1, commitIndex |-> 7, prevLogTerm |-> 1, entries |-> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42]>>, prevLogIndex |-> 7]>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [packet |-> [idx |-> 8, msg |-> "raft_append_entries", term |-> 1, leader_commit_idx |-> 7, prev_term |-> 1, prev_idx |-> 7, contains_new_view |-> FALSE, term_of_idx |-> 1], state |-> [node_id |-> "0", leadership_state |-> "Leader", committable_indices |-> <<>>, commit_idx |-> 7, current_view |-> 1, last_idx |-> 8, membership_state |-> "Active", new_view_idx |-> 0], function |-> "send_append_entries", to_node_id |-> "1", sent_idx |-> 7, match_idx |-> 7], tag |-> "raft_trace", h_ts |-> "157", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "969"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {[type |-> AppendEntriesRequest, dest |-> "1", source |-> "0", term |-> 1, commitIndex |-> 7, prevLogTerm |-> 1, entries |-> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42]>>, prevLogIndex |-> 7]} @@ <<"0", "1">> :> {} @@ <<"1", "1">> :> {})
48: <IsRcvAppendEntriesRequest line 196, col 5 to line 206, col 57 of module Traceccfraft>
/\ commitIndex = ("0" :> 7 @@ "1" :> 7)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 9) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeReconfiguration, configuration |-> {"0"}]>> @@ "1" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature], [term |-> 1, contentType |-> TypeEntry, request |-> 42]>>)
/\ reconfigurationCount = 1
/\ removedFromConfiguration = {"1"}
/\ configurations = ("0" :> (0 :> {"0", "1"} @@ 9 :> {"0"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 7) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 8]>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [packet |-> [idx |-> 8, msg |-> "raft_append_entries", term |-> 1, leader_commit_idx |-> 7, prev_term |-> 1, prev_idx |-> 7, contains_new_view |-> FALSE, term_of_idx |-> 1], state |-> [node_id |-> "1", leadership_state |-> "Follower", committable_indices |-> <<>>, commit_idx |-> 7, current_view |-> 1, last_idx |-> 7, membership_state |-> "Active", new_view_idx |-> 0], function |-> "recv_append_entries", from_node_id |-> "0"], tag |-> "raft_trace", h_ts |-> "159", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1007"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 8]} @@ <<"1", "1">> :> {})
49: <IsExecuteAppendEntries line 305, col 8 to line 310, col 81 of module Traceccfraft>
/\ commitIndex = ("0" :> 7 @@ "1" :> 7)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 9) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeReconfiguration, configuration |-> {"0"}]>> @@ "1" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature], [term |-> 1, contentType |-> TypeEntry, request |-> 42]>>)
/\ reconfigurationCount = 1
/\ removedFromConfiguration = {"1"}
/\ configurations = ("0" :> (0 :> {"0", "1"} @@ 9 :> {"0"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 7) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 8]>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [state |-> [node_id |-> "1", leadership_state |-> "Follower", committable_indices |-> <<>>, commit_idx |-> 7, current_view |-> 1, last_idx |-> 7, membership_state |-> "Active", new_view_idx |-> 0], function |-> "execute_append_entries_sync", from_node_id |-> "0"], tag |-> "raft_trace", h_ts |-> "162", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1214"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 8]} @@ <<"1", "1">> :> {})
50: <IsAddConfiguration line 216, col 5 to line 219, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 7 @@ "1" :> 7)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 9) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeReconfiguration, configuration |-> {"0"}]>> @@ "1" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature], [term |-> 1, contentType |-> TypeEntry, request |-> 42]>>)
/\ reconfigurationCount = 1
/\ removedFromConfiguration = {"1"}
/\ configurations = ("0" :> (0 :> {"0", "1"} @@ 9 :> {"0"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 7) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 8]>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [state |-> [node_id |-> "1", leadership_state |-> "Follower", committable_indices |-> <<>>, commit_idx |-> 7, current_view |-> 1, last_idx |-> 8, membership_state |-> "Active", new_view_idx |-> 0], configurations |-> <<[idx |-> 0, nodes |-> [0 |-> [address |-> ":"], 1 |-> [address |-> ":"]], rid |-> 0]>>, new_configuration |-> [idx |-> 8, nodes |-> [0 |-> [address |-> ":"]], rid |-> 8], function |-> "add_configuration"], tag |-> "raft_trace", h_ts |-> "164", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "461"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 8]} @@ <<"1", "1">> :> {})
51: <IsSendAppendEntriesResponse line 211, col 5 to line 213, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 7 @@ "1" :> 7)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 9) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeReconfiguration, configuration |-> {"0"}]>> @@ "1" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature], [term |-> 1, contentType |-> TypeEntry, request |-> 42]>>)
/\ reconfigurationCount = 1
/\ removedFromConfiguration = {"1"}
/\ configurations = ("0" :> (0 :> {"0", "1"} @@ 9 :> {"0"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 7) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 8]>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [packet |-> [msg |-> "raft_append_entries_response", term |-> 1, success |-> "OK", last_log_idx |-> 8], state |-> [node_id |-> "1", leadership_state |-> "Follower", committable_indices |-> <<>>, commit_idx |-> 7, current_view |-> 1, last_idx |-> 8, membership_state |-> "Retired", new_view_idx |-> 0], function |-> "send_append_entries_response", to_node_id |-> "0"], tag |-> "raft_trace", h_ts |-> "171", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1370"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {[type |-> AppendEntriesResponse, dest |-> "0", source |-> "1", term |-> 1, success |-> TRUE, lastLogIndex |-> 8]} @@ <<"1", "1">> :> {})
52: <IsRcvAppendEntriesResponse line 255, col 5 to line 267, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 7 @@ "1" :> 7)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 9) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeReconfiguration, configuration |-> {"0"}]>> @@ "1" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature], [term |-> 1, contentType |-> TypeEntry, request |-> 42]>>)
/\ reconfigurationCount = 1
/\ removedFromConfiguration = {"1"}
/\ configurations = ("0" :> (0 :> {"0", "1"} @@ 9 :> {"0"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 8) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [packet |-> [msg |-> "raft_append_entries_response", term |-> 1, success |-> "OK", last_log_idx |-> 8], state |-> [node_id |-> "0", leadership_state |-> "Leader", committable_indices |-> <<>>, commit_idx |-> 7, current_view |-> 1, last_idx |-> 8, membership_state |-> "Active", new_view_idx |-> 0], function |-> "recv_append_entries_response", sent_idx |-> 8, match_idx |-> 7, from_node_id |-> "1"], tag |-> "raft_trace", h_ts |-> "172", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "1411"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {} @@ <<"1", "1">> :> {})
53: <IsSignCommittableMessages line 222, col 5 to line 231, col 99 of module Traceccfraft>
/\ commitIndex = ("0" :> 7 @@ "1" :> 7)
/\ state = ("0" :> Leader @@ "1" :> Follower)
/\ nextIndex = ("0" :> ("0" :> 1 @@ "1" :> 9) @@ "1" :> ("0" :> 1 @@ "1" :> 1))
/\ log = ("0" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeReconfiguration, configuration |-> {"0"}], [term |-> 1, contentType |-> TypeSignature]>> @@ "1" :> <<[term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeEntry, request |-> 42], [term |-> 1, contentType |-> TypeSignature], [term |-> 1, contentType |-> TypeEntry, request |-> 42]>>)
/\ reconfigurationCount = 1
/\ removedFromConfiguration = {"1"}
/\ configurations = ("0" :> (0 :> {"0", "1"} @@ 9 :> {"0"}) @@ "1" :> (0 :> {"0", "1"}))
/\ commitsNotified = ("0" :> <<0, 0>> @@ "1" :> <<0, 0>>)
/\ committableIndices = ("0" :> {10} @@ "1" :> {})
/\ matchIndex = ("0" :> ("0" :> 0 @@ "1" :> 8) @@ "1" :> ("0" :> 0 @@ "1" :> 0))
/\ messages = ("0" :> <<>> @@ "1" :> <<>>)
/\ currentTerm = ("0" :> 1 @@ "1" :> 1)
/\ votedFor = ("0" :> "0" @@ "1" :> "0")
/\ _logline = [msg |-> [state |-> [node_id |-> "0", leadership_state |-> "Leader", committable_indices |-> <<>>, commit_idx |-> 7, current_view |-> 1, last_idx |-> 8, membership_state |-> "Active", new_view_idx |-> 0], function |-> "replicate", globally_committable |-> TRUE, seqno |-> 9, view |-> 1], tag |-> "raft_trace", h_ts |-> "176", thread_id |-> "100", level |-> "debug", file |-> "../src/consensus/aft/raft.h", number |-> "600"]
/\ votesGranted = ("0" :> {"0", "1"} @@ "1" :> {})
/\ _MessagesTo = (<<"0", "0">> :> {} @@ <<"1", "0">> :> {} @@ <<"0", "1">> :> {} @@ <<"1", "1">> :> {})

Trace validation of the corresponding ndjson coming out of raft.h fails at state 54 (ClientRequest) with and without this PR because committableIndices go out of sync. The spec's committableIndices is at 10, while the impl's is at 9 (log[9] is the reconfiguration but not a signature). Thus, the impl seemingly violates CommittableIndicesAreKnownSignaturesInv.

This was a red herring caused by invoking raft_driver directly instead of raft_scenario_runner.py; the latter preprocesses the log and removes superfluous replicate entries.


The scenario 5879_legacy.rt successfully trace-validates with this PR, and fails to validate without. The spec's commitIndex is at 11 with this PR and stuck at 9 without it.

@lemmy
Copy link
Contributor Author

lemmy commented Dec 27, 2023

8f6d14c introduces a trust_node command, but doesn't provide an example how to use it. I suspect that trusting the new node is crucial and causing the non-legacy raft scenario to fail after the second state. More specifically, the spec's nextIndex[i][j] - 1 is not equal to the impl's logline.msg.packet.prev_idx when validating the send_append_entries log line.

{"h_ts": "22", "thread_id": "100", "level": "debug", "tag": "raft_trace", "file": "../src/consensus/aft/raft.h", "number": "2214", "msg": {"configurations": [{"idx": 1, "nodes": {"0": {"address": ":"}}, "rid": 1}], "function": "bootstrap", "state": {"commit_idx": 2, "committable_indices": [], "current_view": 2, "last_idx": 2, "leadership_state": "Leader", "membership_state": "Active", "new_view_idx": 0, "node_id": "0"}}}
{"h_ts": "28", "thread_id": "100", "level": "debug", "tag": "raft_trace", "file": "../src/consensus/aft/raft.h", "number": "461", "msg": {"configurations": [{"idx": 1, "nodes": {"0": {"address": ":"}}, "rid": 1}], "function": "add_configuration", "new_configuration": {"idx": 3, "nodes": {"0": {"address": ":"}, "1": {"address": ":"}}, "rid": 3}, "state": {"commit_idx": 2, "committable_indices": [], "current_view": 2, "last_idx": 2, "leadership_state": "Leader", "membership_state": "Active", "new_view_idx": 0, "node_id": "0"}}}
{"h_ts": "30", "thread_id": "100", "level": "debug", "tag": "raft_trace", "file": "../src/consensus/aft/raft.h", "number": "969", "msg": {"function": "send_append_entries", "match_idx": 0, "packet": {"contains_new_view": false, "idx": 2, "leader_commit_idx": 2, "msg": "raft_append_entries", "prev_idx": 2, "prev_term": 2, "term": 2, "term_of_idx": 2}, "sent_idx": 3, "state": {"commit_idx": 2, "committable_indices": [], "current_view": 2, "last_idx": 2, "leadership_state": "Leader", "membership_state": "Active", "new_view_idx": 0, "node_id": "0"}, "to_node_id": "1"}}

@lemmy lemmy force-pushed the mku-AdvanceCommitIndexOptimization branch from 68b90ec to 70ee922 Compare January 2, 2024 17:53
lemmy added 5 commits January 4, 2024 17:05
…reas raft.h advances to the largest possible one.

Originally found in #5798.
Execute with:

```shell
.../build $ python3 ../tests/raft_scenarios_runner.py ./raft_driver ../tests/raft_scenarios/5879_deprecated
    ```
@lemmy lemmy force-pushed the mku-AdvanceCommitIndexOptimization branch from 70ee922 to 333369c Compare January 4, 2024 16:05
@lemmy lemmy merged commit 8f06c5f into main Jan 5, 2024
26 checks passed
@lemmy lemmy deleted the mku-AdvanceCommitIndexOptimization branch January 5, 2024 16:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
tla TLA+ specifications
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants