Skip to content

Commit

Permalink
fix: set empty list to logStreams when it is null
Browse files Browse the repository at this point in the history
Resolves #88
  • Loading branch information
ijsong committed Aug 29, 2022
1 parent 0245c37 commit 0ee5627
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 11 deletions.
4 changes: 3 additions & 1 deletion bin/start_varlogsn.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,9 @@ def get_data_dirs(admin: str, snid: int):
f"--snid={snid}"]
out = subprocess.check_output(cmd)
snm = json.loads(out)
logstreams = snm.get("logStreams", [])
logstreams = snm.get("logStreams")
if not logstreams:
logstreams = []
return [logstream["path"] for logstream in logstreams]


Expand Down
9 changes: 1 addition & 8 deletions internal/admin/stats/repository.go
Original file line number Diff line number Diff line change
Expand Up @@ -127,11 +127,7 @@ func (s *repository) GetStorageNode(snid types.StorageNodeID) (*vmspb.StorageNod
if !ok {
return nil, false
}
copied := proto.Clone(snm).(*vmspb.StorageNodeMetadata)
if len(copied.LogStreamReplicas) == 0 {
copied.LogStreamReplicas = []snpb.LogStreamReplicaMetadataDescriptor{}
}
return copied, true
return proto.Clone(snm).(*vmspb.StorageNodeMetadata), true
}

func (s *repository) ListStorageNodes() []vmspb.StorageNodeMetadata {
Expand All @@ -140,9 +136,6 @@ func (s *repository) ListStorageNodes() []vmspb.StorageNodeMetadata {
snms := make([]vmspb.StorageNodeMetadata, 0, len(s.storageNodes))
for _, snm := range s.storageNodes {
copied := *proto.Clone(snm).(*vmspb.StorageNodeMetadata)
if len(copied.LogStreamReplicas) == 0 {
copied.LogStreamReplicas = []snpb.LogStreamReplicaMetadataDescriptor{}
}
snms = append(snms, copied)
}
sort.Slice(snms, func(i, j int) bool {
Expand Down
25 changes: 23 additions & 2 deletions internal/varlogctl/storagenode/storagenode.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,35 @@ import (
"github.com/kakao/varlog/internal/varlogctl"
"github.com/kakao/varlog/pkg/types"
"github.com/kakao/varlog/pkg/varlog"
"github.com/kakao/varlog/proto/snpb"
"github.com/kakao/varlog/proto/vmspb"
)

func Describe(snid ...types.StorageNodeID) varlogctl.ExecuteFunc {
return func(ctx context.Context, adm varlog.Admin) (any, error) {
if len(snid) > 0 {
return adm.GetStorageNode(ctx, snid[0])
snm, err := adm.GetStorageNode(ctx, snid[0])
if err != nil {
return nil, err
}
ensureEmptyFields(snm)
return snm, nil

}
snms, err := adm.ListStorageNodes(ctx)
if err != nil {
return nil, err
}
for idx := range snms {
ensureEmptyFields(&snms[idx])
}
return adm.ListStorageNodes(ctx)
return snms, nil
}
}

func ensureEmptyFields(snm *vmspb.StorageNodeMetadata) {
if len(snm.LogStreamReplicas) == 0 {
snm.LogStreamReplicas = []snpb.LogStreamReplicaMetadataDescriptor{}
}
}

Expand Down

0 comments on commit 0ee5627

Please sign in to comment.