Documentation ¶
Index ¶
- func AllocateVolume(dn *DataNode, grpcDialOption grpc.DialOption, vid needle.VolumeId, ...) error
- func ReplicatedDelete(masterNode string, store *storage.Store, volumeId needle.VolumeId, ...) (uint32, error)
- func ReplicatedWrite(masterNode string, s *storage.Store, volumeId needle.VolumeId, ...) (size uint32, isUnchanged bool, err error)
- type AllocateVolumeResult
- type Collection
- type Configuration
- type DataCenter
- type DataNode
- func (dn *DataNode) AddOrUpdateEcShard(s *erasure_coding.EcVolumeInfo)
- func (dn *DataNode) AddOrUpdateVolume(v storage.VolumeInfo) (isNew bool)
- func (dn *DataNode) DeleteEcShard(s *erasure_coding.EcVolumeInfo)
- func (dn *DataNode) DeltaUpdateEcShards(newShards, deletedShards []*erasure_coding.EcVolumeInfo)
- func (dn *DataNode) DeltaUpdateVolumes(newlVolumes, deletedVolumes []storage.VolumeInfo)
- func (dn *DataNode) GetDataCenter() *DataCenter
- func (dn *DataNode) GetEcShards() (ret []*erasure_coding.EcVolumeInfo)
- func (dn *DataNode) GetRack() *Rack
- func (dn *DataNode) GetTopology() *Topology
- func (dn *DataNode) GetVolumes() (ret []storage.VolumeInfo)
- func (dn *DataNode) GetVolumesById(id needle.VolumeId) (storage.VolumeInfo, error)
- func (dn *DataNode) HasVolumesById(id needle.VolumeId) (hasVolumeId bool)
- func (dn *DataNode) MatchLocation(ip string, port int) bool
- func (dn *DataNode) String() string
- func (dn *DataNode) ToDataNodeInfo() *master_pb.DataNodeInfo
- func (dn *DataNode) ToMap() interface{}
- func (dn *DataNode) UpdateEcShards(actualShards []*erasure_coding.EcVolumeInfo) (newShards, deletedShards []*erasure_coding.EcVolumeInfo)
- func (dn *DataNode) UpdateVolumes(actualVolumes []storage.VolumeInfo) (newVolumes, deletedVolumes []storage.VolumeInfo)
- func (dn *DataNode) Url() string
- type DistributedOperationResult
- type EcShardLocations
- type MaxVolumeIdCommand
- type Node
- type NodeId
- type NodeImpl
- func (n *NodeImpl) Children() (ret []Node)
- func (n *NodeImpl) CollectDeadNodeAndFullVolumes(freshThreshHold int64, volumeSizeLimit uint64)
- func (n *NodeImpl) FreeSpace() int64
- func (n *NodeImpl) GetActiveVolumeCount() int64
- func (n *NodeImpl) GetEcShardCount() int64
- func (n *NodeImpl) GetMaxVolumeCount() int64
- func (n *NodeImpl) GetMaxVolumeId() needle.VolumeId
- func (n *NodeImpl) GetTopology() *Topology
- func (n *NodeImpl) GetValue() interface{}
- func (n *NodeImpl) GetVolumeCount() int64
- func (n *NodeImpl) Id() NodeId
- func (n *NodeImpl) IsDataCenter() bool
- func (n *NodeImpl) IsDataNode() bool
- func (n *NodeImpl) IsRack() bool
- func (n *NodeImpl) LinkChildNode(node Node)
- func (n *NodeImpl) Parent() Node
- func (n *NodeImpl) RandomlyPickNodes(numberOfNodes int, filterFirstNodeFn func(dn Node) error) (firstNode Node, restNodes []Node, err error)
- func (n *NodeImpl) ReserveOneVolume(r int64) (assignedNode *DataNode, err error)
- func (n *NodeImpl) SetParent(node Node)
- func (n *NodeImpl) String() string
- func (n *NodeImpl) UnlinkChildNode(nodeId NodeId)
- func (n *NodeImpl) UpAdjustActiveVolumeCountDelta(activeVolumeCountDelta int64)
- func (n *NodeImpl) UpAdjustEcShardCountDelta(ecShardCountDelta int64)
- func (n *NodeImpl) UpAdjustMaxVolumeCountDelta(maxVolumeCountDelta int64)
- func (n *NodeImpl) UpAdjustMaxVolumeId(vid needle.VolumeId)
- func (n *NodeImpl) UpAdjustVolumeCountDelta(volumeCountDelta int64)
- type Rack
- type RemoteResult
- type Topology
- func (t *Topology) DeleteCollection(collectionName string)
- func (t *Topology) DeleteEcCollection(collection string)
- func (t *Topology) FindCollection(collectionName string) (*Collection, bool)
- func (t *Topology) GetOrCreateDataCenter(dcName string) *DataCenter
- func (t *Topology) GetVolumeLayout(collectionName string, rp *storage.ReplicaPlacement, ttl *needle.TTL) *VolumeLayout
- func (t *Topology) HasWritableVolume(option *VolumeGrowOption) bool
- func (t *Topology) IncrementalSyncDataNodeEcShards(newEcShards, deletedEcShards []*master_pb.VolumeEcShardInformationMessage, ...)
- func (t *Topology) IncrementalSyncDataNodeRegistration(newVolumes, deletedVolumes []*master_pb.VolumeShortInformationMessage, ...)
- func (t *Topology) IsLeader() bool
- func (t *Topology) Leader() (string, error)
- func (t *Topology) ListCollections(includeNormalVolumes, includeEcVolumes bool) (ret []string)
- func (t *Topology) ListEcServersByCollection(collection string) (dataNodes []string)
- func (t *Topology) Lookup(collection string, vid needle.VolumeId) (dataNodes []*DataNode)
- func (t *Topology) LookupEcShards(vid needle.VolumeId) (locations *EcShardLocations, found bool)
- func (t *Topology) NextVolumeId() (needle.VolumeId, error)
- func (t *Topology) PickForWrite(count uint64, option *VolumeGrowOption) (string, uint64, *DataNode, error)
- func (t *Topology) RegisterEcShards(ecShardInfos *erasure_coding.EcVolumeInfo, dn *DataNode)
- func (t *Topology) RegisterVolumeLayout(v storage.VolumeInfo, dn *DataNode)
- func (t *Topology) SetVolumeCapacityFull(volumeInfo storage.VolumeInfo) bool
- func (t *Topology) StartRefreshWritableVolumes(grpcDialOption grpc.DialOption, garbageThreshold float64, preallocate int64)
- func (t *Topology) SyncDataNodeEcShards(shardInfos []*master_pb.VolumeEcShardInformationMessage, dn *DataNode) (newShards, deletedShards []*erasure_coding.EcVolumeInfo)
- func (t *Topology) SyncDataNodeRegistration(volumes []*master_pb.VolumeInformationMessage, dn *DataNode) (newVolumes, deletedVolumes []storage.VolumeInfo)
- func (t *Topology) ToMap() interface{}
- func (t *Topology) ToTopologyInfo() *master_pb.TopologyInfo
- func (t *Topology) ToVolumeLocations() (volumeLocations []*master_pb.VolumeLocation)
- func (t *Topology) ToVolumeMap() interface{}
- func (t *Topology) UnRegisterDataNode(dn *DataNode)
- func (t *Topology) UnRegisterEcShards(ecShardInfos *erasure_coding.EcVolumeInfo, dn *DataNode)
- func (t *Topology) UnRegisterVolumeLayout(v storage.VolumeInfo, dn *DataNode)
- func (t *Topology) Vacuum(grpcDialOption grpc.DialOption, garbageThreshold float64, preallocate int64) int
- type VolumeGrowOption
- type VolumeGrowth
- type VolumeLayout
- func (vl *VolumeLayout) GetActiveVolumeCount(option *VolumeGrowOption) int
- func (vl *VolumeLayout) ListVolumeServers() (nodes []*DataNode)
- func (vl *VolumeLayout) Lookup(vid needle.VolumeId) []*DataNode
- func (vl *VolumeLayout) PickForWrite(count uint64, option *VolumeGrowOption) (*needle.VolumeId, uint64, *VolumeLocationList, error)
- func (vl *VolumeLayout) RegisterVolume(v *storage.VolumeInfo, dn *DataNode)
- func (vl *VolumeLayout) SetVolumeAvailable(dn *DataNode, vid needle.VolumeId) bool
- func (vl *VolumeLayout) SetVolumeCapacityFull(vid needle.VolumeId) bool
- func (vl *VolumeLayout) SetVolumeUnavailable(dn *DataNode, vid needle.VolumeId) bool
- func (vl *VolumeLayout) Stats() *VolumeLayoutStats
- func (vl *VolumeLayout) String() string
- func (vl *VolumeLayout) ToMap() map[string]interface{}
- func (vl *VolumeLayout) UnRegisterVolume(v *storage.VolumeInfo, dn *DataNode)
- type VolumeLayoutStats
- type VolumeLocationList
- func (dnll *VolumeLocationList) Head() *DataNode
- func (dnll *VolumeLocationList) Length() int
- func (dnll *VolumeLocationList) Refresh(freshThreshHold int64)
- func (dnll *VolumeLocationList) Remove(loc *DataNode) bool
- func (dnll *VolumeLocationList) Set(loc *DataNode)
- func (dnll *VolumeLocationList) Stats(vid needle.VolumeId, freshThreshHold int64) (size uint64, fileCount int)
- func (dnll *VolumeLocationList) String() string
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AllocateVolume ¶
func AllocateVolume(dn *DataNode, grpcDialOption grpc.DialOption, vid needle.VolumeId, option *VolumeGrowOption) error
func ReplicatedDelete ¶
Types ¶
type AllocateVolumeResult ¶
type AllocateVolumeResult struct {
Error string
}
type Collection ¶
type Collection struct { Name string // contains filtered or unexported fields }
func NewCollection ¶
func NewCollection(name string, volumeSizeLimit uint64) *Collection
func (*Collection) GetOrCreateVolumeLayout ¶
func (c *Collection) GetOrCreateVolumeLayout(rp *storage.ReplicaPlacement, ttl *needle.TTL) *VolumeLayout
func (*Collection) ListVolumeServers ¶
func (c *Collection) ListVolumeServers() (nodes []*DataNode)
func (*Collection) String ¶
func (c *Collection) String() string
type Configuration ¶
type Configuration struct { XMLName xml.Name `xml:"Configuration"` Topo topology `xml:"Topology"` // contains filtered or unexported fields }
func (*Configuration) String ¶
func (c *Configuration) String() string
type DataCenter ¶
type DataCenter struct {
NodeImpl
}
func NewDataCenter ¶
func NewDataCenter(id string) *DataCenter
func (*DataCenter) GetOrCreateRack ¶
func (dc *DataCenter) GetOrCreateRack(rackName string) *Rack
func (*DataCenter) ToDataCenterInfo ¶
func (dc *DataCenter) ToDataCenterInfo() *master_pb.DataCenterInfo
func (*DataCenter) ToMap ¶
func (dc *DataCenter) ToMap() interface{}
type DataNode ¶
type DataNode struct { NodeImpl Ip string Port int PublicUrl string LastSeen int64 // unix time in seconds // contains filtered or unexported fields }
func NewDataNode ¶
func (*DataNode) AddOrUpdateEcShard ¶
func (dn *DataNode) AddOrUpdateEcShard(s *erasure_coding.EcVolumeInfo)
func (*DataNode) AddOrUpdateVolume ¶
func (dn *DataNode) AddOrUpdateVolume(v storage.VolumeInfo) (isNew bool)
func (*DataNode) DeleteEcShard ¶
func (dn *DataNode) DeleteEcShard(s *erasure_coding.EcVolumeInfo)
func (*DataNode) DeltaUpdateEcShards ¶
func (dn *DataNode) DeltaUpdateEcShards(newShards, deletedShards []*erasure_coding.EcVolumeInfo)
func (*DataNode) DeltaUpdateVolumes ¶
func (dn *DataNode) DeltaUpdateVolumes(newlVolumes, deletedVolumes []storage.VolumeInfo)
func (*DataNode) GetDataCenter ¶
func (dn *DataNode) GetDataCenter() *DataCenter
func (*DataNode) GetEcShards ¶
func (dn *DataNode) GetEcShards() (ret []*erasure_coding.EcVolumeInfo)
func (*DataNode) GetTopology ¶
func (*DataNode) GetVolumes ¶
func (dn *DataNode) GetVolumes() (ret []storage.VolumeInfo)
func (*DataNode) GetVolumesById ¶
func (*DataNode) HasVolumesById ¶
func (*DataNode) ToDataNodeInfo ¶
func (dn *DataNode) ToDataNodeInfo() *master_pb.DataNodeInfo
func (*DataNode) UpdateEcShards ¶
func (dn *DataNode) UpdateEcShards(actualShards []*erasure_coding.EcVolumeInfo) (newShards, deletedShards []*erasure_coding.EcVolumeInfo)
func (*DataNode) UpdateVolumes ¶
func (dn *DataNode) UpdateVolumes(actualVolumes []storage.VolumeInfo) (newVolumes, deletedVolumes []storage.VolumeInfo)
type DistributedOperationResult ¶
func (DistributedOperationResult) Error ¶
func (dr DistributedOperationResult) Error() error
type EcShardLocations ¶
type EcShardLocations struct { Collection string Locations [erasure_coding.TotalShardsCount][]*DataNode }
func NewEcShardLocations ¶
func NewEcShardLocations(collection string) *EcShardLocations
func (*EcShardLocations) AddShard ¶
func (loc *EcShardLocations) AddShard(shardId erasure_coding.ShardId, dn *DataNode) (added bool)
func (*EcShardLocations) DeleteShard ¶
func (loc *EcShardLocations) DeleteShard(shardId erasure_coding.ShardId, dn *DataNode) (deleted bool)
type MaxVolumeIdCommand ¶
func NewMaxVolumeIdCommand ¶
func NewMaxVolumeIdCommand(value needle.VolumeId) *MaxVolumeIdCommand
func (*MaxVolumeIdCommand) Apply ¶
func (c *MaxVolumeIdCommand) Apply(server raft.Server) (interface{}, error)
func (*MaxVolumeIdCommand) CommandName ¶
func (c *MaxVolumeIdCommand) CommandName() string
type Node ¶
type Node interface { Id() NodeId String() string FreeSpace() int64 ReserveOneVolume(r int64) (*DataNode, error) UpAdjustMaxVolumeCountDelta(maxVolumeCountDelta int64) UpAdjustVolumeCountDelta(volumeCountDelta int64) UpAdjustEcShardCountDelta(ecShardCountDelta int64) UpAdjustActiveVolumeCountDelta(activeVolumeCountDelta int64) UpAdjustMaxVolumeId(vid needle.VolumeId) GetVolumeCount() int64 GetEcShardCount() int64 GetActiveVolumeCount() int64 GetMaxVolumeCount() int64 GetMaxVolumeId() needle.VolumeId SetParent(Node) LinkChildNode(node Node) UnlinkChildNode(nodeId NodeId) CollectDeadNodeAndFullVolumes(freshThreshHold int64, volumeSizeLimit uint64) IsDataNode() bool IsRack() bool IsDataCenter() bool Children() []Node Parent() Node GetValue() interface{} //get reference to the topology,dc,rack,datanode }
type NodeImpl ¶
func (*NodeImpl) CollectDeadNodeAndFullVolumes ¶
func (*NodeImpl) GetActiveVolumeCount ¶
func (*NodeImpl) GetEcShardCount ¶
func (*NodeImpl) GetMaxVolumeCount ¶
func (*NodeImpl) GetMaxVolumeId ¶
func (*NodeImpl) GetTopology ¶
func (*NodeImpl) GetVolumeCount ¶
func (*NodeImpl) IsDataCenter ¶
func (*NodeImpl) IsDataNode ¶
func (*NodeImpl) LinkChildNode ¶
func (*NodeImpl) RandomlyPickNodes ¶
func (n *NodeImpl) RandomlyPickNodes(numberOfNodes int, filterFirstNodeFn func(dn Node) error) (firstNode Node, restNodes []Node, err error)
the first node must satisfy filterFirstNodeFn(), the rest nodes must have one free slot
func (*NodeImpl) ReserveOneVolume ¶
func (*NodeImpl) UnlinkChildNode ¶
func (*NodeImpl) UpAdjustActiveVolumeCountDelta ¶
func (*NodeImpl) UpAdjustEcShardCountDelta ¶
func (*NodeImpl) UpAdjustMaxVolumeCountDelta ¶
func (*NodeImpl) UpAdjustMaxVolumeId ¶
func (*NodeImpl) UpAdjustVolumeCountDelta ¶
type Rack ¶
type Rack struct {
NodeImpl
}
func (*Rack) GetOrCreateDataNode ¶
func (*Rack) ToRackInfo ¶
type RemoteResult ¶
type Topology ¶
type Topology struct { NodeImpl Sequence sequence.Sequencer Configuration *Configuration RaftServer raft.Server // contains filtered or unexported fields }
func NewTopology ¶
func (*Topology) DeleteCollection ¶
func (*Topology) DeleteEcCollection ¶
func (*Topology) FindCollection ¶
func (t *Topology) FindCollection(collectionName string) (*Collection, bool)
func (*Topology) GetOrCreateDataCenter ¶
func (t *Topology) GetOrCreateDataCenter(dcName string) *DataCenter
func (*Topology) GetVolumeLayout ¶
func (t *Topology) GetVolumeLayout(collectionName string, rp *storage.ReplicaPlacement, ttl *needle.TTL) *VolumeLayout
func (*Topology) HasWritableVolume ¶
func (t *Topology) HasWritableVolume(option *VolumeGrowOption) bool
func (*Topology) IncrementalSyncDataNodeEcShards ¶
func (t *Topology) IncrementalSyncDataNodeEcShards(newEcShards, deletedEcShards []*master_pb.VolumeEcShardInformationMessage, dn *DataNode)
func (*Topology) IncrementalSyncDataNodeRegistration ¶
func (t *Topology) IncrementalSyncDataNodeRegistration(newVolumes, deletedVolumes []*master_pb.VolumeShortInformationMessage, dn *DataNode)
func (*Topology) ListCollections ¶
func (*Topology) ListEcServersByCollection ¶
func (*Topology) LookupEcShards ¶
func (t *Topology) LookupEcShards(vid needle.VolumeId) (locations *EcShardLocations, found bool)
func (*Topology) PickForWrite ¶
func (*Topology) RegisterEcShards ¶
func (t *Topology) RegisterEcShards(ecShardInfos *erasure_coding.EcVolumeInfo, dn *DataNode)
func (*Topology) RegisterVolumeLayout ¶
func (t *Topology) RegisterVolumeLayout(v storage.VolumeInfo, dn *DataNode)
func (*Topology) SetVolumeCapacityFull ¶
func (t *Topology) SetVolumeCapacityFull(volumeInfo storage.VolumeInfo) bool
func (*Topology) StartRefreshWritableVolumes ¶
func (t *Topology) StartRefreshWritableVolumes(grpcDialOption grpc.DialOption, garbageThreshold float64, preallocate int64)
func (*Topology) SyncDataNodeEcShards ¶
func (t *Topology) SyncDataNodeEcShards(shardInfos []*master_pb.VolumeEcShardInformationMessage, dn *DataNode) (newShards, deletedShards []*erasure_coding.EcVolumeInfo)
func (*Topology) SyncDataNodeRegistration ¶
func (t *Topology) SyncDataNodeRegistration(volumes []*master_pb.VolumeInformationMessage, dn *DataNode) (newVolumes, deletedVolumes []storage.VolumeInfo)
func (*Topology) ToTopologyInfo ¶
func (t *Topology) ToTopologyInfo() *master_pb.TopologyInfo
func (*Topology) ToVolumeLocations ¶
func (t *Topology) ToVolumeLocations() (volumeLocations []*master_pb.VolumeLocation)
func (*Topology) ToVolumeMap ¶
func (t *Topology) ToVolumeMap() interface{}
func (*Topology) UnRegisterDataNode ¶
func (*Topology) UnRegisterEcShards ¶
func (t *Topology) UnRegisterEcShards(ecShardInfos *erasure_coding.EcVolumeInfo, dn *DataNode)
func (*Topology) UnRegisterVolumeLayout ¶
func (t *Topology) UnRegisterVolumeLayout(v storage.VolumeInfo, dn *DataNode)
type VolumeGrowOption ¶
type VolumeGrowOption struct { Collection string ReplicaPlacement *storage.ReplicaPlacement Ttl *needle.TTL Prealloacte int64 DataCenter string Rack string DataNode string MemoryMapMaxSizeMB uint32 }
func (*VolumeGrowOption) String ¶
func (o *VolumeGrowOption) String() string
type VolumeGrowth ¶
type VolumeGrowth struct {
// contains filtered or unexported fields
}
func NewDefaultVolumeGrowth ¶
func NewDefaultVolumeGrowth() *VolumeGrowth
func (*VolumeGrowth) AutomaticGrowByType ¶
func (vg *VolumeGrowth) AutomaticGrowByType(option *VolumeGrowOption, grpcDialOption grpc.DialOption, topo *Topology) (count int, err error)
func (*VolumeGrowth) GrowByCountAndType ¶
func (vg *VolumeGrowth) GrowByCountAndType(grpcDialOption grpc.DialOption, targetCount int, option *VolumeGrowOption, topo *Topology) (counter int, err error)
type VolumeLayout ¶
type VolumeLayout struct {
// contains filtered or unexported fields
}
mapping from volume to its locations, inverted from server to volume
func NewVolumeLayout ¶
func NewVolumeLayout(rp *storage.ReplicaPlacement, ttl *needle.TTL, volumeSizeLimit uint64) *VolumeLayout
func (*VolumeLayout) GetActiveVolumeCount ¶
func (vl *VolumeLayout) GetActiveVolumeCount(option *VolumeGrowOption) int
func (*VolumeLayout) ListVolumeServers ¶
func (vl *VolumeLayout) ListVolumeServers() (nodes []*DataNode)
func (*VolumeLayout) PickForWrite ¶
func (vl *VolumeLayout) PickForWrite(count uint64, option *VolumeGrowOption) (*needle.VolumeId, uint64, *VolumeLocationList, error)
func (*VolumeLayout) RegisterVolume ¶
func (vl *VolumeLayout) RegisterVolume(v *storage.VolumeInfo, dn *DataNode)
func (*VolumeLayout) SetVolumeAvailable ¶
func (vl *VolumeLayout) SetVolumeAvailable(dn *DataNode, vid needle.VolumeId) bool
func (*VolumeLayout) SetVolumeCapacityFull ¶
func (vl *VolumeLayout) SetVolumeCapacityFull(vid needle.VolumeId) bool
func (*VolumeLayout) SetVolumeUnavailable ¶
func (vl *VolumeLayout) SetVolumeUnavailable(dn *DataNode, vid needle.VolumeId) bool
func (*VolumeLayout) Stats ¶
func (vl *VolumeLayout) Stats() *VolumeLayoutStats
func (*VolumeLayout) String ¶
func (vl *VolumeLayout) String() string
func (*VolumeLayout) ToMap ¶
func (vl *VolumeLayout) ToMap() map[string]interface{}
func (*VolumeLayout) UnRegisterVolume ¶
func (vl *VolumeLayout) UnRegisterVolume(v *storage.VolumeInfo, dn *DataNode)
type VolumeLayoutStats ¶
type VolumeLocationList ¶
type VolumeLocationList struct {
// contains filtered or unexported fields
}
func NewVolumeLocationList ¶
func NewVolumeLocationList() *VolumeLocationList
func (*VolumeLocationList) Head ¶
func (dnll *VolumeLocationList) Head() *DataNode
func (*VolumeLocationList) Length ¶
func (dnll *VolumeLocationList) Length() int
func (*VolumeLocationList) Refresh ¶
func (dnll *VolumeLocationList) Refresh(freshThreshHold int64)
func (*VolumeLocationList) Remove ¶
func (dnll *VolumeLocationList) Remove(loc *DataNode) bool
func (*VolumeLocationList) Set ¶
func (dnll *VolumeLocationList) Set(loc *DataNode)
func (*VolumeLocationList) String ¶
func (dnll *VolumeLocationList) String() string
Source Files ¶
Click to show internal directories.
Click to hide internal directories.