1
0
Fork 0

Fix RecoverNode

master
Philip O'Toole 1 year ago
parent ad73779285
commit 4342650c33

@ -5,6 +5,7 @@ This release changes the mode of SQLite, when rqlite is running in _on-disk_ mod
- [PR #1314](https://github.com/rqlite/rqlite/pull/1314): More preparations for WAL mode when running on-disk.
- [PR #1315](https://github.com/rqlite/rqlite/pull/1315), [PR #1316](https://github.com/rqlite/rqlite/pull/1316): Enable WAL when running in on-disk mode.
- [PR #1317](https://github.com/rqlite/rqlite/pull/1317): DB-layer now supports WAL replay.
- [PR #1318](https://github.com/rqlite/rqlite/pull/1318): Periodically record actual applied index
## 7.21.0 (June 20th 2023)
### New features

@ -395,7 +395,7 @@ func (s *Store) Open() (retErr error) {
if err != nil {
return fmt.Errorf("failed to read peers file: %s", err.Error())
}
if err = RecoverNode(s.raftDir, s.logger, s.raftLog, s.raftStable, snapshots, s.raftTn, config); err != nil {
if err = RecoverNode(s.raftDir, s.logger, s.raftLog, s.boltStore, snapshots, s.raftTn, config); err != nil {
return fmt.Errorf("failed to recover node: %s", err.Error())
}
if err := os.Rename(s.peersPath, s.peersInfoPath); err != nil {
@ -1800,7 +1800,7 @@ func (s *Store) tryCompress(rq command.Requester) ([]byte, bool, error) {
// RecoverNode is used to manually force a new configuration, in the event that
// quorum cannot be restored. This borrows heavily from RecoverCluster functionality
// of the Hashicorp Raft library, but has been customized for rqlite use.
func RecoverNode(dataDir string, logger *log.Logger, logs raft.LogStore, stable raft.StableStore,
func RecoverNode(dataDir string, logger *log.Logger, logs raft.LogStore, stable *rlog.Log,
snaps raft.SnapshotStore, tn raft.Transport, conf raft.Configuration) error {
logPrefix := logger.Prefix()
logger.SetPrefix(fmt.Sprintf("%s[recovery] ", logPrefix))
@ -1910,6 +1910,11 @@ func RecoverNode(dataDir string, logger *log.Logger, logs raft.LogStore, stable
return fmt.Errorf("log compaction failed: %v", err)
}
// Erase record of previous updating of Applied Index too.
if err := stable.SetAppliedIndex(0); err != nil {
return fmt.Errorf("failed to zero applied index: %v", err)
}
return nil
}

Loading…
Cancel
Save