-
Notifications
You must be signed in to change notification settings - Fork 108
Comparing changes
Open a pull request
base repository: rabbitmq/ra
base: v3.0.2
head repository: rabbitmq/ra
compare: v3.1.0
- 14 commits
- 16 files changed
- 4 contributors
Commits on Mar 18, 2026
-
Configuration menu - View commit details
-
Copy full SHA for de10170 - Browse repository at this point
Copy the full SHA de10170View commit details -
Configuration menu - View commit details
-
Copy full SHA for 324e057 - Browse repository at this point
Copy the full SHA 324e057View commit details -
Configuration menu - View commit details
-
Copy full SHA for 8126773 - Browse repository at this point
Copy the full SHA 8126773View commit details
Commits on Mar 19, 2026
-
Merge pull request #594 from rabbitmq/mk-gen-batch-server-0.9.1
Bump `gen_batch_server` to `0.9.1`
Configuration menu - View commit details
-
Copy full SHA for 2ae87e9 - Browse repository at this point
Copy the full SHA 2ae87e9View commit details -
Replace catch with try/catch in handle_leader/2
The catch expression captured the full exception term including the stacktrace, which could contain the entire Ra server state in its function arguments. Logging this with ~p caused io_lib_pretty to traverse the massive term, triggering extreme memory allocation and OOM crashes for servers with large machine states (e.g. millions of messages). In this case the node crashed due to OOM because there was a function_clause error in the state machine implementation where the state machine had a huge state. We still need the stack trace to locate where the function_clause originates from.
Configuration menu - View commit details
-
Copy full SHA for bf799b5 - Browse repository at this point
Copy the full SHA bf799b5View commit details -
Configuration menu - View commit details
-
Copy full SHA for 7a27f6a - Browse repository at this point
Copy the full SHA 7a27f6aView commit details -
Merge pull request #596 from rabbitmq/handle_leader
Replace catch with try/catch in handle_leader/2
Configuration menu - View commit details
-
Copy full SHA for 0a99661 - Browse repository at this point
Copy the full SHA 0a99661View commit details
Commits on Mar 20, 2026
-
Configuration menu - View commit details
-
Copy full SHA for 0341af3 - Browse repository at this point
Copy the full SHA 0341af3View commit details -
Fix segment file deletion for limited (range-truncated) segrefs
update_segments/2 used the `--` operator to compute which new segment files should be deleted as overwritten. `--` performs exact tuple matching, so when compact_segrefs/2 *limited* (truncated the end index of) a segment rather than removing it entirely, the limited tuple {Fn, {Start, NewEnd}} no longer matched the original {Fn, {Start, OrigEnd}}. The original was then incorrectly included in OverwrittenSegments, causing the segment file to be deleted while a reference to it remained in the segment_refs structure. This manifested when the segment writer sent a batch containing both normal (4096-entry) segments and compacted (wide-range) segments whose index ranges overlapped. compact_segrefs would limit the compacted segments, and the `--` operator would flag them as overwritten. The files were deleted, leaving dangling references that caused subsequent reads to fail with "did not found all requested indexes". Replace the `--` approach with a map-based filename lookup: build a set of filenames surviving in the compacted result and only flag segments whose filename is completely absent — i.e. truly removed, not merely limited.Configuration menu - View commit details
-
Copy full SHA for f2b3e0c - Browse repository at this point
Copy the full SHA f2b3e0cView commit details -
Merge pull request #597 from rabbitmq/segments-bug-fix
Fix segment file deletion for limited (range-truncated) segrefs
Configuration menu - View commit details
-
Copy full SHA for ab12d5c - Browse repository at this point
Copy the full SHA ab12d5cView commit details
Commits on Mar 23, 2026
-
ra_snapshot: Track latest snapshot size in bytes in state
This will be useful to Ra machine implementations to include this value in their snaphsot decision. The snapshot module implementation can now return the size of the snapshot from its `write/4` callback with `{ok, SnapshotSize}` where `SnapshotSize` is a non-negative integer representing the number of bytes of the snapshot. To maintain backward compatibility, returning the historic `ok` value is accepted. In this case, the snapshot size is set to `undefined`. Likewise, when a snapshot is recovered, a new optional snapshot module callback is used, `get_size/1`. If the callback is unimplemented or if the callback returns an error, the snapshot size is set to `undefined`. Note that this commit only adds the tracking, not the query API. This will be added in a follow-up commit.Configuration menu - View commit details
-
Copy full SHA for f2305bb - Browse repository at this point
Copy the full SHA f2305bbView commit details -
ra_aux: Add
latest_snapshot_size/1to query the latest snapshot sizeThis will be useful to Ra machine implementations to include this value in their snaphsot decision.
Configuration menu - View commit details
-
Copy full SHA for 75c647b - Browse repository at this point
Copy the full SHA 75c647bView commit details -
Merge pull request #598 from rabbitmq/track-latest-snapshot-size
ra_snapshot: Track latest snapshot size in bytes in state
Configuration menu - View commit details
-
Copy full SHA for ed96cc8 - Browse repository at this point
Copy the full SHA ed96cc8View commit details -
Configuration menu - View commit details
-
Copy full SHA for f5308e5 - Browse repository at this point
Copy the full SHA f5308e5View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v3.0.2...v3.1.0