Skip to content

Commit

Permalink
bugfix list object/bucket error
Browse files Browse the repository at this point in the history
  • Loading branch information
fynn-0xc committed Mar 1, 2023
1 parent 56f5203 commit d723d6e
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 12 deletions.
18 changes: 16 additions & 2 deletions e2e/tests/storage_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -142,16 +142,30 @@ func (s *StorageTestSuite) TestCreateObject() {
err = storagetypes.VerifySignature(s.StorageProvider.ApprovalKey.GetAddr(), sdk.Keccak256(sr.GetSignBytes()), secondarySig)
s.Require().NoError(err)

s.Require().NoError(err)

secondarySigs := [][]byte{secondarySig, secondarySig, secondarySig, secondarySig, secondarySig, secondarySig}
msgSealObject.SecondarySpSignatures = secondarySigs
s.T().Logf("msg %s", msgSealObject.String())
s.SendTxBlock(msgSealObject, s.StorageProvider.SealKey)

// ListBuckets
queryListBucketsRequest := storagetypes.QueryListBucketsRequest{}
queryListBucketResponse, err := s.Client.ListBuckets(ctx, &queryListBucketsRequest)
s.Require().NoError(err)
s.Require().Greater(len(queryListBucketResponse.BucketInfos), 0)

// ListObject
queryListObjectsRequest := storagetypes.QueryListObjectsRequest{
BucketName: bucketName,
}
queryListObjectsResponse, err := s.Client.ListObjects(ctx, &queryListObjectsRequest)
s.Require().NoError(err)
s.Require().Equal(len(queryListObjectsResponse.ObjectInfos), 1)
s.Require().Equal(queryListObjectsResponse.ObjectInfos[0].ObjectName, objectName)

// DeleteObject
msgDeleteObject := storagetypes.NewMsgDeleteObject(user.GetAddr(), bucketName, objectName)
s.SendTxBlock(msgDeleteObject, user)

// DeleteBucket
msgDeleteBucket := storagetypes.NewMsgDeleteBucket(user.GetAddr(), bucketName)
s.SendTxBlock(msgDeleteBucket, user)
Expand Down
4 changes: 2 additions & 2 deletions x/storage/keeper/keeper.go
Original file line number Diff line number Diff line change
Expand Up @@ -157,7 +157,7 @@ func (k Keeper) DeleteBucket(ctx sdk.Context, operator sdk.AccAddress, bucketNam
}

// check if the bucket empty
if k.isEmptyBucket(ctx, bucketName) {
if k.isNonEmptyBucket(ctx, bucketName) {
return types.ErrBucketNotEmpty
}

Expand Down Expand Up @@ -893,7 +893,7 @@ func (k Keeper) GenNextGroupId(ctx sdk.Context) math.Uint {
return seq
}

func (k Keeper) isEmptyBucket(ctx sdk.Context, bucketName string) bool {
func (k Keeper) isNonEmptyBucket(ctx sdk.Context, bucketName string) bool {
store := ctx.KVStore(k.storeKey)
objectStore := prefix.NewStore(store, types.GetObjectKeyOnlyBucketPrefix(bucketName))

Expand Down
13 changes: 5 additions & 8 deletions x/storage/keeper/query.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ func (k Keeper) ListBuckets(goCtx context.Context, req *types.QueryListBucketsRe

var bucketInfos []types.BucketInfo
store := ctx.KVStore(k.storeKey)
bucketStore := prefix.NewStore(store, types.BucketPrefix)
bucketStore := prefix.NewStore(store, types.BucketByIDPrefix)

pageRes, err := query.Paginate(bucketStore, req.Pagination, func(key []byte, value []byte) error {
var bucketInfo types.BucketInfo
Expand All @@ -78,16 +78,13 @@ func (k Keeper) ListObjects(goCtx context.Context, req *types.QueryListObjectsRe

var objectInfos []types.ObjectInfo
store := ctx.KVStore(k.storeKey)
objectStore := prefix.NewStore(store, types.ObjectPrefix)

objectPrefixStore := prefix.NewStore(objectStore, types.GetBucketKey(req.BucketName))
objectPrefixStore := prefix.NewStore(store, types.GetObjectKeyOnlyBucketPrefix(req.BucketName))

pageRes, err := query.Paginate(objectPrefixStore, req.Pagination, func(key []byte, value []byte) error {
var objectInfo types.ObjectInfo
if err := k.cdc.Unmarshal(value, &objectInfo); err != nil {
return err
objectInfo, found := k.GetObjectInfoById(ctx, types.DecodeSequence(value))
if found {
objectInfos = append(objectInfos, objectInfo)
}
objectInfos = append(objectInfos, objectInfo)
return nil
})

Expand Down

0 comments on commit d723d6e

Please sign in to comment.