From 9609b0b67d454abaeff594ed32997986d0403d85 Mon Sep 17 00:00:00 2001 From: Jeff Johnson Date: Thu, 26 Nov 2020 12:02:28 -0500 Subject: [PATCH 1/4] A bit more paranoia for dbstress * Additional debugging info on fatal errors * Don't exit, but panic, in funcs using defer --- goleveldb/manualtest/dbstress/main.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/goleveldb/manualtest/dbstress/main.go b/goleveldb/manualtest/dbstress/main.go index f3d68f9043..5dac5b89be 100644 --- a/goleveldb/manualtest/dbstress/main.go +++ b/goleveldb/manualtest/dbstress/main.go @@ -155,13 +155,13 @@ type testingStorage struct { func (ts *testingStorage) scanTable(fd storage.FileDesc, checksum bool) (corrupted bool) { r, err := ts.Open(fd) if err != nil { - log.Fatal(err) + panic(fmt.Sprintf("testingStorage scanTable Open failure: %v" err)) } defer r.Close() size, err := r.Seek(0, os.SEEK_END) if err != nil { - log.Fatal(err) + panic(fmt.Sprintf("testingStorage scanTable Seek failure: %v", err)) } o := &opt.Options{ @@ -173,7 +173,7 @@ func (ts *testingStorage) scanTable(fd storage.FileDesc, checksum bool) (corrupt } tr, err := table.NewReader(r, size, fd, nil, bpool, o) if err != nil { - log.Fatal(err) + panic(fmt.Sprintf("testingStorage scanTable NewReader failure: %v", err)) } defer tr.Release() @@ -225,7 +225,7 @@ func (ts *testingStorage) scanTable(fd storage.FileDesc, checksum bool) (corrupt log.Printf("FATAL: [%v] Corruption detected: %v", fd, err) } else { - log.Fatal(err) + panic(fmt.Sprintf("Panic: iter.Error: err: %v, fd: %v", err, fd)) } } @@ -314,17 +314,17 @@ func main() { runtime.SetBlockProfileRate(1) go func() { if err := http.ListenAndServe(httpProf, nil); err != nil { - log.Fatalf("HTTPPROF: %v", err) + panic(fmt.Sprintf(("Panic: HTTPPROF: %v", err) } }() } - runtime.GOMAXPROCS(runtime.NumCPU()) + runtime.GOMAXPROCS(runtime.NumCPU()*2) os.RemoveAll(dbPath) stor, err := storage.OpenFile(dbPath, false) if err != nil { - log.Fatal(err) + panic(fmt.Sprintf("Panic: OpenFile: %v", err)) } tstor := &testingStorage{stor} defer tstor.Close() @@ -362,7 +362,7 @@ func main() { db, err := leveldb.Open(tstor, o) if err != nil { - log.Fatal(err) + panic(fmt.Sprintf("levedb.Open failure: %v", err)) } defer db.Close() @@ -645,7 +645,7 @@ func (s cryptoSource) Int63() int64 { func (s cryptoSource) Uint64() (v uint64) { err := binary.Read(crand.Reader, binary.BigEndian, &v) if err != nil { - log.Fatal(err) + panic(fmt.Sprintf("Panic: cryptoSource: CSPRNG failure", err)) } return v } From 3e08b729642aaade162e6e0c43a159d4e50ddb1c Mon Sep 17 00:00:00 2001 From: Jeff Johnson Date: Thu, 26 Nov 2020 12:04:34 -0500 Subject: [PATCH 2/4] Fix a few typos --- goleveldb/manualtest/dbstress/main.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/goleveldb/manualtest/dbstress/main.go b/goleveldb/manualtest/dbstress/main.go index 5dac5b89be..5b2f1914f6 100644 --- a/goleveldb/manualtest/dbstress/main.go +++ b/goleveldb/manualtest/dbstress/main.go @@ -155,7 +155,7 @@ type testingStorage struct { func (ts *testingStorage) scanTable(fd storage.FileDesc, checksum bool) (corrupted bool) { r, err := ts.Open(fd) if err != nil { - panic(fmt.Sprintf("testingStorage scanTable Open failure: %v" err)) + panic(fmt.Sprintf("testingStorage scanTable Open failure: %v", err)) } defer r.Close() @@ -314,7 +314,7 @@ func main() { runtime.SetBlockProfileRate(1) go func() { if err := http.ListenAndServe(httpProf, nil); err != nil { - panic(fmt.Sprintf(("Panic: HTTPPROF: %v", err) + panic(fmt.Sprintf("Panic: HTTPPROF: %v", err)) } }() } From da20898f7ae31229c9c66695245acc02af7dc979 Mon Sep 17 00:00:00 2001 From: Jeff Johnson Date: Thu, 26 Nov 2020 13:45:45 -0500 Subject: [PATCH 3/4] dbstress: Better panic messages, additional fixes. * Likely dependant on PR #231, PR #234, PR #235 for clean git recursive merge, but will verify. --- goleveldb/manualtest/dbstress/main.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/goleveldb/manualtest/dbstress/main.go b/goleveldb/manualtest/dbstress/main.go index 5b2f1914f6..4057e135b0 100644 --- a/goleveldb/manualtest/dbstress/main.go +++ b/goleveldb/manualtest/dbstress/main.go @@ -29,7 +29,8 @@ import ( ) var ( - dbPath = path.Join(os.TempDir(), "goleveldb-testdb") + src cryptoSource + dbPath = path.Join(os.TempDir(), strconv.Itoa(rand.New(src).Int()%9999), strconv.Itoa(rand.New(src).Int()%9999), "-goleveldb-testdb") openFilesCacheCapacity = 500 keyLen = 63 valueLen = 256 From ca13675851489feeb38ac91bdc12f7491790b399 Mon Sep 17 00:00:00 2001 From: Jeff Johnson Date: Thu, 26 Nov 2020 13:52:15 -0500 Subject: [PATCH 4/4] Fix typo --- goleveldb/manualtest/dbstress/main.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/goleveldb/manualtest/dbstress/main.go b/goleveldb/manualtest/dbstress/main.go index 4057e135b0..4fcdb06207 100644 --- a/goleveldb/manualtest/dbstress/main.go +++ b/goleveldb/manualtest/dbstress/main.go @@ -363,7 +363,7 @@ func main() { db, err := leveldb.Open(tstor, o) if err != nil { - panic(fmt.Sprintf("levedb.Open failure: %v", err)) + panic(fmt.Sprintf("leveldb.Open failure: %v", err)) } defer db.Close()