diff --git a/weed/credential/filer_etc/filer_etc_identity.go b/weed/credential/filer_etc/filer_etc_identity.go index f57c7c3ac..aa9417577 100644 --- a/weed/credential/filer_etc/filer_etc_identity.go +++ b/weed/credential/filer_etc/filer_etc_identity.go @@ -15,14 +15,18 @@ func (store *FilerEtcStore) LoadConfiguration(ctx context.Context) (*iam_pb.S3Ap s3cfg := &iam_pb.S3ApiConfiguration{} err := store.withFilerClient(func(client filer_pb.SeaweedFilerClient) error { - var buf bytes.Buffer - if err := filer.ReadEntry(nil, client, filer.IamConfigDirectory, filer.IamIdentityFile, &buf); err != nil { + // Use ReadInsideFiler instead of ReadEntry since identity.json is small + // and stored inline. ReadEntry requires a master client for chunked files, + // but ReadInsideFiler only reads inline content. + content, err := filer.ReadInsideFiler(client, filer.IamConfigDirectory, filer.IamIdentityFile) + if err != nil { if err != filer_pb.ErrNotFound { return err } + return nil } - if buf.Len() > 0 { - return filer.ParseS3ConfigurationFromBytes(buf.Bytes(), s3cfg) + if len(content) > 0 { + return filer.ParseS3ConfigurationFromBytes(content, s3cfg) } return nil }) diff --git a/weed/credential/filer_etc/filer_etc_policy.go b/weed/credential/filer_etc/filer_etc_policy.go index 8b4647cb1..31ac5b078 100644 --- a/weed/credential/filer_etc/filer_etc_policy.go +++ b/weed/credential/filer_etc/filer_etc_policy.go @@ -1,7 +1,6 @@ package filer_etc import ( - "bytes" "context" "encoding/json" @@ -29,8 +28,11 @@ func (store *FilerEtcStore) GetPolicies(ctx context.Context) (map[string]policy_ } err := store.withFilerClient(func(client filer_pb.SeaweedFilerClient) error { - var buf bytes.Buffer - if err := filer.ReadEntry(nil, client, filer.IamConfigDirectory, filer.IamPoliciesFile, &buf); err != nil { + // Use ReadInsideFiler instead of ReadEntry since policies.json is small + // and stored inline. ReadEntry requires a master client for chunked files, + // but ReadInsideFiler only reads inline content. + content, err := filer.ReadInsideFiler(client, filer.IamConfigDirectory, filer.IamPoliciesFile) + if err != nil { if err == filer_pb.ErrNotFound { glog.V(1).Infof("Policies file not found at %s/%s, returning empty policies", filer.IamConfigDirectory, filer.IamPoliciesFile) // If file doesn't exist, return empty collection @@ -39,8 +41,8 @@ func (store *FilerEtcStore) GetPolicies(ctx context.Context) (map[string]policy_ return err } - if buf.Len() > 0 { - return json.Unmarshal(buf.Bytes(), policiesCollection) + if len(content) > 0 { + return json.Unmarshal(content, policiesCollection) } return nil })