[#965] morph: Get rid of container.List invocations
All checks were successful
DCO action / DCO (pull_request) Successful in 4m40s
Vulncheck / Vulncheck (pull_request) Successful in 6m44s
Build / Build Components (1.20) (pull_request) Successful in 10m13s
Build / Build Components (1.21) (pull_request) Successful in 10m7s
Tests and linters / Staticcheck (pull_request) Successful in 11m7s
Tests and linters / Tests (1.20) (pull_request) Successful in 11m53s
Tests and linters / Tests (1.21) (pull_request) Successful in 12m3s
Tests and linters / Lint (pull_request) Successful in 12m23s
Tests and linters / Tests with -race (pull_request) Successful in 12m41s

ContainersOf() is better in almost every aspect, besides creating a
session when the containers number is between 1024 and 2048 (prefetch
script does limited unwrapping). Making List() private helps to ensure
it is no longer used and can be safely removed in future.

Signed-off-by: Evgenii Stratonikov <e.stratonikov@yadro.com>
This commit is contained in:
Evgenii Stratonikov 2024-02-06 20:29:39 +03:00
parent d7838790c6
commit 357287c267
4 changed files with 9 additions and 9 deletions

View file

@ -210,7 +210,7 @@ type morphContainerReader struct {
src containerCore.Source
lister interface {
List(*user.ID) ([]cid.ID, error)
ContainersOf(*user.ID) ([]cid.ID, error)
}
}
@ -226,8 +226,8 @@ func (x *morphContainerReader) GetEACL(id cid.ID) (*containerCore.EACL, error) {
return x.eacl.GetEACL(id)
}
func (x *morphContainerReader) List(id *user.ID) ([]cid.ID, error) {
return x.lister.List(id)
func (x *morphContainerReader) ContainersOf(id *user.ID) ([]cid.ID, error) {
return x.lister.ContainersOf(id)
}
type morphContainerWriter struct {

View file

@ -53,7 +53,7 @@ func (c *Client) ContainersOf(idUser *user.ID) ([]cid.ID, error) {
err := c.client.Morph().TestInvokeIterator(cb, batchSize, cnrHash, containersOfMethod, rawID)
if err != nil {
if errors.Is(err, unwrap.ErrNoSessionID) {
return c.List(idUser)
return c.list(idUser)
}
return nil, err
}

View file

@ -8,13 +8,13 @@ import (
"git.frostfs.info/TrueCloudLab/frostfs-sdk-go/user"
)
// List returns a list of container identifiers belonging
// list returns a list of container identifiers belonging
// to the specified user of FrostFS system. The list is composed
// through Container contract call.
//
// Returns the identifiers of all FrostFS containers if pointer
// to user identifier is nil.
func (c *Client) List(idUser *user.ID) ([]cid.ID, error) {
func (c *Client) list(idUser *user.ID) ([]cid.ID, error) {
var rawID []byte
if idUser != nil {

View file

@ -26,10 +26,10 @@ type Reader interface {
containercore.Source
containercore.EACLSource
// List returns a list of container identifiers belonging
// ContainersOf returns a list of container identifiers belonging
// to the specified user of FrostFS system. Returns the identifiers
// of all FrostFS containers if pointer to owner identifier is nil.
List(*user.ID) ([]cid.ID, error)
ContainersOf(*user.ID) ([]cid.ID, error)
}
// Writer is an interface of container storage updater.
@ -187,7 +187,7 @@ func (s *morphExecutor) List(_ context.Context, body *container.ListRequestBody)
return nil, fmt.Errorf("invalid user ID: %w", err)
}
cnrs, err := s.rdr.List(&id)
cnrs, err := s.rdr.ContainersOf(&id)
if err != nil {
return nil, err
}