Released: 2024-11-11
Safety And Performance
- [2435](https://github.com/tigerbeetle/tigerbeetle/pull/2435)
Fix an attempt to access uninitialized fields of `tb_packet_t` when `tb_client_deinit` aborts
pending requests. Also add Java unit tests to reproduce the problem and validate the fix.
- [2437](https://github.com/tigerbeetle/tigerbeetle/pull/2437)
Fix a liveness issue where the cluster gets stuck despite sufficient durability, caused by buggy
logic for cycling through faulty blocks during repair. Now, we divide the request buffer between
the `read_global_queue` and `faulty_blocks`, ensuring that we always request blocks from both.
Features
- [2462](https://github.com/tigerbeetle/tigerbeetle/pull/2462)
Update DevHub styling.
- [2424](https://github.com/tigerbeetle/tigerbeetle/pull/2424)
Vortex can now not only crash replicas (by killing and restarting the process) but also stop and
resume them.
Internals
- [2458](https://github.com/tigerbeetle/tigerbeetle/pull/2458)
Fix the Dotnet walkthrough example that misused `length` instead of the final index when slicing
an array. Thanks tenatus for reporting it!
- [2453](https://github.com/tigerbeetle/tigerbeetle/pull/2453)
Fix a CI failure caused by concurrent processes trying to create the `fs_supports_direct_io`
probe file in the same path.
- [2441](https://github.com/tigerbeetle/tigerbeetle/pull/2441)
Replace curl shell invocation with Zig's http client. 😎
- [2454](https://github.com/tigerbeetle/tigerbeetle/pull/2454)
Properly handle "host unreachable" (`EHOSTUNREACH`) on Linux, instead of returning unexpected
error.
- [2443](https://github.com/tigerbeetle/tigerbeetle/pull/2443),
[2451](https://github.com/tigerbeetle/tigerbeetle/pull/2451),
[2459](https://github.com/tigerbeetle/tigerbeetle/pull/2459),
[2460](https://github.com/tigerbeetle/tigerbeetle/pull/2460),
[2465](https://github.com/tigerbeetle/tigerbeetle/pull/2465)
Various code refactorings to improve naming conventions, readability, and organization.
TigerTracks 🎧
- [Scatman (Ski-ba-bop-ba-dop-bop)](https://www.youtube.com/watch?v=ZhSY7vYbXkk&t=106s)
TigerBeetle (unreleased)
Released: 2024-11-04
Safety And Performance
- [2356](https://github.com/tigerbeetle/tigerbeetle/pull/2356)
Add "Vortex" – a full-system integration test.
Notably, unlike the VOPR this test suite covers the language clients.
- [2430](https://github.com/tigerbeetle/tigerbeetle/pull/2430)
Cancel in-flight async (Linux) IO before freeing memory. This was not an issue on the replica
side, as replicas only stop when their process stops. However, clients may be closed
without the process also ending. If IO is still in flight when this occurs, we must ensure that
all IO is cancelled before the client's buffers are freed, to guard against a use-after-free.
This PR also fixes an unrelated assertion failure that triggered when closing a client that
had already closed its socket.
- [2432](https://github.com/tigerbeetle/tigerbeetle/pull/2432)
On startup and after checkpoint, assert that number of blocks acquired by the free set is
consistent with the number of blocks we see acquired via the manifest and checkpoint trailers.
- [2436](https://github.com/tigerbeetle/tigerbeetle/pull/2436)
Reject connections from unknown replicas.
- [2438](https://github.com/tigerbeetle/tigerbeetle/pull/2438)
Fix multiversion builds on MacOS.
- [2442](https://github.com/tigerbeetle/tigerbeetle/pull/2442)
On an unrecognized error code from the OS, print that error before we panic.
(This was already the policy in `Debug` builds, but now it includes `ReleaseSafe` as well.)
- [2444](https://github.com/tigerbeetle/tigerbeetle/pull/2444)
Fix a panic involving an in-flight write to an old reply after state sync.
Internals
- [2440](https://github.com/tigerbeetle/tigerbeetle/pull/2440)
Expose reply timestamp from `vsr.Client`.
(Note that this is not yet surfaced by language clients).
TigerTracks 🎧
- [Everything In Its Right Place](https://www.youtube.com/watch?v=onRk0sjSgFU)