rqlite
is a lightweight, open-source, fault-tolerant relational database built on SQLite and the Raft consensus protocol.
Versions 10.5.1 through 10.6.0 focus on four core themes: richer error reporting in the API, changing a node’s voting status at runtime, a security fix for authentication files, and further work on Change Data Capture (CDC).
The changes are backward-compatible. Operators who use authentication files should upgrade to 10.6.0 and review the security fix below.
Query Logging and Better Errors
Until now, a client that wanted to know why a request failed had to read the error text. Version 10.6.0 adds a new field to API responses, error_v2, which can carry numeric SQLite error codes. Clients can now identify errors by code.
The groundwork came in 10.5.3, which moved the database layer to a richer error type that keeps the SQLite error code attached to each failure.
Version 10.6.0 also adds query logging, which operators enable with a command-line flag.
Promoting and Demoting Nodes
Version 10.6.0 lets operators change a node’s role without removing it from the cluster, which makes cluster changes safer. POST /demote turns a voting node into a non-voter, and POST /promote turns a non-voting node into a voter. The rqlite shell offers the same through .demote and .promote, each of which takes a node ID.
This makes scaling your cluster much safer. Adding a voting node immediately increases the cluster’s quorum requirements; if the new node is unreachable, the cluster could lose availability. Instead, you can now join the node as a non-voter, confirm it is reachable and healthy, and then promote it to a voter.
Authentication File Security Fix
Version 10.6.0 fixes a security issue in how rqlite handles misconfigured authentication files. Such a misconfigured file could transfer one user’s permissions to a second user, so a user with no explicit permissions could gain elevated ones. Clusters with correctly configured authentication are not affected.
CDC Correctness
Change Data Capture received fixes in every release of this series. Version 10.5.2 fixes a case where CDC did not emit all events after a Bulk Request, and ensures the streamer keeps its Raft index after a commit or rollback. Version 10.5.3 also fixes a minor off-by-one error in the retry logic.
Version 10.6.0 tightens high watermark handling. A follower’s high watermark never moves backwards, which risked unnecessary duplicate CDC events, and the watermark now advances past dropped batches.
SQLite Safeguards
rqlite depends on SQLite running in a precise configuration. Version 10.5.2 fixes an edge-case where rqlite could create a database connection without disabling WAL auto-checkpointing. This issue was never reported in production, but was theoretically possible.
Version 10.5.3 adds unit tests which confirm that the SQLite WAL-related and SYNCHRONOUS options are set as rqlite needs at compile-time, so a bad build fails in testing, not at run-time.
Improved Web Console
The web console now uses the term “read replicas”, has an improved topology view, and merges the home and topology tabs into one.
For full details, see the CHANGELOG. To discuss these releases or ask questions, join the rqlite Slack channel.