aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKonstantin Lebedev <9497591+kmlebedev@users.noreply.github.com>2022-10-24 02:00:28 +0500
committerGitHub <noreply@github.com>2022-10-23 14:00:28 -0700
commit452202f35b9e16bf00cdaf995a6e347eda367ce2 (patch)
treee2f188a7a8173c0d891ffa742daba294d206c386
parente3ea544d40bf4ad86fce6e5911a3902c66b040b8 (diff)
downloadseaweedfs-452202f35b9e16bf00cdaf995a6e347eda367ce2.tar.xz
seaweedfs-452202f35b9e16bf00cdaf995a6e347eda367ce2.zip
ReadNeedleMeta recovery panic occurred (#3883)
ReadNeedleMeta panic occurred https://github.com/seaweedfs/seaweedfs/issues/3882
-rw-r--r--weed/storage/needle/needle_read_page.go6
1 files changed, 6 insertions, 0 deletions
diff --git a/weed/storage/needle/needle_read_page.go b/weed/storage/needle/needle_read_page.go
index 4e7edfb31..8dde43701 100644
--- a/weed/storage/needle/needle_read_page.go
+++ b/weed/storage/needle/needle_read_page.go
@@ -1,6 +1,7 @@
package needle
import (
+ "fmt"
"github.com/seaweedfs/seaweedfs/weed/glog"
"github.com/seaweedfs/seaweedfs/weed/storage/backend"
. "github.com/seaweedfs/seaweedfs/weed/storage/types"
@@ -30,6 +31,11 @@ func (n *Needle) ReadNeedleData(r backend.BackendStorageFile, volumeOffset int64
// ReadNeedleMeta fills all metadata except the n.Data
func (n *Needle) ReadNeedleMeta(r backend.BackendStorageFile, offset int64, size Size, version Version) (err error) {
+ defer func() {
+ if r := recover(); r != nil {
+ err = fmt.Errorf("panic occurred: %+v", r)
+ }
+ }()
bytes := make([]byte, NeedleHeaderSize+DataSizeSize)