Hello, everyone!
I’m happy to share the release of JGroups Raft 1.1.0.Final. I’ve created a branch for the 1.0.x version should updates ever be needed.
This release includes several bug fixes, including issues with cluster changes during the election procedure and improvements when utilizing COMPRESSION
in the stack. The full release notes are available on GitHub: https://github.com/jgroups-extras/jgroups-raft/releases/tag/jgroups-raft-1.1.0.Final.
Minor Version Bump
There’s been a minor version bump because we’re deprecating the LevelDBLog
implementation. We’ve dropped our reliance on abandonware for the LevelDB Java library. The current implementation now delegates to our own implementation: FileBasedLog
.
This introduces some incompatibilities and requires a manual migration of the data files. The migration is necessary because the implementations utilize different formats. Therefore, if you used the LevelDBLog
implementation in version 1.0.x, a migration is required to move to 1.1.x without losing data.
We’ve included a CLI script to perform this migration. The migration tool is a JBang! script hosted in our bin
folder in the repository with name migrate_leveldb.java
. To run the script, you can download it to the host where you want to perform the migration or run it remotely using JBang!. For example, assuming your logs are written by LevelDB in /home/user/A.log
(the log_dir
property in RAFT
), the most straightforward approach is running the script remotely from GitHub:
1
jbang https://raw.githubusercontent.com/jgroups-extras/jgroups-raft/refs/tags/jgroups-raft-1.1.0.Final/bin/migrate_leveldb.java /home/user/A.log
JBang! will retrieve the code from GitHub and execute the migration procedure. The script will output the steps being performed and track progress for each entry.
This runs locally. The same steps should be applied to every node in the cluster.
The script will verify whether there’s data suitable for a FileBasedLog
implementation and will abort if it finds existing files. If you’re sure you want to proceed, you can use the --force
parameter. It will create a temp
folder in /home/user/A.log/temp
and copy the existing data into it as a FileBasedLog.
Another approach, slightly more complex, is to create the script locally. The script needs to be named migrate_leveldb.java
.
1
jbang migrate_leveldb.java /home/user/A.log
The LevelDBLog
implementation remains present and is deprecated. We plan to remove it in the next major release, making the FileBasedLog
implementation the default.
The original data generated by the
LevelDBLog
implementation is not deleted after the migration.
Thanks!