tigerbeetle-node 0.9.0 → 0.11.0
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.
- package/README.md +305 -103
- package/dist/index.d.ts +70 -67
- package/dist/index.js +70 -67
- package/dist/index.js.map +1 -1
- package/package.json +6 -6
- package/scripts/download_node_headers.sh +14 -7
- package/src/index.ts +11 -10
- package/src/node.zig +22 -20
- package/src/tigerbeetle/scripts/benchmark.bat +4 -3
- package/src/tigerbeetle/scripts/benchmark.sh +25 -10
- package/src/tigerbeetle/scripts/confirm_image.sh +44 -0
- package/src/tigerbeetle/scripts/fuzz_loop.sh +15 -0
- package/src/tigerbeetle/scripts/fuzz_unique_errors.sh +7 -0
- package/src/tigerbeetle/scripts/install.sh +20 -4
- package/src/tigerbeetle/scripts/install_zig.bat +5 -1
- package/src/tigerbeetle/scripts/install_zig.sh +32 -26
- package/src/tigerbeetle/scripts/pre-commit.sh +9 -0
- package/src/tigerbeetle/scripts/shellcheck.sh +5 -0
- package/src/tigerbeetle/scripts/tests_on_alpine.sh +10 -0
- package/src/tigerbeetle/scripts/tests_on_ubuntu.sh +14 -0
- package/src/tigerbeetle/scripts/upgrade_ubuntu_kernel.sh +12 -3
- package/src/tigerbeetle/src/benchmark.zig +19 -9
- package/src/tigerbeetle/src/benchmark_array_search.zig +317 -0
- package/src/tigerbeetle/src/benchmarks/perf.zig +299 -0
- package/src/tigerbeetle/src/c/tb_client/context.zig +103 -0
- package/src/tigerbeetle/src/c/tb_client/packet.zig +80 -0
- package/src/tigerbeetle/src/c/tb_client/signal.zig +288 -0
- package/src/tigerbeetle/src/c/tb_client/thread.zig +328 -0
- package/src/tigerbeetle/src/c/tb_client.h +221 -0
- package/src/tigerbeetle/src/c/tb_client.zig +104 -0
- package/src/tigerbeetle/src/c/test.zig +1 -0
- package/src/tigerbeetle/src/cli.zig +143 -84
- package/src/tigerbeetle/src/config.zig +161 -20
- package/src/tigerbeetle/src/demo.zig +14 -8
- package/src/tigerbeetle/src/demo_05_post_pending_transfers.zig +2 -2
- package/src/tigerbeetle/src/ewah.zig +318 -0
- package/src/tigerbeetle/src/ewah_benchmark.zig +121 -0
- package/src/tigerbeetle/src/eytzinger_benchmark.zig +317 -0
- package/src/tigerbeetle/src/fifo.zig +17 -1
- package/src/tigerbeetle/src/io/darwin.zig +12 -10
- package/src/tigerbeetle/src/io/linux.zig +25 -9
- package/src/tigerbeetle/src/io/windows.zig +13 -9
- package/src/tigerbeetle/src/iops.zig +101 -0
- package/src/tigerbeetle/src/lsm/README.md +214 -0
- package/src/tigerbeetle/src/lsm/binary_search.zig +341 -0
- package/src/tigerbeetle/src/lsm/bloom_filter.zig +125 -0
- package/src/tigerbeetle/src/lsm/compaction.zig +557 -0
- package/src/tigerbeetle/src/lsm/composite_key.zig +77 -0
- package/src/tigerbeetle/src/lsm/direction.zig +11 -0
- package/src/tigerbeetle/src/lsm/eytzinger.zig +587 -0
- package/src/tigerbeetle/src/lsm/forest.zig +204 -0
- package/src/tigerbeetle/src/lsm/forest_fuzz.zig +412 -0
- package/src/tigerbeetle/src/lsm/grid.zig +549 -0
- package/src/tigerbeetle/src/lsm/groove.zig +1002 -0
- package/src/tigerbeetle/src/lsm/k_way_merge.zig +474 -0
- package/src/tigerbeetle/src/lsm/level_iterator.zig +315 -0
- package/src/tigerbeetle/src/lsm/manifest.zig +580 -0
- package/src/tigerbeetle/src/lsm/manifest_level.zig +925 -0
- package/src/tigerbeetle/src/lsm/manifest_log.zig +953 -0
- package/src/tigerbeetle/src/lsm/node_pool.zig +231 -0
- package/src/tigerbeetle/src/lsm/posted_groove.zig +387 -0
- package/src/tigerbeetle/src/lsm/segmented_array.zig +1318 -0
- package/src/tigerbeetle/src/lsm/segmented_array_benchmark.zig +148 -0
- package/src/tigerbeetle/src/lsm/segmented_array_fuzz.zig +9 -0
- package/src/tigerbeetle/src/lsm/set_associative_cache.zig +894 -0
- package/src/tigerbeetle/src/lsm/table.zig +967 -0
- package/src/tigerbeetle/src/lsm/table_immutable.zig +203 -0
- package/src/tigerbeetle/src/lsm/table_iterator.zig +306 -0
- package/src/tigerbeetle/src/lsm/table_mutable.zig +174 -0
- package/src/tigerbeetle/src/lsm/test.zig +423 -0
- package/src/tigerbeetle/src/lsm/tree.zig +1090 -0
- package/src/tigerbeetle/src/lsm/tree_fuzz.zig +457 -0
- package/src/tigerbeetle/src/main.zig +141 -109
- package/src/tigerbeetle/src/message_bus.zig +49 -48
- package/src/tigerbeetle/src/message_pool.zig +22 -12
- package/src/tigerbeetle/src/ring_buffer.zig +126 -30
- package/src/tigerbeetle/src/simulator.zig +205 -140
- package/src/tigerbeetle/src/state_machine.zig +1268 -721
- package/src/tigerbeetle/src/static_allocator.zig +65 -0
- package/src/tigerbeetle/src/storage.zig +40 -14
- package/src/tigerbeetle/src/test/accounting/auditor.zig +577 -0
- package/src/tigerbeetle/src/test/accounting/workload.zig +819 -0
- package/src/tigerbeetle/src/test/cluster.zig +104 -88
- package/src/tigerbeetle/src/test/conductor.zig +365 -0
- package/src/tigerbeetle/src/test/fuzz.zig +121 -0
- package/src/tigerbeetle/src/test/id.zig +89 -0
- package/src/tigerbeetle/src/test/message_bus.zig +15 -24
- package/src/tigerbeetle/src/test/network.zig +26 -17
- package/src/tigerbeetle/src/test/priority_queue.zig +645 -0
- package/src/tigerbeetle/src/test/state_checker.zig +94 -68
- package/src/tigerbeetle/src/test/state_machine.zig +135 -69
- package/src/tigerbeetle/src/test/storage.zig +78 -28
- package/src/tigerbeetle/src/tigerbeetle.zig +19 -16
- package/src/tigerbeetle/src/unit_tests.zig +15 -0
- package/src/tigerbeetle/src/util.zig +51 -0
- package/src/tigerbeetle/src/vopr.zig +494 -0
- package/src/tigerbeetle/src/vopr_hub/README.md +58 -0
- package/src/tigerbeetle/src/vopr_hub/SETUP.md +199 -0
- package/src/tigerbeetle/src/vopr_hub/go.mod +3 -0
- package/src/tigerbeetle/src/vopr_hub/main.go +1022 -0
- package/src/tigerbeetle/src/vopr_hub/scheduler/go.mod +3 -0
- package/src/tigerbeetle/src/vopr_hub/scheduler/main.go +403 -0
- package/src/tigerbeetle/src/vsr/client.zig +34 -7
- package/src/tigerbeetle/src/vsr/journal.zig +164 -174
- package/src/tigerbeetle/src/vsr/replica.zig +1602 -651
- package/src/tigerbeetle/src/vsr/superblock.zig +1761 -0
- package/src/tigerbeetle/src/vsr/superblock_client_table.zig +255 -0
- package/src/tigerbeetle/src/vsr/superblock_free_set.zig +644 -0
- package/src/tigerbeetle/src/vsr/superblock_manifest.zig +561 -0
- package/src/tigerbeetle/src/vsr.zig +118 -170
- package/src/tigerbeetle/scripts/vopr.bat +0 -48
- package/src/tigerbeetle/scripts/vopr.sh +0 -33
|
@@ -28,7 +28,7 @@ pub const Network = struct {
|
|
|
28
28
|
message: *Message,
|
|
29
29
|
|
|
30
30
|
pub fn deinit(packet: *const Packet, path: PacketSimulatorPath) void {
|
|
31
|
-
const source_bus =
|
|
31
|
+
const source_bus = packet.network.buses.items[path.source];
|
|
32
32
|
source_bus.unref(packet.message);
|
|
33
33
|
}
|
|
34
34
|
};
|
|
@@ -43,7 +43,16 @@ pub const Network = struct {
|
|
|
43
43
|
options: NetworkOptions,
|
|
44
44
|
packet_simulator: PacketSimulator(Packet),
|
|
45
45
|
|
|
46
|
-
|
|
46
|
+
// TODO If this stored a ?*MessageBus, then a process's bus could be set to `null` while
|
|
47
|
+
// the replica is crashed, and replaced when it is destroy. Zig complains:
|
|
48
|
+
//
|
|
49
|
+
// ./src/test/message_bus.zig:20:24: error: struct 'test.message_bus.MessageBus' depends on itself
|
|
50
|
+
// pub const MessageBus = struct {
|
|
51
|
+
// ^
|
|
52
|
+
// ./src/test/message_bus.zig:21:5: note: while checking this field
|
|
53
|
+
// network: *Network,
|
|
54
|
+
// ^
|
|
55
|
+
buses: std.ArrayListUnmanaged(*MessageBus),
|
|
47
56
|
processes: std.ArrayListUnmanaged(u128),
|
|
48
57
|
|
|
49
58
|
pub fn init(
|
|
@@ -55,7 +64,7 @@ pub const Network = struct {
|
|
|
55
64
|
const process_count = client_count + replica_count;
|
|
56
65
|
assert(process_count <= std.math.maxInt(u8));
|
|
57
66
|
|
|
58
|
-
var buses = try std.ArrayListUnmanaged(MessageBus).initCapacity(allocator, process_count);
|
|
67
|
+
var buses = try std.ArrayListUnmanaged(*MessageBus).initCapacity(allocator, process_count);
|
|
59
68
|
errdefer buses.deinit(allocator);
|
|
60
69
|
|
|
61
70
|
var processes = try std.ArrayListUnmanaged(u128).initCapacity(allocator, process_count);
|
|
@@ -77,13 +86,11 @@ pub const Network = struct {
|
|
|
77
86
|
}
|
|
78
87
|
|
|
79
88
|
pub fn deinit(network: *Network) void {
|
|
80
|
-
// TODO: deinit the buses themselves when they gain a deinit()
|
|
81
89
|
network.buses.deinit(network.allocator);
|
|
82
90
|
network.processes.deinit(network.allocator);
|
|
83
91
|
}
|
|
84
92
|
|
|
85
|
-
|
|
86
|
-
pub fn init_message_bus(network: *Network, cluster: u32, process: Process) !*MessageBus {
|
|
93
|
+
pub fn link(network: *Network, process: Process, message_bus: *MessageBus) void {
|
|
87
94
|
const raw_process = switch (process) {
|
|
88
95
|
.replica => |replica| replica,
|
|
89
96
|
.client => |client| blk: {
|
|
@@ -92,14 +99,16 @@ pub const Network = struct {
|
|
|
92
99
|
},
|
|
93
100
|
};
|
|
94
101
|
|
|
95
|
-
for (network.processes.items) |
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
102
|
+
for (network.processes.items) |existing_process, i| {
|
|
103
|
+
if (existing_process == raw_process) {
|
|
104
|
+
network.buses.items[i] = message_bus;
|
|
105
|
+
break;
|
|
106
|
+
}
|
|
107
|
+
} else {
|
|
108
|
+
network.processes.appendAssumeCapacity(raw_process);
|
|
109
|
+
network.buses.appendAssumeCapacity(message_bus);
|
|
110
|
+
}
|
|
111
|
+
assert(network.processes.items.len == network.buses.items.len);
|
|
103
112
|
}
|
|
104
113
|
|
|
105
114
|
pub fn send_message(network: *Network, message: *Message, path: Path) void {
|
|
@@ -131,13 +140,13 @@ pub const Network = struct {
|
|
|
131
140
|
}
|
|
132
141
|
|
|
133
142
|
pub fn get_message_bus(network: *Network, process: Process) *MessageBus {
|
|
134
|
-
return
|
|
143
|
+
return network.buses.items[network.process_to_address(process)];
|
|
135
144
|
}
|
|
136
145
|
|
|
137
146
|
fn deliver_message(packet: Packet, path: PacketSimulatorPath) void {
|
|
138
147
|
const network = packet.network;
|
|
139
148
|
|
|
140
|
-
const target_bus =
|
|
149
|
+
const target_bus = network.buses.items[path.target];
|
|
141
150
|
|
|
142
151
|
const message = target_bus.get_message();
|
|
143
152
|
defer target_bus.unref(message);
|
|
@@ -164,7 +173,7 @@ pub const Network = struct {
|
|
|
164
173
|
}
|
|
165
174
|
}
|
|
166
175
|
|
|
167
|
-
target_bus.on_message_callback
|
|
176
|
+
target_bus.on_message_callback(target_bus, message);
|
|
168
177
|
}
|
|
169
178
|
|
|
170
179
|
fn raw_process_to_process(raw: u128) Process {
|