Tigerbeetle

Latest version: v0.16.34

Safety actively analyzes 723177 Python packages for vulnerabilities to keep your Python projects secure.

Scan your dependencies

Page 2 of 6

0.16.28

Released: 2025-02-17

Note: Before performing this upgrade, please make sure to check that no replicas are lagging and
state syncing.

You can ensure this by temporarily pausing load to the TigerBeetle cluster and waiting for all
replicas to catch up. If some replicas in your cluster were indeed lagging, you should see
`on_repair_sync_timeout: request sync; lagging behind cluster` in the logs, followed by
`sync: ops=`, which indicates the end of state sync. If you don't see the former in the logs, then
you are already safe to upgrade!

This is to work around an issue in the upgrade between 0.16.25 → 0.16.26, wherein a state syncing
replica goes into a crash loop when it upgrades to 0.16.26. If one of your replicas has already hit
this crash loop, please reach out to us on the Community Slack so we can help you safely revive it.

Safety And Performance

- [2677](https://github.com/tigerbeetle/tigerbeetle/pull/2677)

Test misdirected writes in the VOPR.

- [2711](https://github.com/tigerbeetle/tigerbeetle/pull/2711)

Fix a recovery correctness bug caused by a misdirected write in the WAL
(discovered by the VOPR in 2677).

- [2728](https://github.com/tigerbeetle/tigerbeetle/pull/2728)

Refactor the tb_client packet interface, hiding private members in an opaque field.
Add assertions to enforce expectations for each packet field.

- [2717](https://github.com/tigerbeetle/tigerbeetle/pull/2717)

Fix a Node client crash when it was closed with outstanding requests.

- [2720](https://github.com/tigerbeetle/tigerbeetle/pull/2720)

Flush loopback queue before queueing another prepare_ok.

- [2730](https://github.com/tigerbeetle/tigerbeetle/pull/2730)

Fuzzer weights are now configurable.

- [2702](https://github.com/tigerbeetle/tigerbeetle/pull/2702)

The REPL now uses `StaticAllocator` on init and deinit.

Features

- [2716](https://github.com/tigerbeetle/tigerbeetle/pull/2716)

`tigerbeetle inspect constants` now prints a napkin math estimate for the memory usage.

Internals

- [2719](https://github.com/tigerbeetle/tigerbeetle/pull/2719),
[2718](https://github.com/tigerbeetle/tigerbeetle/pull/2718),
[2736](https://github.com/tigerbeetle/tigerbeetle/pull/2736)

Update docs with new talks, an updated illustration, and a new Slack invite link.

- [2724](https://github.com/tigerbeetle/tigerbeetle/pull/2724)

Don't expose VSR module to dependents in build.zig.

TigerTracks 🎧

- [Formula 06](https://open.spotify.com/track/7rzRbj2WnmxcE5iQfGbhKN)

0.16.27

Released: 2025-02-10

Note: Before performing this upgrade, please make sure to check that no replicas are lagging and
state syncing.

You can ensure this by temporarily pausing load to the TigerBeetle cluster and waiting for all
replicas to catch up. If some replicas in your cluster were indeed lagging, you should see
`on_repair_sync_timeout: request sync; lagging behind cluster` in the logs, followed by
`sync: ops=`, which indicates the end of state sync. If you don't see the former in the logs, then
you are already safe to upgrade!

This is to work around an issue in the upgrade between 0.16.25 → 0.16.26, wherein a state syncing
replica goes into a crash loop when it upgrades to 0.16.26. If one of your replicas has already hit
this crash loop, please reach out to us on the Community Slack so we can help you safely revive it.

Safety And Performance

- [2700](https://github.com/tigerbeetle/tigerbeetle/pull/2700)

Remove redundant calls to `IO.init()` and `IO.deinit()` during the `format` and `start` commands.

These redundant calls could lead to an assertion error in the Zig standard library when a failure
occurs after the second `IO.init()`.

Features

- [2701](https://github.com/tigerbeetle/tigerbeetle/pull/2701)

Enhance the docs search bar with arrow-key navigation over search results, and folder collapse
using the enter key.

Internals
- [2713](https://github.com/tigerbeetle/tigerbeetle/pull/2713)

Add [talks](https://github.com/tigerbeetle/tigerbeetle/blob/main/docs/TALKS.md) from
SystemsDistributed '23, P99 CONF '23, Money2020 '24, and SYCL '24.

- [2710](https://github.com/tigerbeetle/tigerbeetle/pull/2710)

Improve CPU utilization of the CFO by spawning fuzzers more frequently.

Motivated by the measurement that the cumulative CPU was (on average) 40-45% idle.

- [2709](https://github.com/tigerbeetle/tigerbeetle/pull/2709)

Assert zeroed padding for WAL prepares in the VOPR.

- [2703](https://github.com/tigerbeetle/tigerbeetle/pull/2703)

Remove the deprecated version of the start_view message.

As part of [2600](https://github.com/tigerbeetle/tigerbeetle/pull/2600), we rolled out a new
on-disk format for the CheckpointState. To avoid bumping the VSR version, we made it so that
replicas temporarily send two versions of the start_view message, with both the old and new
CheckpointState formats.

- [2697](https://github.com/tigerbeetle/tigerbeetle/pull/2697)

Add fair scheduler to the CFO to avoid starvation of short running fuzzers.

Earlier, long running LSM fuzzers ended up spending more than their fair share of time on the CPU,
with only 1-10% of CFO time being spent on short running VOPR fuzzers.


TigerTracks 🎧

- [Neon](https://open.spotify.com/track/7Kohy4v3KLWfUXlv9N3feB?si=a1bb8f16679a44d3)

0.16.26

Released: 2025-02-03

Note: Before performing this upgrade, please make sure to check that no replicas are lagging and
state syncing.

You can ensure this by temporarily pausing load to the TigerBeetle cluster and waiting for all
replicas to catch up. If some replicas in your cluster were indeed lagging, you should see
`on_repair_sync_timeout: request sync; lagging behind cluster` in the logs, followed by
`sync: ops=`, which indicates the end of state sync. If you don't see the former in the logs, then
you are already safe to upgrade!

This is to work around an issue in the upgrade between 0.16.25 → 0.16.26, wherein a state syncing
replica goes into a crash loop when it upgrades to 0.16.26. If one of your replicas has already hit
this crash loop, please reach out to us on the Community Slack so we can help you safely revive it.

Safety And Performance

- [2681](https://github.com/tigerbeetle/tigerbeetle/pull/2681)

Consider blocks and prepares with nonzero padding to be corrupt.
Previously blocks asserted zero padding, which can fail due to bitrot.

Also fix a similar bug in the superblock copy index handling. The copy index is not covered
by a checksum, so we must treat it carefully to avoid propagating bad data if it is corrupt.

VOPR now injects single-bit errors into storage rather than whole-sector errors.

- [2600](https://github.com/tigerbeetle/tigerbeetle/pull/2600)

The current checkpoint process immediately frees all blocks released in the previous checkpoint.
This can lead to cluster unavailability by prematurely freeing and overwriting released blocks.

To fix this, delay freeing blocks until the checkpoint is durable on a commit-quorum, ensuring
data integrity and preventing single-replica failures (in a 3 node cluster) from impacting
availability.

- [2692](https://github.com/tigerbeetle/tigerbeetle/pull/2692)

When state syncing, replicas would send prepare_oks only up to a point, to ensure they don't
falsely contribute to the durability of a non-durable checkpoint they've synced to.

However, the logic to send these prepare_oks after state sync has finished was missing, which
could lead to a situation where a primary was unavailable to advance. Add in the ability to send
these prepare_oks after syncing.

- [2689](https://github.com/tigerbeetle/tigerbeetle/pull/2689)

Recently, tb_client was reworked to use OS native signals instead of a socket for delivering
cross thread events.

Fix some incorrect asserts, and add a fuzz test.

Features

- [2694](https://github.com/tigerbeetle/tigerbeetle/pull/2694),
[2695](https://github.com/tigerbeetle/tigerbeetle/pull/2695),
[2686](https://github.com/tigerbeetle/tigerbeetle/pull/2686),
[2688](https://github.com/tigerbeetle/tigerbeetle/pull/2688),
[2685](https://github.com/tigerbeetle/tigerbeetle/pull/2685),
[2676](https://github.com/tigerbeetle/tigerbeetle/pull/2676),
[2684](https://github.com/tigerbeetle/tigerbeetle/pull/2684)

A few fixes and an "Edit this page" button for our new docs!

Internals

- [2674](https://github.com/tigerbeetle/tigerbeetle/pull/2674)

Allocate the reply buffer in the Go client once the reply has been received. This can save up to
1MB of memory.

- [2680](https://github.com/tigerbeetle/tigerbeetle/pull/2680)

Refactor parts of our CFO, the process responsible for running fuzzers and the VOPR and sending
the results to devhub, to better handle OOM in subprocesses and reduce false fuzz failures.

TigerTracks 🎧

- [Like a Prayer](https://open.spotify.com/track/1z3ugFmUKoCzGsI6jdY4Ci)

0.16.25

Released: 2025-01-27

Safety And Performance

- [2653](https://github.com/tigerbeetle/tigerbeetle/pull/2653)

Avoid considering just-repaired journal headers as faulty during WAL recovery.

- [2655](https://github.com/tigerbeetle/tigerbeetle/pull/2655)

Reduce the minimum exponential backoff delay from 100ms (which is too pessimistic) to 10ms,
a value more appropriate for fast networks.

- [2662](https://github.com/tigerbeetle/tigerbeetle/pull/2662)

Introduce a new `CheckpointState` format on disk, which ensures that blocks released during
a checkpoint are freed only when the next checkpoint is durable, solving a known
[liveness issue](https://github.com/tigerbeetle/tigerbeetle/pull/2600).
The previous format is still supported and will be removed in a future release to ensure the
proper upgrade path.

- [2605](https://github.com/tigerbeetle/tigerbeetle/pull/2605)

Demote a clock skew _warning_ to a _debug message_ when the ping time is legitimately behind
the window. On the other hand, assert that the monotonic clock is within the window.

- [2659](https://github.com/tigerbeetle/tigerbeetle/pull/2659)

Workaround to prevent the initialization value for the AOF message from being embedded as a
binary resource, saving `constants.message_size_max` bytes in the executable size!

- [2654](https://github.com/tigerbeetle/tigerbeetle/pull/2654)

Fix a VOPR false positive where it erroneously infers that a replica has lost a prepare that
it has acknowledged.

Features

- [2479](https://github.com/tigerbeetle/tigerbeetle/pull/2479),
[2663](https://github.com/tigerbeetle/tigerbeetle/pull/2663)

New statically generated docs website, featuring many UX improvements while removing tons of
dependencies! Check it out at https://docs.tigerbeetle.com/

Internals

- [2661](https://github.com/tigerbeetle/tigerbeetle/pull/2661)

Make the CFO utilize all cores all the time for running tests, pushing updates every 5 minutes.

TigerTracks 🎧

- [Correnteza](https://www.youtube.com/watch?v=6m4DSpZgxZw)

0.16.23

Released: 2025-01-20

TigerBeetle (unreleased)

Released: 2025-01-20

(Unreleased due to CI flake.)

Safety And Performance

- [2652](https://github.com/tigerbeetle/tigerbeetle/pull/2652)

Fix Python client initialization with long address strings.

- [2614](https://github.com/tigerbeetle/tigerbeetle/pull/2614)

Prevent Client IO thread starvation.

- [2583](https://github.com/tigerbeetle/tigerbeetle/pull/2583)

Set prepare/request timeout RTTs dynamically. Previously our backoff was almost always much too
high, leading to much lower throughput when ring replication failed.

Features

- [2580](https://github.com/tigerbeetle/tigerbeetle/pull/2580)

Add `--clients` flag to `tigerbeetle benchmark` for generating load from multiple concurrent
clients.

Internals

- [2651](https://github.com/tigerbeetle/tigerbeetle/pull/2651)

For test/verify only functions, assert `constants.verify` at compile-time, not runtime.

- [2650](https://github.com/tigerbeetle/tigerbeetle/pull/2650)

Fix flaky Java client test `testConcurrentInterruptedTasks`.

- [2646](https://github.com/tigerbeetle/tigerbeetle/pull/2646)

Fix VOPR false positive due to `smallest_missing_prepare_between` bug.

- [2611](https://github.com/tigerbeetle/tigerbeetle/pull/2611)

In clients, add `Event`s for efficient cross-thread notification.

- [2644](https://github.com/tigerbeetle/tigerbeetle/pull/2644),
[2648](https://github.com/tigerbeetle/tigerbeetle/pull/2648)

Devhub fixes due to Ubuntu/kcov.

TigerTracks 🎧

- [Have You Ever Seen The Rain?](https://www.youtube.com/watch?v=bO28lB1uwp4)

0.16.21

Released: 2025-01-13

Happy 2025!

Safety And Performance

- [2637](https://github.com/tigerbeetle/tigerbeetle/pull/2637)

Fix multiple VOPR false positives

- [2632](https://github.com/tigerbeetle/tigerbeetle/pull/2632)

Disable costly cache map verification: trust, verify, but mind big-O!

- [2629](https://github.com/tigerbeetle/tigerbeetle/pull/2629)

Improve state sync performance by getting rid of `awaiting_checkpoint` state.

- [2624](https://github.com/tigerbeetle/tigerbeetle/pull/2624)

Improve VOPR coverage when running out of IOPs.

- [2593](https://github.com/tigerbeetle/tigerbeetle/pull/2593),
[2623](https://github.com/tigerbeetle/tigerbeetle/pull/2623),
[2625](https://github.com/tigerbeetle/tigerbeetle/pull/2625),
[2626](https://github.com/tigerbeetle/tigerbeetle/pull/2626),
[2627](https://github.com/tigerbeetle/tigerbeetle/pull/2627),
[2628](https://github.com/tigerbeetle/tigerbeetle/pull/2628)

Improve WAL repair performance.

- [2613](https://github.com/tigerbeetle/tigerbeetle/pull/2613),
[2616](https://github.com/tigerbeetle/tigerbeetle/pull/2616),
[2620](https://github.com/tigerbeetle/tigerbeetle/pull/2620),
[2622](https://github.com/tigerbeetle/tigerbeetle/pull/2622)

Improve replication performance.

- [2618](https://github.com/tigerbeetle/tigerbeetle/pull/2618)

Add simple metrics to the state machine.

Features

- [2615](https://github.com/tigerbeetle/tigerbeetle/pull/2615)

Greatly improve performance of append-only file (AOF). Note that this changes format of AOF on
disk.

- [2641](https://github.com/tigerbeetle/tigerbeetle/pull/2641)

Add `tigerbeetle inspect constants` command to visualize important compile-time parameters.

- [2630](https://github.com/tigerbeetle/tigerbeetle/pull/2630)

Use asynchronous disk IO on Windows (as a reminder, at the moment TigerBeetle server is considered
to production-ready only on Linux).

- [2635](https://github.com/tigerbeetle/tigerbeetle/pull/2635)

Add experimental alternative replication topologies (star and closed loop).

Internals

- [2634](https://github.com/tigerbeetle/tigerbeetle/pull/2634)

Move RingBufferType into stdx, TigerBeetle's extended standard library.

- [2639](https://github.com/tigerbeetle/tigerbeetle/pull/2639)

Run `go vet` on CI.

- [2631](https://github.com/tigerbeetle/tigerbeetle/pull/2631)

Fix tracing compatibility with perfetto.

- [2564](https://github.com/tigerbeetle/tigerbeetle/pull/2564),
[2559](https://github.com/tigerbeetle/tigerbeetle/pull/2559).

Make it easier to investigate Vortex runs.

- [2610](https://github.com/tigerbeetle/tigerbeetle/pull/2610)

Correctly calculate the number of results in the Go client. Previously, the answer was correct
despite the logic being wrong!

TigerTracks 🎧

- [Blush Response](https://open.spotify.com/track/0cSnUM2fNEx4pAkNfWpdkU?si=9d6eaaacfc5e467b)

Page 2 of 6

© 2025 Safety CLI Cybersecurity Inc. All Rights Reserved.