Browse Source

consensus: open target WAL as read/write during autorepair (#5536) (#5547)

Fixes #5422. That turned out to be a whole lot easier than expected.

Backport of #5536.
pull/5551/head
Erik Grinaker 4 years ago
committed by GitHub
parent
commit
7c17fa115a
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 4 additions and 4 deletions
  1. +1
    -1
      CHANGELOG_PENDING.md
  2. +3
    -3
      consensus/state.go

+ 1
- 1
CHANGELOG_PENDING.md View File

@ -28,5 +28,5 @@ Friendly reminder, we have a [bug bounty program](https://hackerone.com/tendermi
- [blockchain/v2] \#5499 Fix "duplicate block enqueued by processor" panic (@melekes) - [blockchain/v2] \#5499 Fix "duplicate block enqueued by processor" panic (@melekes)
- [abci/grpc] \#5520 Return async responses in order, to avoid mempool panics. (@erikgrinaker) - [abci/grpc] \#5520 Return async responses in order, to avoid mempool panics. (@erikgrinaker)
- [blockchain/v2] \#5530 Fix "processed height 4541 but expected height 4540" panic (@melekes) - [blockchain/v2] \#5530 Fix "processed height 4541 but expected height 4540" panic (@melekes)
- [consensus/wal] Fix WAL autorepair by opening target WAL in read/write mode (@erikgrinaker)

+ 3
- 3
consensus/state.go View File

@ -328,7 +328,7 @@ func (cs *State) OnStart() error {
return err return err
} }
cs.Logger.Info("WAL file is corrupted. Attempting repair", "err", err)
cs.Logger.Error("WAL file is corrupted, attempting repair", "err", err)
// 1) prep work // 1) prep work
if err := cs.wal.Stop(); err != nil { if err := cs.wal.Stop(); err != nil {
@ -345,7 +345,7 @@ func (cs *State) OnStart() error {
// 3) try to repair (WAL file will be overwritten!) // 3) try to repair (WAL file will be overwritten!)
if err := repairWalFile(corruptedFile, cs.config.WalFile()); err != nil { if err := repairWalFile(corruptedFile, cs.config.WalFile()); err != nil {
cs.Logger.Error("Repair failed", "err", err)
cs.Logger.Error("WAL repair failed", "err", err)
return err return err
} }
cs.Logger.Info("Successful repair") cs.Logger.Info("Successful repair")
@ -2212,7 +2212,7 @@ func repairWalFile(src, dst string) error {
} }
defer in.Close() defer in.Close()
out, err := os.Open(dst)
out, err := os.Create(dst)
if err != nil { if err != nil {
return err return err
} }


Loading…
Cancel
Save