prepare to register ec shard info in master
This commit is contained in:
43
weed/topology/topology_ec.go
Normal file
43
weed/topology/topology_ec.go
Normal file
@@ -0,0 +1,43 @@
|
||||
package topology
|
||||
|
||||
import (
|
||||
"sort"
|
||||
|
||||
"github.com/chrislusf/seaweedfs/weed/glog"
|
||||
"github.com/chrislusf/seaweedfs/weed/pb/master_pb"
|
||||
"github.com/chrislusf/seaweedfs/weed/storage/erasure_coding"
|
||||
"github.com/chrislusf/seaweedfs/weed/storage/needle"
|
||||
)
|
||||
|
||||
|
||||
func (t *Topology) SyncDataNodeEcShards(shardInfos []*master_pb.VolumeEcShardInformationMessage, dn *DataNode) (newShards, deletedShards []*erasure_coding.EcVolumeInfo) {
|
||||
// convert into in memory struct storage.VolumeInfo
|
||||
var shards []*erasure_coding.EcVolumeInfo
|
||||
sort.Slice(shardInfos, func(i, j int) bool {
|
||||
return shardInfos[i].Id < shardInfos[j].Id
|
||||
})
|
||||
var prevVolumeId uint32
|
||||
var ecVolumeInfo *erasure_coding.EcVolumeInfo
|
||||
for _, shardInfo := range shardInfos {
|
||||
if shardInfo.Id != prevVolumeId {
|
||||
ecVolumeInfo = erasure_coding.NewEcVolumeInfo(shardInfo.Collection, needle.VolumeId(shardInfo.Id))
|
||||
shards = append(shards, ecVolumeInfo)
|
||||
}
|
||||
ecVolumeInfo.AddShardId(erasure_coding.ShardId(shardInfo.EcIndex))
|
||||
}
|
||||
// find out the delta volumes
|
||||
newShards, deletedShards = dn.UpdateEcShards(shards)
|
||||
for _, v := range newShards {
|
||||
t.RegisterEcShards(v, dn)
|
||||
}
|
||||
for _, v := range deletedShards {
|
||||
t.UnRegisterEcShards(v, dn)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
func (t *Topology) RegisterEcShards(ecShardInfos *erasure_coding.EcVolumeInfo, dn *DataNode) {
|
||||
}
|
||||
func (t *Topology) UnRegisterEcShards(ecShardInfos *erasure_coding.EcVolumeInfo, dn *DataNode) {
|
||||
glog.Infof("removing ec shard info:%+v", ecShardInfos)
|
||||
}
|
||||
Reference in New Issue
Block a user