tigerbeetle 0.0.40 → 0.17.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/LICENSE +0 -25
- data/README.md +670 -80
- data/docs/migration.md +201 -0
- data/sig/tigerbeetle.rbs +271 -0
- data/src/ext/tigerbeetle/extconf.rb +47 -0
- data/src/ext/tigerbeetle/lib/aarch64-linux-gnu.2.27/libtb_client.so +0 -0
- data/src/ext/tigerbeetle/lib/aarch64-linux-musl/libtb_client.so +0 -0
- data/src/ext/tigerbeetle/lib/aarch64-macos/libtb_client.dylib +0 -0
- data/src/ext/tigerbeetle/lib/x86_64-linux-gnu.2.27/libtb_client.so +0 -0
- data/src/ext/tigerbeetle/lib/x86_64-linux-musl/libtb_client.so +0 -0
- data/src/ext/tigerbeetle/lib/x86_64-macos/libtb_client.dylib +0 -0
- data/src/ext/tigerbeetle/lib/x86_64-windows/tb_client.dll +0 -0
- data/src/ext/tigerbeetle/rb_tb_gen.h +458 -0
- data/{ext/tb_client/tigerbeetle/src/clients/rust/assets → src/ext/tigerbeetle}/tb_client.h +18 -16
- data/src/ext/tigerbeetle/tigerbeetle.c +310 -0
- data/src/tigerbeetle/bindings.rb +347 -0
- data/src/tigerbeetle/client.rb +129 -0
- data/src/tigerbeetle/completion_dispatcher.rb +108 -0
- data/src/tigerbeetle/id.rb +40 -0
- data/src/tigerbeetle/tb.rb +3 -0
- data/src/tigerbeetle/version.rb +3 -0
- data/src/tigerbeetle.rb +39 -0
- metadata +33 -350
- data/CHANGELOG.md +0 -162
- data/ext/tb_client/extconf.rb +0 -41
- data/ext/tb_client/tigerbeetle/LICENSE +0 -177
- data/ext/tb_client/tigerbeetle/build.zig +0 -2296
- data/ext/tb_client/tigerbeetle/src/aof.zig +0 -1000
- data/ext/tb_client/tigerbeetle/src/build/fetch.zig +0 -112
- data/ext/tb_client/tigerbeetle/src/build_multiversion.zig +0 -808
- data/ext/tb_client/tigerbeetle/src/cdc/amqp/protocol.zig +0 -1283
- data/ext/tb_client/tigerbeetle/src/cdc/amqp/spec.zig +0 -1704
- data/ext/tb_client/tigerbeetle/src/cdc/amqp/types.zig +0 -341
- data/ext/tb_client/tigerbeetle/src/cdc/amqp.zig +0 -1450
- data/ext/tb_client/tigerbeetle/src/cdc/runner.zig +0 -1659
- data/ext/tb_client/tigerbeetle/src/clients/c/samples/main.c +0 -406
- data/ext/tb_client/tigerbeetle/src/clients/c/tb_client/context.zig +0 -1092
- data/ext/tb_client/tigerbeetle/src/clients/c/tb_client/echo_client.zig +0 -286
- data/ext/tb_client/tigerbeetle/src/clients/c/tb_client/packet.zig +0 -158
- data/ext/tb_client/tigerbeetle/src/clients/c/tb_client/signal.zig +0 -229
- data/ext/tb_client/tigerbeetle/src/clients/c/tb_client/signal_fuzz.zig +0 -110
- data/ext/tb_client/tigerbeetle/src/clients/c/tb_client.h +0 -386
- data/ext/tb_client/tigerbeetle/src/clients/c/tb_client.zig +0 -34
- data/ext/tb_client/tigerbeetle/src/clients/c/tb_client_exports.zig +0 -281
- data/ext/tb_client/tigerbeetle/src/clients/c/tb_client_header.zig +0 -312
- data/ext/tb_client/tigerbeetle/src/clients/c/tb_client_header_test.zig +0 -138
- data/ext/tb_client/tigerbeetle/src/clients/c/test.zig +0 -466
- data/ext/tb_client/tigerbeetle/src/clients/docs_samples.zig +0 -157
- data/ext/tb_client/tigerbeetle/src/clients/docs_types.zig +0 -90
- data/ext/tb_client/tigerbeetle/src/clients/dotnet/ci.zig +0 -203
- data/ext/tb_client/tigerbeetle/src/clients/dotnet/docs.zig +0 -79
- data/ext/tb_client/tigerbeetle/src/clients/dotnet/dotnet_bindings.zig +0 -542
- data/ext/tb_client/tigerbeetle/src/clients/go/ci.zig +0 -109
- data/ext/tb_client/tigerbeetle/src/clients/go/docs.zig +0 -86
- data/ext/tb_client/tigerbeetle/src/clients/go/go_bindings.zig +0 -370
- data/ext/tb_client/tigerbeetle/src/clients/go/pkg/native/tb_client.h +0 -386
- data/ext/tb_client/tigerbeetle/src/clients/java/ci.zig +0 -167
- data/ext/tb_client/tigerbeetle/src/clients/java/docs.zig +0 -126
- data/ext/tb_client/tigerbeetle/src/clients/java/java_bindings.zig +0 -996
- data/ext/tb_client/tigerbeetle/src/clients/java/src/client.zig +0 -748
- data/ext/tb_client/tigerbeetle/src/clients/java/src/jni.zig +0 -3238
- data/ext/tb_client/tigerbeetle/src/clients/java/src/jni_tests.zig +0 -1718
- data/ext/tb_client/tigerbeetle/src/clients/java/src/jni_thread_cleaner.zig +0 -190
- data/ext/tb_client/tigerbeetle/src/clients/node/ci.zig +0 -104
- data/ext/tb_client/tigerbeetle/src/clients/node/docs.zig +0 -75
- data/ext/tb_client/tigerbeetle/src/clients/node/node.zig +0 -522
- data/ext/tb_client/tigerbeetle/src/clients/node/node_bindings.zig +0 -267
- data/ext/tb_client/tigerbeetle/src/clients/node/src/c.zig +0 -3
- data/ext/tb_client/tigerbeetle/src/clients/node/src/translate.zig +0 -379
- data/ext/tb_client/tigerbeetle/src/clients/python/ci.zig +0 -131
- data/ext/tb_client/tigerbeetle/src/clients/python/docs.zig +0 -63
- data/ext/tb_client/tigerbeetle/src/clients/python/python_bindings.zig +0 -588
- data/ext/tb_client/tigerbeetle/src/clients/rust/ci.zig +0 -73
- data/ext/tb_client/tigerbeetle/src/clients/rust/docs.zig +0 -106
- data/ext/tb_client/tigerbeetle/src/clients/rust/rust_bindings.zig +0 -305
- data/ext/tb_client/tigerbeetle/src/config.zig +0 -296
- data/ext/tb_client/tigerbeetle/src/constants.zig +0 -790
- data/ext/tb_client/tigerbeetle/src/copyhound.zig +0 -202
- data/ext/tb_client/tigerbeetle/src/counting_allocator.zig +0 -72
- data/ext/tb_client/tigerbeetle/src/direction.zig +0 -120
- data/ext/tb_client/tigerbeetle/src/docs_website/build.zig +0 -158
- data/ext/tb_client/tigerbeetle/src/docs_website/src/content.zig +0 -156
- data/ext/tb_client/tigerbeetle/src/docs_website/src/docs.zig +0 -252
- data/ext/tb_client/tigerbeetle/src/docs_website/src/file_checker.zig +0 -313
- data/ext/tb_client/tigerbeetle/src/docs_website/src/html.zig +0 -87
- data/ext/tb_client/tigerbeetle/src/docs_website/src/page_writer.zig +0 -63
- data/ext/tb_client/tigerbeetle/src/docs_website/src/redirects.zig +0 -47
- data/ext/tb_client/tigerbeetle/src/docs_website/src/search_index_writer.zig +0 -28
- data/ext/tb_client/tigerbeetle/src/docs_website/src/service_worker_writer.zig +0 -61
- data/ext/tb_client/tigerbeetle/src/docs_website/src/single_page_writer.zig +0 -169
- data/ext/tb_client/tigerbeetle/src/docs_website/src/website.zig +0 -46
- data/ext/tb_client/tigerbeetle/src/ewah.zig +0 -445
- data/ext/tb_client/tigerbeetle/src/ewah_benchmark.zig +0 -128
- data/ext/tb_client/tigerbeetle/src/ewah_fuzz.zig +0 -171
- data/ext/tb_client/tigerbeetle/src/fuzz_tests.zig +0 -179
- data/ext/tb_client/tigerbeetle/src/integration_tests.zig +0 -662
- data/ext/tb_client/tigerbeetle/src/io/common.zig +0 -155
- data/ext/tb_client/tigerbeetle/src/io/darwin.zig +0 -1093
- data/ext/tb_client/tigerbeetle/src/io/linux.zig +0 -1880
- data/ext/tb_client/tigerbeetle/src/io/test.zig +0 -1005
- data/ext/tb_client/tigerbeetle/src/io/windows.zig +0 -1598
- data/ext/tb_client/tigerbeetle/src/io.zig +0 -34
- data/ext/tb_client/tigerbeetle/src/iops.zig +0 -134
- data/ext/tb_client/tigerbeetle/src/list.zig +0 -236
- data/ext/tb_client/tigerbeetle/src/lsm/binary_search.zig +0 -848
- data/ext/tb_client/tigerbeetle/src/lsm/binary_search_benchmark.zig +0 -179
- data/ext/tb_client/tigerbeetle/src/lsm/cache_map.zig +0 -424
- data/ext/tb_client/tigerbeetle/src/lsm/cache_map_fuzz.zig +0 -420
- data/ext/tb_client/tigerbeetle/src/lsm/compaction.zig +0 -2114
- data/ext/tb_client/tigerbeetle/src/lsm/composite_key.zig +0 -185
- data/ext/tb_client/tigerbeetle/src/lsm/forest.zig +0 -1146
- data/ext/tb_client/tigerbeetle/src/lsm/forest_fuzz.zig +0 -1102
- data/ext/tb_client/tigerbeetle/src/lsm/forest_table_iterator.zig +0 -200
- data/ext/tb_client/tigerbeetle/src/lsm/groove.zig +0 -1495
- data/ext/tb_client/tigerbeetle/src/lsm/k_way_merge.zig +0 -739
- data/ext/tb_client/tigerbeetle/src/lsm/k_way_merge_benchmark.zig +0 -166
- data/ext/tb_client/tigerbeetle/src/lsm/manifest.zig +0 -754
- data/ext/tb_client/tigerbeetle/src/lsm/manifest_level.zig +0 -1294
- data/ext/tb_client/tigerbeetle/src/lsm/manifest_level_fuzz.zig +0 -510
- data/ext/tb_client/tigerbeetle/src/lsm/manifest_log.zig +0 -1241
- data/ext/tb_client/tigerbeetle/src/lsm/manifest_log_fuzz.zig +0 -628
- data/ext/tb_client/tigerbeetle/src/lsm/node_pool.zig +0 -247
- data/ext/tb_client/tigerbeetle/src/lsm/scan_buffer.zig +0 -116
- data/ext/tb_client/tigerbeetle/src/lsm/scan_builder.zig +0 -543
- data/ext/tb_client/tigerbeetle/src/lsm/scan_fuzz.zig +0 -938
- data/ext/tb_client/tigerbeetle/src/lsm/scan_lookup.zig +0 -293
- data/ext/tb_client/tigerbeetle/src/lsm/scan_merge.zig +0 -359
- data/ext/tb_client/tigerbeetle/src/lsm/scan_range.zig +0 -99
- data/ext/tb_client/tigerbeetle/src/lsm/scan_state.zig +0 -17
- data/ext/tb_client/tigerbeetle/src/lsm/scan_tree.zig +0 -962
- data/ext/tb_client/tigerbeetle/src/lsm/schema.zig +0 -617
- data/ext/tb_client/tigerbeetle/src/lsm/scratch_memory.zig +0 -84
- data/ext/tb_client/tigerbeetle/src/lsm/segmented_array.zig +0 -1500
- data/ext/tb_client/tigerbeetle/src/lsm/segmented_array_benchmark.zig +0 -149
- data/ext/tb_client/tigerbeetle/src/lsm/segmented_array_fuzz.zig +0 -7
- data/ext/tb_client/tigerbeetle/src/lsm/set_associative_cache.zig +0 -865
- data/ext/tb_client/tigerbeetle/src/lsm/table.zig +0 -607
- data/ext/tb_client/tigerbeetle/src/lsm/table_memory.zig +0 -843
- data/ext/tb_client/tigerbeetle/src/lsm/table_value_iterator.zig +0 -90
- data/ext/tb_client/tigerbeetle/src/lsm/timestamp_range.zig +0 -40
- data/ext/tb_client/tigerbeetle/src/lsm/tree.zig +0 -629
- data/ext/tb_client/tigerbeetle/src/lsm/tree_fuzz.zig +0 -933
- data/ext/tb_client/tigerbeetle/src/lsm/zig_zag_merge.zig +0 -534
- data/ext/tb_client/tigerbeetle/src/message_buffer.zig +0 -469
- data/ext/tb_client/tigerbeetle/src/message_bus.zig +0 -1219
- data/ext/tb_client/tigerbeetle/src/message_bus_fuzz.zig +0 -936
- data/ext/tb_client/tigerbeetle/src/message_pool.zig +0 -343
- data/ext/tb_client/tigerbeetle/src/multiversion.zig +0 -2195
- data/ext/tb_client/tigerbeetle/src/queue.zig +0 -390
- data/ext/tb_client/tigerbeetle/src/repl/completion.zig +0 -201
- data/ext/tb_client/tigerbeetle/src/repl/parser.zig +0 -1356
- data/ext/tb_client/tigerbeetle/src/repl/terminal.zig +0 -496
- data/ext/tb_client/tigerbeetle/src/repl.zig +0 -1034
- data/ext/tb_client/tigerbeetle/src/scripts/amqp.zig +0 -973
- data/ext/tb_client/tigerbeetle/src/scripts/cfo.zig +0 -1866
- data/ext/tb_client/tigerbeetle/src/scripts/changelog.zig +0 -304
- data/ext/tb_client/tigerbeetle/src/scripts/ci.zig +0 -227
- data/ext/tb_client/tigerbeetle/src/scripts/client_readmes.zig +0 -658
- data/ext/tb_client/tigerbeetle/src/scripts/devhub.zig +0 -466
- data/ext/tb_client/tigerbeetle/src/scripts/release.zig +0 -1058
- data/ext/tb_client/tigerbeetle/src/scripts.zig +0 -105
- data/ext/tb_client/tigerbeetle/src/shell.zig +0 -1195
- data/ext/tb_client/tigerbeetle/src/stack.zig +0 -260
- data/ext/tb_client/tigerbeetle/src/state_machine/auditor.zig +0 -911
- data/ext/tb_client/tigerbeetle/src/state_machine/workload.zig +0 -2079
- data/ext/tb_client/tigerbeetle/src/state_machine.zig +0 -4872
- data/ext/tb_client/tigerbeetle/src/state_machine_fuzz.zig +0 -288
- data/ext/tb_client/tigerbeetle/src/state_machine_tests.zig +0 -3128
- data/ext/tb_client/tigerbeetle/src/static_allocator.zig +0 -82
- data/ext/tb_client/tigerbeetle/src/stdx/bit_set.zig +0 -157
- data/ext/tb_client/tigerbeetle/src/stdx/bounded_array.zig +0 -292
- data/ext/tb_client/tigerbeetle/src/stdx/debug.zig +0 -65
- data/ext/tb_client/tigerbeetle/src/stdx/flags.zig +0 -1414
- data/ext/tb_client/tigerbeetle/src/stdx/huge_page_allocator.zig +0 -115
- data/ext/tb_client/tigerbeetle/src/stdx/mlock.zig +0 -92
- data/ext/tb_client/tigerbeetle/src/stdx/prng.zig +0 -677
- data/ext/tb_client/tigerbeetle/src/stdx/radix.zig +0 -336
- data/ext/tb_client/tigerbeetle/src/stdx/ring_buffer.zig +0 -511
- data/ext/tb_client/tigerbeetle/src/stdx/sort_test.zig +0 -112
- data/ext/tb_client/tigerbeetle/src/stdx/stdx.zig +0 -1163
- data/ext/tb_client/tigerbeetle/src/stdx/testing/low_level_hash_vectors.zig +0 -142
- data/ext/tb_client/tigerbeetle/src/stdx/testing/snaptest.zig +0 -361
- data/ext/tb_client/tigerbeetle/src/stdx/time_units.zig +0 -275
- data/ext/tb_client/tigerbeetle/src/stdx/unshare.zig +0 -295
- data/ext/tb_client/tigerbeetle/src/stdx/vendored/aegis.zig +0 -436
- data/ext/tb_client/tigerbeetle/src/stdx/windows.zig +0 -48
- data/ext/tb_client/tigerbeetle/src/stdx/zipfian.zig +0 -402
- data/ext/tb_client/tigerbeetle/src/storage.zig +0 -489
- data/ext/tb_client/tigerbeetle/src/storage_fuzz.zig +0 -180
- data/ext/tb_client/tigerbeetle/src/testing/bench.zig +0 -146
- data/ext/tb_client/tigerbeetle/src/testing/cluster/grid_checker.zig +0 -53
- data/ext/tb_client/tigerbeetle/src/testing/cluster/journal_checker.zig +0 -61
- data/ext/tb_client/tigerbeetle/src/testing/cluster/manifest_checker.zig +0 -76
- data/ext/tb_client/tigerbeetle/src/testing/cluster/message_bus.zig +0 -110
- data/ext/tb_client/tigerbeetle/src/testing/cluster/network.zig +0 -412
- data/ext/tb_client/tigerbeetle/src/testing/cluster/state_checker.zig +0 -331
- data/ext/tb_client/tigerbeetle/src/testing/cluster/storage_checker.zig +0 -458
- data/ext/tb_client/tigerbeetle/src/testing/cluster.zig +0 -1198
- data/ext/tb_client/tigerbeetle/src/testing/exhaustigen.zig +0 -128
- data/ext/tb_client/tigerbeetle/src/testing/fixtures.zig +0 -181
- data/ext/tb_client/tigerbeetle/src/testing/fuzz.zig +0 -144
- data/ext/tb_client/tigerbeetle/src/testing/id.zig +0 -97
- data/ext/tb_client/tigerbeetle/src/testing/io.zig +0 -317
- data/ext/tb_client/tigerbeetle/src/testing/marks.zig +0 -126
- data/ext/tb_client/tigerbeetle/src/testing/packet_simulator.zig +0 -533
- data/ext/tb_client/tigerbeetle/src/testing/reply_sequence.zig +0 -154
- data/ext/tb_client/tigerbeetle/src/testing/state_machine.zig +0 -389
- data/ext/tb_client/tigerbeetle/src/testing/storage.zig +0 -1247
- data/ext/tb_client/tigerbeetle/src/testing/table.zig +0 -249
- data/ext/tb_client/tigerbeetle/src/testing/time.zig +0 -98
- data/ext/tb_client/tigerbeetle/src/testing/tmp_tigerbeetle.zig +0 -212
- data/ext/tb_client/tigerbeetle/src/testing/vortex/constants.zig +0 -26
- data/ext/tb_client/tigerbeetle/src/testing/vortex/faulty_network.zig +0 -579
- data/ext/tb_client/tigerbeetle/src/testing/vortex/java_driver/ci.zig +0 -39
- data/ext/tb_client/tigerbeetle/src/testing/vortex/logged_process.zig +0 -214
- data/ext/tb_client/tigerbeetle/src/testing/vortex/rust_driver/ci.zig +0 -34
- data/ext/tb_client/tigerbeetle/src/testing/vortex/supervisor.zig +0 -785
- data/ext/tb_client/tigerbeetle/src/testing/vortex/workload.zig +0 -543
- data/ext/tb_client/tigerbeetle/src/testing/vortex/zig_driver.zig +0 -181
- data/ext/tb_client/tigerbeetle/src/tidy.zig +0 -1449
- data/ext/tb_client/tigerbeetle/src/tigerbeetle/benchmark_driver.zig +0 -227
- data/ext/tb_client/tigerbeetle/src/tigerbeetle/benchmark_load.zig +0 -1069
- data/ext/tb_client/tigerbeetle/src/tigerbeetle/cli.zig +0 -1422
- data/ext/tb_client/tigerbeetle/src/tigerbeetle/inspect.zig +0 -1658
- data/ext/tb_client/tigerbeetle/src/tigerbeetle/inspect_integrity.zig +0 -518
- data/ext/tb_client/tigerbeetle/src/tigerbeetle/libtb_client.zig +0 -36
- data/ext/tb_client/tigerbeetle/src/tigerbeetle/main.zig +0 -646
- data/ext/tb_client/tigerbeetle/src/tigerbeetle.zig +0 -958
- data/ext/tb_client/tigerbeetle/src/time.zig +0 -236
- data/ext/tb_client/tigerbeetle/src/trace/event.zig +0 -745
- data/ext/tb_client/tigerbeetle/src/trace/statsd.zig +0 -462
- data/ext/tb_client/tigerbeetle/src/trace.zig +0 -556
- data/ext/tb_client/tigerbeetle/src/unit_tests.zig +0 -321
- data/ext/tb_client/tigerbeetle/src/vopr.zig +0 -1785
- data/ext/tb_client/tigerbeetle/src/vortex.zig +0 -101
- data/ext/tb_client/tigerbeetle/src/vsr/checkpoint_trailer.zig +0 -473
- data/ext/tb_client/tigerbeetle/src/vsr/checksum.zig +0 -208
- data/ext/tb_client/tigerbeetle/src/vsr/checksum_benchmark.zig +0 -43
- data/ext/tb_client/tigerbeetle/src/vsr/client.zig +0 -768
- data/ext/tb_client/tigerbeetle/src/vsr/client_replies.zig +0 -532
- data/ext/tb_client/tigerbeetle/src/vsr/client_sessions.zig +0 -338
- data/ext/tb_client/tigerbeetle/src/vsr/clock.zig +0 -1019
- data/ext/tb_client/tigerbeetle/src/vsr/fault_detector.zig +0 -279
- data/ext/tb_client/tigerbeetle/src/vsr/free_set.zig +0 -1381
- data/ext/tb_client/tigerbeetle/src/vsr/free_set_fuzz.zig +0 -315
- data/ext/tb_client/tigerbeetle/src/vsr/grid.zig +0 -1460
- data/ext/tb_client/tigerbeetle/src/vsr/grid_blocks_missing.zig +0 -757
- data/ext/tb_client/tigerbeetle/src/vsr/grid_scrubber.zig +0 -797
- data/ext/tb_client/tigerbeetle/src/vsr/journal.zig +0 -2586
- data/ext/tb_client/tigerbeetle/src/vsr/marzullo.zig +0 -308
- data/ext/tb_client/tigerbeetle/src/vsr/message_header.zig +0 -1777
- data/ext/tb_client/tigerbeetle/src/vsr/multi_batch.zig +0 -715
- data/ext/tb_client/tigerbeetle/src/vsr/multi_batch_fuzz.zig +0 -185
- data/ext/tb_client/tigerbeetle/src/vsr/repair_budget.zig +0 -333
- data/ext/tb_client/tigerbeetle/src/vsr/replica.zig +0 -12356
- data/ext/tb_client/tigerbeetle/src/vsr/replica_format.zig +0 -416
- data/ext/tb_client/tigerbeetle/src/vsr/replica_reformat.zig +0 -165
- data/ext/tb_client/tigerbeetle/src/vsr/replica_test.zig +0 -2928
- data/ext/tb_client/tigerbeetle/src/vsr/routing.zig +0 -1075
- data/ext/tb_client/tigerbeetle/src/vsr/superblock.zig +0 -1603
- data/ext/tb_client/tigerbeetle/src/vsr/superblock_fuzz.zig +0 -484
- data/ext/tb_client/tigerbeetle/src/vsr/superblock_quorums.zig +0 -405
- data/ext/tb_client/tigerbeetle/src/vsr/superblock_quorums_fuzz.zig +0 -355
- data/ext/tb_client/tigerbeetle/src/vsr/sync.zig +0 -29
- data/ext/tb_client/tigerbeetle/src/vsr.zig +0 -1727
- data/lib/tb_client/shared_lib.rb +0 -66
- data/lib/tb_client.rb +0 -282
- data/lib/tigerbeetle/account.rb +0 -38
- data/lib/tigerbeetle/account_balance.rb +0 -23
- data/lib/tigerbeetle/account_filter.rb +0 -31
- data/lib/tigerbeetle/atomic_counter.rb +0 -14
- data/lib/tigerbeetle/client.rb +0 -214
- data/lib/tigerbeetle/converters/account.rb +0 -63
- data/lib/tigerbeetle/converters/account_balance.rb +0 -31
- data/lib/tigerbeetle/converters/account_filter.rb +0 -32
- data/lib/tigerbeetle/converters/base.rb +0 -35
- data/lib/tigerbeetle/converters/create_accounts_result.rb +0 -21
- data/lib/tigerbeetle/converters/create_transfers_result.rb +0 -21
- data/lib/tigerbeetle/converters/query_filter.rb +0 -33
- data/lib/tigerbeetle/converters/time.rb +0 -23
- data/lib/tigerbeetle/converters/transfer.rb +0 -64
- data/lib/tigerbeetle/converters/uint_128.rb +0 -24
- data/lib/tigerbeetle/converters.rb +0 -12
- data/lib/tigerbeetle/error.rb +0 -4
- data/lib/tigerbeetle/id.rb +0 -30
- data/lib/tigerbeetle/platforms.rb +0 -9
- data/lib/tigerbeetle/query_filter.rb +0 -31
- data/lib/tigerbeetle/request.rb +0 -7
- data/lib/tigerbeetle/transfer.rb +0 -40
- data/lib/tigerbeetle/version.rb +0 -4
- data/lib/tigerbeetle.rb +0 -13
- data/tigerbeetle.gemspec +0 -60
|
@@ -1,296 +0,0 @@
|
|
|
1
|
-
//! Raw configuration values.
|
|
2
|
-
//!
|
|
3
|
-
//! Code which needs these values should use `constants.zig` instead.
|
|
4
|
-
//! Configuration values are set from a combination of:
|
|
5
|
-
//! - default values
|
|
6
|
-
//! - `root.tigerbeetle_config`
|
|
7
|
-
//! - `@import("tigerbeetle_options")`
|
|
8
|
-
|
|
9
|
-
const builtin = @import("builtin");
|
|
10
|
-
const std = @import("std");
|
|
11
|
-
const stdx = @import("stdx");
|
|
12
|
-
const assert = std.debug.assert;
|
|
13
|
-
|
|
14
|
-
const root = @import("root");
|
|
15
|
-
|
|
16
|
-
const KiB = stdx.KiB;
|
|
17
|
-
const MiB = stdx.MiB;
|
|
18
|
-
const GiB = stdx.GiB;
|
|
19
|
-
const TiB = stdx.TiB;
|
|
20
|
-
|
|
21
|
-
const BuildOptions = struct {
|
|
22
|
-
config_verify: bool,
|
|
23
|
-
git_commit: ?[40]u8,
|
|
24
|
-
release: []const u8,
|
|
25
|
-
release_client_min: []const u8,
|
|
26
|
-
};
|
|
27
|
-
|
|
28
|
-
// Allow setting build-time config either via `build.zig` `Options`, or via a struct in the root
|
|
29
|
-
// file.
|
|
30
|
-
const build_options: BuildOptions = blk: {
|
|
31
|
-
const vsr_options =
|
|
32
|
-
if (@hasDecl(root, "vsr_options"))
|
|
33
|
-
root.vsr_options
|
|
34
|
-
else
|
|
35
|
-
@import("vsr_options");
|
|
36
|
-
|
|
37
|
-
// Both the root file and Zig's `addOptions` expose the struct as identical structurally,
|
|
38
|
-
// but a different type from a nominal typing perspective.
|
|
39
|
-
var result: BuildOptions = undefined;
|
|
40
|
-
for (std.meta.fields(BuildOptions)) |field| {
|
|
41
|
-
@field(result, field.name) = launder_type(
|
|
42
|
-
field.type,
|
|
43
|
-
@field(vsr_options, field.name),
|
|
44
|
-
);
|
|
45
|
-
}
|
|
46
|
-
break :blk result;
|
|
47
|
-
};
|
|
48
|
-
|
|
49
|
-
fn launder_type(comptime T: type, comptime value: anytype) T {
|
|
50
|
-
if (T == bool or
|
|
51
|
-
T == []const u8 or
|
|
52
|
-
T == ?[]const u8 or
|
|
53
|
-
T == ?[40]u8)
|
|
54
|
-
{
|
|
55
|
-
return value;
|
|
56
|
-
}
|
|
57
|
-
if (@typeInfo(T) == .@"enum") {
|
|
58
|
-
assert(@typeInfo(@TypeOf(value)) == .@"enum" or @typeInfo(@TypeOf(value)) == .enum_literal);
|
|
59
|
-
return @field(T, @tagName(value));
|
|
60
|
-
}
|
|
61
|
-
unreachable;
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
const vsr = @import("vsr.zig");
|
|
65
|
-
const sector_size = @import("constants.zig").sector_size;
|
|
66
|
-
|
|
67
|
-
pub const Config = struct {
|
|
68
|
-
pub const Cluster = ConfigCluster;
|
|
69
|
-
pub const Process = ConfigProcess;
|
|
70
|
-
|
|
71
|
-
cluster: ConfigCluster,
|
|
72
|
-
process: ConfigProcess,
|
|
73
|
-
|
|
74
|
-
/// Returns true if the configuration is intended for "production".
|
|
75
|
-
/// Intended solely for extra sanity-checks: all meaningful decisions should be driven by
|
|
76
|
-
/// specific fields of the config.
|
|
77
|
-
pub fn is_production(config: *const Config) bool {
|
|
78
|
-
return config.cluster.journal_slot_count > ConfigCluster.journal_slot_count_min;
|
|
79
|
-
}
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
/// Configurations which are tunable per-replica (or per-client).
|
|
83
|
-
/// - Replica configs need not equal each other.
|
|
84
|
-
/// - Client configs need not equal each other.
|
|
85
|
-
/// - Client configs need not equal replica configs.
|
|
86
|
-
/// - Replica configs can change between restarts.
|
|
87
|
-
///
|
|
88
|
-
/// Fields are documented within constants.zig.
|
|
89
|
-
// TODO: Some of these could be runtime parameters (e.g. grid_scrubber_cycle_ms).
|
|
90
|
-
const ConfigProcess = struct {
|
|
91
|
-
log_level: std.log.Level = .info,
|
|
92
|
-
verify: bool,
|
|
93
|
-
release: vsr.Release = vsr.Release.minimum,
|
|
94
|
-
release_client_min: vsr.Release = vsr.Release.minimum,
|
|
95
|
-
git_commit: ?[40]u8 = null,
|
|
96
|
-
port: u16 = 3001,
|
|
97
|
-
address: []const u8 = "127.0.0.1",
|
|
98
|
-
storage_size_limit_default: u64 = 16 * TiB,
|
|
99
|
-
storage_size_limit_max: u64 = 64 * TiB,
|
|
100
|
-
memory_size_max_default: u64 = GiB,
|
|
101
|
-
cache_accounts_size_default: u64,
|
|
102
|
-
cache_transfers_size_default: u64,
|
|
103
|
-
cache_transfers_pending_size_default: u64,
|
|
104
|
-
client_request_queue_max: u32 = 2,
|
|
105
|
-
lsm_manifest_node_size: u64 = 16 * KiB,
|
|
106
|
-
connection_delay_min_ms: u64 = 50,
|
|
107
|
-
connection_delay_max_ms: u64 = 1000,
|
|
108
|
-
tcp_backlog: u31 = 64,
|
|
109
|
-
tcp_rcvbuf: c_int = 4 * MiB,
|
|
110
|
-
tcp_keepalive: bool = true,
|
|
111
|
-
tcp_keepidle: c_int = 5,
|
|
112
|
-
tcp_keepintvl: c_int = 4,
|
|
113
|
-
tcp_keepcnt: c_int = 3,
|
|
114
|
-
tcp_nodelay: bool = true,
|
|
115
|
-
direct_io: bool,
|
|
116
|
-
journal_iops_read_max: u32 = 8,
|
|
117
|
-
journal_iops_write_max: u32 = 32,
|
|
118
|
-
client_replies_iops_read_max: u32 = 1,
|
|
119
|
-
client_replies_iops_write_max: u32 = 2,
|
|
120
|
-
client_request_completion_warn_ms: u64 = 200,
|
|
121
|
-
tick_ms: u63 = 10,
|
|
122
|
-
rtt_ms: u64 = 300,
|
|
123
|
-
rtt_max_ms: u64 = 1000 * 60,
|
|
124
|
-
rtt_multiple: u8 = 2,
|
|
125
|
-
backoff_min_ms: u64 = 10,
|
|
126
|
-
backoff_max_ms: u64 = 10000,
|
|
127
|
-
clock_offset_tolerance_max_ms: u64 = 10000,
|
|
128
|
-
clock_epoch_max_ms: u64 = 60000,
|
|
129
|
-
clock_synchronization_window_min_ms: u64 = 2000,
|
|
130
|
-
clock_synchronization_window_max_ms: u64 = 20000,
|
|
131
|
-
grid_iops_read_max: u64 = 32,
|
|
132
|
-
grid_iops_write_max: u64 = 32,
|
|
133
|
-
grid_cache_size_default: u64 = GiB,
|
|
134
|
-
grid_repair_request_max: u32 = 4,
|
|
135
|
-
grid_repair_reads_max: u32 = 4,
|
|
136
|
-
grid_missing_blocks_max: u32 = 30,
|
|
137
|
-
grid_missing_tables_max: u32 = 6,
|
|
138
|
-
grid_scrubber_reads_max: u32 = 1,
|
|
139
|
-
grid_scrubber_cycle_ms: u64 = std.time.ms_per_day * 180,
|
|
140
|
-
grid_scrubber_interval_ms_min: u64 = std.time.ms_per_s / 20,
|
|
141
|
-
grid_scrubber_interval_ms_max: u64 = std.time.ms_per_s * 10,
|
|
142
|
-
multiversion_binary_platform_size_max: u64 = 64 * MiB,
|
|
143
|
-
multiversion_poll_interval_ms: u64 = 1000,
|
|
144
|
-
};
|
|
145
|
-
|
|
146
|
-
/// Configurations which are tunable per-cluster.
|
|
147
|
-
/// - All replicas within a cluster must have the same configuration.
|
|
148
|
-
/// - Replicas must reuse the same configuration when the binary is upgraded — they do not change
|
|
149
|
-
/// over the cluster lifetime.
|
|
150
|
-
/// - The storage formats generated by different ConfigClusters are incompatible.
|
|
151
|
-
///
|
|
152
|
-
/// Fields are documented within constants.zig.
|
|
153
|
-
const ConfigCluster = struct {
|
|
154
|
-
cache_line_size: comptime_int = 64,
|
|
155
|
-
clients_max: u32,
|
|
156
|
-
pipeline_prepare_queue_max: u32 = 8,
|
|
157
|
-
view_change_headers_suffix_max: u32 = 8 + 1,
|
|
158
|
-
quorum_replication_max: u8 = 3,
|
|
159
|
-
journal_slot_count: u32 = 1024,
|
|
160
|
-
message_size_max: u32 = 1 * MiB,
|
|
161
|
-
superblock_copies: comptime_int = 4,
|
|
162
|
-
block_size: comptime_int = 512 * KiB,
|
|
163
|
-
lsm_levels: u6 = 7,
|
|
164
|
-
lsm_growth_factor: u32 = 8,
|
|
165
|
-
lsm_compaction_ops: comptime_int = 32,
|
|
166
|
-
lsm_snapshots_max: u32 = 32,
|
|
167
|
-
lsm_manifest_compact_extra_blocks: comptime_int = 1,
|
|
168
|
-
lsm_table_coalescing_threshold_percent: comptime_int = 50,
|
|
169
|
-
vsr_releases_max: u32 = 64,
|
|
170
|
-
|
|
171
|
-
/// Minimal value.
|
|
172
|
-
// TODO(batiati): Maybe this constant should be derived from `grid_iops_read_max`,
|
|
173
|
-
// since each scan can read from `lsm_levels` in parallel.
|
|
174
|
-
lsm_scans_max: comptime_int = 6,
|
|
175
|
-
|
|
176
|
-
/// The WAL requires at least two sectors of redundant headers — otherwise we could lose them
|
|
177
|
-
/// all to a single torn write. A replica needs at least one valid redundant header to
|
|
178
|
-
/// determine an (untrusted) maximum op in recover_torn_prepare(), without which it cannot
|
|
179
|
-
/// truncate a torn prepare.
|
|
180
|
-
pub const journal_slot_count_min = 2 * @divExact(sector_size, @sizeOf(vsr.Header));
|
|
181
|
-
|
|
182
|
-
pub const clients_max_min = 1;
|
|
183
|
-
|
|
184
|
-
/// The smallest possible message_size_max (for use in the simulator to improve performance).
|
|
185
|
-
/// The message body must have room for pipeline_prepare_queue_max headers in the DVC.
|
|
186
|
-
pub fn message_size_max_min(clients_max: u32) u32 {
|
|
187
|
-
return @max(
|
|
188
|
-
sector_size,
|
|
189
|
-
std.mem.alignForward(
|
|
190
|
-
u32,
|
|
191
|
-
@sizeOf(vsr.Header) + clients_max * @sizeOf(vsr.Header),
|
|
192
|
-
sector_size,
|
|
193
|
-
),
|
|
194
|
-
);
|
|
195
|
-
}
|
|
196
|
-
|
|
197
|
-
/// Fingerprint of the cluster-wide configuration.
|
|
198
|
-
/// It is used to assert that all cluster members share the same config.
|
|
199
|
-
pub fn checksum(comptime config: ConfigCluster) u128 {
|
|
200
|
-
@setEvalBranchQuota(10_000);
|
|
201
|
-
comptime var config_bytes: []const u8 = &.{};
|
|
202
|
-
comptime for (std.meta.fields(ConfigCluster)) |field| {
|
|
203
|
-
const value = @field(config, field.name);
|
|
204
|
-
const value_64 = @as(u64, value);
|
|
205
|
-
assert(builtin.target.cpu.arch.endian() == .little);
|
|
206
|
-
config_bytes = config_bytes ++ std.mem.asBytes(&value_64);
|
|
207
|
-
};
|
|
208
|
-
return vsr.checksum(config_bytes);
|
|
209
|
-
}
|
|
210
|
-
};
|
|
211
|
-
|
|
212
|
-
pub const ConfigBase = enum {
|
|
213
|
-
production,
|
|
214
|
-
test_min,
|
|
215
|
-
default,
|
|
216
|
-
};
|
|
217
|
-
|
|
218
|
-
pub const configs = struct {
|
|
219
|
-
/// A good default config for production.
|
|
220
|
-
pub const default_production = Config{
|
|
221
|
-
.process = .{
|
|
222
|
-
.direct_io = true,
|
|
223
|
-
.cache_accounts_size_default = @sizeOf(vsr.tigerbeetle.Account) * MiB,
|
|
224
|
-
.cache_transfers_size_default = 0,
|
|
225
|
-
.cache_transfers_pending_size_default = 0,
|
|
226
|
-
.verify = true,
|
|
227
|
-
},
|
|
228
|
-
.cluster = .{
|
|
229
|
-
.clients_max = 64,
|
|
230
|
-
},
|
|
231
|
-
};
|
|
232
|
-
|
|
233
|
-
/// Minimal test configuration — small WAL, small grid block size, etc.
|
|
234
|
-
/// Not suitable for production, but good for testing code that would be otherwise hard to
|
|
235
|
-
/// reach.
|
|
236
|
-
pub const test_min = Config{
|
|
237
|
-
.process = .{
|
|
238
|
-
.storage_size_limit_default = 1 * GiB,
|
|
239
|
-
.storage_size_limit_max = 1 * GiB,
|
|
240
|
-
.direct_io = false,
|
|
241
|
-
.cache_accounts_size_default = @sizeOf(vsr.tigerbeetle.Account) * 256,
|
|
242
|
-
.cache_transfers_size_default = 0,
|
|
243
|
-
.cache_transfers_pending_size_default = 0,
|
|
244
|
-
.journal_iops_read_max = 3,
|
|
245
|
-
.journal_iops_write_max = 2,
|
|
246
|
-
.grid_repair_request_max = 4,
|
|
247
|
-
.grid_repair_reads_max = 4,
|
|
248
|
-
.grid_missing_blocks_max = 3,
|
|
249
|
-
.grid_missing_tables_max = 2,
|
|
250
|
-
.grid_scrubber_reads_max = 2,
|
|
251
|
-
.grid_scrubber_cycle_ms = std.time.ms_per_hour,
|
|
252
|
-
.verify = true,
|
|
253
|
-
},
|
|
254
|
-
.cluster = .{
|
|
255
|
-
.clients_max = 4 + 3,
|
|
256
|
-
.pipeline_prepare_queue_max = 4,
|
|
257
|
-
.view_change_headers_suffix_max = 4 + 1,
|
|
258
|
-
.journal_slot_count = Config.Cluster.journal_slot_count_min,
|
|
259
|
-
.message_size_max = Config.Cluster.message_size_max_min(4),
|
|
260
|
-
|
|
261
|
-
.block_size = sector_size,
|
|
262
|
-
.lsm_compaction_ops = 4,
|
|
263
|
-
.lsm_growth_factor = 4,
|
|
264
|
-
// (This is higher than the production default value because the block size is smaller.)
|
|
265
|
-
.lsm_manifest_compact_extra_blocks = 5,
|
|
266
|
-
// (We need to fuzz more scans merge than in production.)
|
|
267
|
-
.lsm_scans_max = 12,
|
|
268
|
-
},
|
|
269
|
-
};
|
|
270
|
-
|
|
271
|
-
pub const current = current: {
|
|
272
|
-
var base = if (@hasDecl(root, "tigerbeetle_config"))
|
|
273
|
-
root.tigerbeetle_config
|
|
274
|
-
else if (builtin.is_test)
|
|
275
|
-
test_min
|
|
276
|
-
else
|
|
277
|
-
default_production;
|
|
278
|
-
|
|
279
|
-
const release = vsr.ReleaseTriple.parse(build_options.release) catch {
|
|
280
|
-
@compileError("invalid release version");
|
|
281
|
-
};
|
|
282
|
-
|
|
283
|
-
const release_client_min = vsr.ReleaseTriple.parse(build_options.release_client_min) catch {
|
|
284
|
-
@compileError("invalid release_client_min version");
|
|
285
|
-
};
|
|
286
|
-
|
|
287
|
-
base.process.release = vsr.Release.from(release);
|
|
288
|
-
base.process.release_client_min = vsr.Release.from(release_client_min);
|
|
289
|
-
base.process.git_commit = build_options.git_commit;
|
|
290
|
-
base.process.verify = build_options.config_verify;
|
|
291
|
-
|
|
292
|
-
assert(base.process.release.value >= base.process.release_client_min.value);
|
|
293
|
-
|
|
294
|
-
break :current base;
|
|
295
|
-
};
|
|
296
|
-
};
|