Browse Source

Merge aeb12f4617 into d7c30fdb2b

pull/8006/merge
Lisandro Pin 13 hours ago
committed by GitHub
parent
commit
ee391069d7
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 13
      weed/pb/volume_server.proto
  2. 568
      weed/pb/volume_server_pb/volume_server.pb.go
  3. 818
      weed/pb/volume_server_pb/volume_server_grpc.pb.go
  4. 36
      weed/server/volume_grpc_erasure_coding.go
  5. 7
      weed/storage/erasure_coding/ec_volume.go

13
weed/pb/volume_server.proto

@ -91,6 +91,9 @@ service VolumeServer {
}
rpc VolumeEcShardsInfo (VolumeEcShardsInfoRequest) returns (VolumeEcShardsInfoResponse) {
}
rpc VolumeEcStatus (VolumeEcStatusRequest) returns (VolumeEcStatusResponse) {
}
// tiered storage
rpc VolumeTierMoveDatToRemote (VolumeTierMoveDatToRemoteRequest) returns (stream VolumeTierMoveDatToRemoteResponse) {
@ -464,6 +467,16 @@ message VolumeEcShardsInfoResponse {
repeated EcShardInfo ec_shard_infos = 1;
}
message VolumeEcStatusRequest {
uint32 volume_id = 1;
}
message VolumeEcStatusResponse {
uint32 shard_count = 1;
uint64 volume_size = 2;
uint64 file_count = 3;
uint64 file_deleted_count = 4;
}
message EcShardInfo {
uint32 shard_id = 1;
int64 size = 2;

568
weed/pb/volume_server_pb/volume_server.pb.go
File diff suppressed because it is too large
View File

818
weed/pb/volume_server_pb/volume_server_grpc.pb.go
File diff suppressed because it is too large
View File

36
weed/server/volume_grpc_erasure_coding.go

@ -564,3 +564,39 @@ func (vs *VolumeServer) VolumeEcShardsInfo(ctx context.Context, req *volume_serv
EcShardInfos: ecShardInfos,
}, nil
}
// VolumeEcStatus returns content details for a EC volume.
func (vs *VolumeServer) VolumeEcStatus(ctx context.Context, req *volume_server_pb.VolumeEcStatusRequest) (*volume_server_pb.VolumeEcStatusResponse, error) {
vid := needle.VolumeId(req.GetVolumeId())
ecv, found := vs.store.FindEcVolume(vid)
if !found {
return nil, fmt.Errorf("VolumeEcStatus: EC volume %d not found", vid)
}
shards := uint32(len(ecv.Shards))
var files, filesDeleted, totalSize uint64
err := ecv.WalkIndex(func(_ types.NeedleId, _ types.Offset, size types.Size) error {
switch size.IsDeleted() {
case false:
files++
totalSize += uint64(size)
case true:
filesDeleted++
}
return nil
})
if err != nil {
return nil, err
}
res := &volume_server_pb.VolumeEcStatusResponse{
ShardCount: shards,
FileCount: files,
FileDeletedCount: filesDeleted,
VolumeSize: totalSize,
}
return res, nil
}

7
weed/storage/erasure_coding/ec_volume.go

@ -332,3 +332,10 @@ func SearchNeedleFromSortedIndex(ecxFile *os.File, ecxFileSize int64, needleId t
func (ev *EcVolume) IsTimeToDestroy() bool {
return ev.ExpireAtSec > 0 && time.Now().Unix() > (int64(ev.ExpireAtSec)+destroyDelaySeconds)
}
func (ev *EcVolume) WalkIndex(processNeedleFn func(key types.NeedleId, offset types.Offset, size types.Size) error) error {
if ev.ecxFile == nil {
return fmt.Errorf("no ECX file associated with EC volume %v", ev.VolumeId)
}
return idx.WalkIndexFile(ev.ecxFile, 0, processNeedleFn)
}
Loading…
Cancel
Save