From c8394d7d811905bb906158bfa4d5c92977cc47df Mon Sep 17 00:00:00 2001 From: Philip O'Toole Date: Thu, 29 Apr 2021 19:20:26 -0400 Subject: [PATCH] Update CHANGELOG.md --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e118b93e..0f718f72 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,11 @@ ## 6.0.0 (unreleased) This release implements a significant design change, which improves rqlite cluster reliability. -In the 5.0 series, Follower nodes learned the HTTP API address of a cluster Leader via information - known as _Metadata_ - that each node wrote to the Raft log. This Metadata was then available to each node in the cluster, if that node needed to redirect queries to the cluster Leader. However this design is somewhat complex, and requires the tracking of state, in addition to the SQLite database. It also meant that if the Metadata got out of sync with the Raft state, the cluster could be in a degraded state. +In the 5.0 series, _Follower_ nodes learned the HTTP API address of a cluster Leader via information - known as _Metadata_ - that each node wrote to the Raft log. This Metadata was then available to each node in the cluster, if that node needed to redirect queries to the cluster Leader (assuming that node wasn't the Leader at that time). However that design was somewhat complex, and requires the tracking of state, in addition to the SQLite database. It also meant that if the Metadata got out of sync with the Raft state, the cluster could be in a degraded state. -In this new design, a node now queries the Leader as needed, when that node needs to learn the Leader's HTTP API address. The Metadata component has been removed from rqlite as a result. And without any possibility of discrepancy between Metadata and Raft state, a whole class of potential bugs is removed. The request for the Leader HTTP API address connects to the TCP port already open (and required) for Raft connections, so does not introduce any new failure modes. This multiplexing of the Raft connection is performed via the `mux` package. +In this new design, a node now queries the Leader as needed, when that node needs to learn the Leader's HTTP API address. As a result, the Metadata component has been removed from rqlite. And without any possibility of discrepancy between Metadata and Raft state, a whole class of potential bugs is removed. Any request for the Leader HTTP API address means a node connects to the TCP port already open (and required) for Raft connections, so does not introduce any new failure modes. This multiplexing of the Raft connection is performed via the `mux` package. -This new design also means that nodes running earlier software cannot communicate with 6.0 nodes, as 6.0 software no longer performs Metadata updates. As a result, **rqlite clusters running 5.x software or earlier must be explicitly upgraded**. To upgrade from an earlier version to this release you should [backup your Leader node](https://github.com/rqlite/rqlite/blob/master/DOC/BACKUPS.md), and [restore the database dump](https://github.com/rqlite/rqlite/blob/master/DOC/RESTORE_FROM_SQLITE.md) into a new 6.0 cluster. +This new design does mean that nodes running earlier software cannot communicate with 6.0 nodes, as 6.0 software no longer performs Metadata updates. As a result, **rqlite clusters running 5.x software or earlier must be explicitly upgraded**. To upgrade from an earlier version to this release you should [backup your Leader node](https://github.com/rqlite/rqlite/blob/master/DOC/BACKUPS.md), and [restore the database dump](https://github.com/rqlite/rqlite/blob/master/DOC/RESTORE_FROM_SQLITE.md) into a new 6.0 cluster. The data API and cluster-management API remain unchanged however, so client code that communicates with rqlite should not need any changes.