Skip to content

Commit 83580cd

Browse files
authored
Merge pull request #1442 from bnb-chain/develop
release: v1.10.1
2 parents 042fcfb + 415131c commit 83580cd

File tree

7 files changed

+56
-12
lines changed

7 files changed

+56
-12
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
# Changelog
22

3+
## v1.10.1
4+
FEATURES
5+
* [#1440](https://github.com/bnb-chain/greenfield-storage-provider/pull/1440) feat: add index to permission table and add piece store no such key error as 404 code
6+
37
## v1.10.0
48
BUGFIXES
59
* [#1435](https://github.com/bnb-chain/greenfield-storage-provider/pull/1435) fix: gc objects

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ require (
286286
google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b // indirect
287287
google.golang.org/genproto/googleapis/api v0.0.0-20231012201019-e917dd12ba7a // indirect
288288
google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b // indirect
289-
google.golang.org/protobuf v1.33.0 // indirect
289+
google.golang.org/protobuf v1.33.0
290290
gopkg.in/ini.v1 v1.67.0 // indirect
291291
gopkg.in/natefinch/npipe.v2 v2.0.0-20160621034901-c1b8fa8bdcce // indirect
292292
gopkg.in/yaml.v2 v2.4.0 // indirect
@@ -308,7 +308,7 @@ replace (
308308
github.com/confio/ics23/go => github.com/cosmos/cosmos-sdk/ics23/go v0.8.0
309309
github.com/cosmos/cosmos-sdk => github.com/bnb-chain/greenfield-cosmos-sdk v1.9.0
310310
github.com/cosmos/iavl => github.com/bnb-chain/greenfield-iavl v0.20.1
311-
github.com/forbole/juno/v4 => github.com/bnb-chain/juno/v4 v4.0.0-20240604033531-028f2cc8f76d
311+
github.com/forbole/juno/v4 => github.com/bnb-chain/juno/v4 v4.0.0-20241213040233-b35dbdd3eccc
312312
github.com/gogo/protobuf => github.com/regen-network/protobuf v1.3.3-alpha.regen.1
313313
github.com/syndtr/goleveldb => github.com/syndtr/goleveldb v1.0.1-0.20210819022825-2ae1ddf74ef7
314314
)

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -192,8 +192,8 @@ github.com/bnb-chain/greenfield-cosmos-sdk/math v0.0.0-20231206043955-0855e0965b
192192
github.com/bnb-chain/greenfield-cosmos-sdk/math v0.0.0-20231206043955-0855e0965bc8/go.mod h1:An0MllWJY6PxibUpnwGk8jOm+a/qIxlKmL5Zyp9NnaM=
193193
github.com/bnb-chain/greenfield-iavl v0.20.1 h1:y3L64GU99otNp27/xLVBTDbv4eroR6CzoYz0rbaVotM=
194194
github.com/bnb-chain/greenfield-iavl v0.20.1/go.mod h1:oLksTs8dfh7DYIKBro7hbRQ+ewls7ghJ27pIXlbEXyI=
195-
github.com/bnb-chain/juno/v4 v4.0.0-20240604033531-028f2cc8f76d h1:a5Q944ZvZK4K3lDkbIqweZd1CqEE8gmxph+wpTQzE3k=
196-
github.com/bnb-chain/juno/v4 v4.0.0-20240604033531-028f2cc8f76d/go.mod h1:p+KkPIHURpqUJOdXanhhYgZpTLQxGZWkrAwtUaOuPlM=
195+
github.com/bnb-chain/juno/v4 v4.0.0-20241213040233-b35dbdd3eccc h1:+dDQk5ayB51Qgw5hZOzAkqJTyX6PDQFEj3aDEWmCLss=
196+
github.com/bnb-chain/juno/v4 v4.0.0-20241213040233-b35dbdd3eccc/go.mod h1:p+KkPIHURpqUJOdXanhhYgZpTLQxGZWkrAwtUaOuPlM=
197197
github.com/boltdb/bolt v1.3.1/go.mod h1:clJnj/oiGkjum5o1McbSZDSLxVThjynRyGBgiAx27Ps=
198198
github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g=
199199
github.com/bradfitz/gomemcache v0.0.0-20170208213004-1952afaa557d/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60=

modular/blocksyncer/modules/permission/module.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,5 +63,5 @@ func (m *Module) PrepareTables() error {
6363

6464
// AutoMigrate implements
6565
func (m *Module) AutoMigrate() error {
66-
return m.db.AutoMigrate(context.TODO(), []schema.Tabler{&models.Statements{}})
66+
return m.db.AutoMigrate(context.TODO(), []schema.Tabler{&models.Permission{}, &models.Statements{}})
6767
}

modular/downloader/download_task.go

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,11 @@ import (
44
"context"
55
"errors"
66
"net/http"
7+
"strings"
78
"sync/atomic"
89
"time"
910

11+
"github.com/aws/aws-sdk-go/service/s3"
1012
"gorm.io/gorm"
1113

1214
"github.com/bnb-chain/greenfield-storage-provider/base/types/gfsperrors"
@@ -39,6 +41,10 @@ func ErrPieceStoreWithDetail(detail string) *gfsperrors.GfSpError {
3941
return gfsperrors.Register(module.ReceiveModularName, http.StatusInternalServerError, 85101, detail)
4042
}
4143

44+
func ErrPieceStoreNoSuchKeyWithDetail(detail string) *gfsperrors.GfSpError {
45+
return gfsperrors.Register(module.ReceiveModularName, http.StatusNotFound, 85102, detail)
46+
}
47+
4248
func ErrGfSpDBWithDetail(detail string) *gfsperrors.GfSpError {
4349
return gfsperrors.Register(module.ReceiveModularName, http.StatusInternalServerError, 85201, detail)
4450
}
@@ -175,8 +181,12 @@ func (d *DownloadModular) HandleDownloadObjectTask(ctx context.Context, download
175181
int64(pInfo.Offset), int64(pInfo.Length))
176182
if getPieceErr != nil {
177183
log.CtxErrorw(ctx, "failed to get piece data from piece store", "task_info", downloadObjectTask.Info(), "piece_info", pInfo, "error", getPieceErr)
178-
err = ErrPieceStoreWithDetail("failed to get piece data from piece store, error: " + getPieceErr.Error())
179-
return nil, err
184+
pieceStoreErrDetail := "failed to get piece data from piece store, task_info: " + downloadObjectTask.Info() + ", error: " + err.Error()
185+
if isErrNoSuchKey(err) {
186+
return nil, ErrPieceStoreNoSuchKeyWithDetail(pieceStoreErrDetail)
187+
} else {
188+
return nil, ErrPieceStoreWithDetail(pieceStoreErrDetail)
189+
}
180190
}
181191
d.pieceCache.Add(key, piece)
182192
data = append(data, piece...)
@@ -389,7 +399,11 @@ func (d *DownloadModular) HandleDownloadPieceTask(ctx context.Context, downloadP
389399
int64(downloadPieceTask.GetPieceOffset()), int64(downloadPieceTask.GetPieceLength())); err != nil {
390400
metrics.PerfGetObjectTimeHistogram.WithLabelValues("get_object_put_piece_time").Observe(time.Since(putPieceTime).Seconds())
391401
log.CtxErrorw(ctx, "failed to get piece data from piece store", "task_info", downloadPieceTask.Info(), "error", err)
392-
return nil, ErrPieceStoreWithDetail("failed to get piece data from piece store, task_info: " + downloadPieceTask.Info() + ", error: " + err.Error())
402+
pieceStoreErrDetail := "failed to get piece data from piece store, task_info: " + downloadPieceTask.Info() + ", error: " + err.Error()
403+
if isErrNoSuchKey(err) {
404+
return nil, ErrPieceStoreNoSuchKeyWithDetail(pieceStoreErrDetail)
405+
}
406+
return nil, ErrPieceStoreWithDetail(pieceStoreErrDetail)
393407
}
394408
metrics.PerfGetObjectTimeHistogram.WithLabelValues("get_object_put_piece_time").Observe(time.Since(putPieceTime).Seconds())
395409
return pieceData, nil
@@ -462,7 +476,12 @@ func (d *DownloadModular) HandleChallengePiece(ctx context.Context, challengePie
462476
metrics.PerfChallengeTimeHistogram.WithLabelValues("challenge_get_piece_time").Observe(time.Since(getPieceTime).Seconds())
463477
if err != nil {
464478
log.CtxErrorw(ctx, "failed to get piece data", "task", challengePieceTask, "error", err)
465-
return nil, nil, nil, ErrPieceStoreWithDetail("failed to get piece data, error: " + err.Error())
479+
pieceStoreErrDetail := "failed to get piece data, task: " + challengePieceTask.Info() + ", error: " + err.Error()
480+
if isErrNoSuchKey(err) {
481+
return nil, nil, nil, ErrPieceStoreNoSuchKeyWithDetail(pieceStoreErrDetail)
482+
} else {
483+
return nil, nil, nil, ErrPieceStoreWithDetail(pieceStoreErrDetail)
484+
}
466485
}
467486

468487
return integrity.IntegrityChecksum, integrity.PieceChecksumList, data, nil
@@ -474,3 +493,8 @@ func (d *DownloadModular) PostChallengePiece(context.Context, task.ChallengePiec
474493
func (d *DownloadModular) QueryTasks(context.Context, task.TKey) ([]task.Task, error) {
475494
return nil, nil
476495
}
496+
497+
func isErrNoSuchKey(err error) bool {
498+
msg := err.Error()
499+
return strings.Contains(msg, s3.ErrCodeNoSuchKey)
500+
}

modular/gater/admin_handler.go

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ import (
1111
"strings"
1212
"time"
1313

14+
"github.com/aws/aws-sdk-go/service/s3"
1415
sdktypes "github.com/cosmos/cosmos-sdk/types"
1516

1617
commonhash "github.com/bnb-chain/greenfield-common/go/hash"
@@ -1001,7 +1002,12 @@ func (g *GateModular) getRecoverPiece(ctx context.Context, objectInfo *storagety
10011002
pieceData, err := g.baseApp.GfSpClient().GetPiece(ctx, pieceTask)
10021003
if err != nil {
10031004
log.CtxErrorw(ctx, "failed to download piece", "error", err)
1004-
return nil, downloader.ErrPieceStoreWithDetail("failed to download piece, error: " + err.Error())
1005+
pieceStoreErrDetail := "failed to download piece, error: " + err.Error()
1006+
if isErrNoSuchKey(err) {
1007+
return nil, downloader.ErrPieceStoreNoSuchKeyWithDetail(pieceStoreErrDetail)
1008+
} else {
1009+
return nil, downloader.ErrPieceStoreWithDetail(pieceStoreErrDetail)
1010+
}
10051011
}
10061012

10071013
return pieceData, nil
@@ -1091,7 +1097,12 @@ func (g *GateModular) getRecoverSegment(ctx context.Context, objectInfo *storage
10911097
pieceData, err := g.baseApp.GfSpClient().GetPiece(ctx, pieceTask)
10921098
if err != nil {
10931099
log.CtxErrorw(ctx, "failed to download piece", "error", err)
1094-
return nil, downloader.ErrPieceStoreWithDetail("failed to download piece, error: " + err.Error())
1100+
pieceStoreErrDetail := "failed to download piece, error: " + err.Error()
1101+
if isErrNoSuchKey(err) {
1102+
return nil, downloader.ErrPieceStoreNoSuchKeyWithDetail(pieceStoreErrDetail)
1103+
} else {
1104+
return nil, downloader.ErrPieceStoreWithDetail(pieceStoreErrDetail)
1105+
}
10951106
}
10961107
return pieceData, nil
10971108
}
@@ -1117,3 +1128,8 @@ func (g *GateModular) getRecoverSegment(ctx context.Context, objectInfo *storage
11171128

11181129
return ecData[redundancyIdx], nil
11191130
}
1131+
1132+
func isErrNoSuchKey(err error) bool {
1133+
msg := err.Error()
1134+
return strings.Contains(msg, s3.ErrCodeNoSuchKey)
1135+
}

modular/gater/object_handler.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -663,7 +663,7 @@ func (g *GateModular) downloadObject(w http.ResponseWriter, reqCtx *RequestConte
663663
log.CtxErrorw(reqCtx.Context(), "failed to download piece", "error", err)
664664
downloaderErr := gfsperrors.MakeGfSpError(err)
665665
// if it is the first piece and the quota db is not updated, no extra data need to updated
666-
if idx >= 1 || (idx == 0 && downloaderErr.GetInnerCode() == 85101) {
666+
if idx >= 1 || (idx == 0 && (downloaderErr.GetInnerCode() == 85101 || downloaderErr.GetInnerCode() == 85102)) {
667667
extraQuota = downloadSize - consumedQuota
668668
}
669669
return err

0 commit comments

Comments
 (0)