cmd/stcrashreceiver, lib/db: Improve panic message handling (#7029)

This commit is contained in:
Simon Frei
2020-10-08 17:37:45 +02:00
committed by GitHub
parent 9d09fd6af3
commit d828adb648
5 changed files with 111 additions and 5 deletions
+12 -3
View File
@@ -13,6 +13,7 @@ import (
"fmt"
"io"
"os"
"regexp"
"time"
"github.com/dchest/siphash"
@@ -816,7 +817,7 @@ func (db *Lowlevel) getMetaAndCheck(folder string) *metadataTracker {
var err error
defer func() {
if err != nil && !backend.IsClosed(err) {
panic(err)
warnAndPanic(err)
}
}()
@@ -944,14 +945,14 @@ func (db *Lowlevel) verifyLocalSequence(curSeq int64, folder string) bool {
t, err := db.newReadOnlyTransaction()
if err != nil {
panic(err)
warnAndPanic(err)
}
ok := true
if err := t.withHaveSequence([]byte(folder), curSeq+1, func(fi protocol.FileIntf) bool {
ok = false // we got something, which we should not have
return false
}); err != nil && !backend.IsClosed(err) {
panic(err)
warnAndPanic(err)
}
t.close()
@@ -1161,3 +1162,11 @@ func (db *Lowlevel) needsRepairPath() string {
func unchanged(nf, ef protocol.FileIntf) bool {
return ef.FileVersion().Equal(nf.FileVersion()) && ef.IsInvalid() == nf.IsInvalid() && ef.FileLocalFlags() == nf.FileLocalFlags()
}
var ldbPathRe = regexp.MustCompile(`(open|write|read) .+[\\/].+[\\/]index[^\\/]+[\\/][^\\/]+: `)
func warnAndPanic(err error) {
l.Warnf("Fatal error: %v", err)
msg := ldbPathRe.ReplaceAllString(err.Error(), "$1 x: ")
panic(msg)
}
+1 -2
View File
@@ -531,6 +531,5 @@ func fatalError(err error, opStr string, db *Lowlevel) {
}
}
}
l.Warnf("Fatal error: %v: %v", opStr, err)
panic(err)
warnAndPanic(fmt.Errorf("%v: %w:", opStr, err))
}