mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2024-01-19 02:48:24 +00:00
adding file count and deletion count
This commit is contained in:
parent
8e25cc74d1
commit
6b1e60582c
|
@ -9,7 +9,11 @@ import (
|
|||
type NeedleMap struct {
|
||||
indexFile *os.File
|
||||
m CompactMap
|
||||
bytes []byte
|
||||
|
||||
//transient
|
||||
bytes []byte
|
||||
deletionCounter int
|
||||
fileCounter int
|
||||
}
|
||||
|
||||
func NewNeedleMap(file *os.File) *NeedleMap {
|
||||
|
@ -40,8 +44,10 @@ func LoadNeedleMap(file *os.File) *NeedleMap {
|
|||
size := util.BytesToUint32(bytes[i+12 : i+16])
|
||||
if offset > 0 {
|
||||
nm.m.Set(Key(key), offset, size)
|
||||
nm.fileCounter++
|
||||
} else {
|
||||
nm.m.Delete(Key(key))
|
||||
nm.deletionCounter++
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -55,6 +61,7 @@ func (nm *NeedleMap) Put(key uint64, offset uint32, size uint32) (int, error) {
|
|||
util.Uint64toBytes(nm.bytes[0:8], key)
|
||||
util.Uint32toBytes(nm.bytes[8:12], offset)
|
||||
util.Uint32toBytes(nm.bytes[12:16], size)
|
||||
nm.fileCounter++
|
||||
return nm.indexFile.Write(nm.bytes)
|
||||
}
|
||||
func (nm *NeedleMap) Get(key uint64) (element *NeedleValue, ok bool) {
|
||||
|
@ -67,6 +74,7 @@ func (nm *NeedleMap) Delete(key uint64) {
|
|||
util.Uint32toBytes(nm.bytes[8:12], 0)
|
||||
util.Uint32toBytes(nm.bytes[12:16], 0)
|
||||
nm.indexFile.Write(nm.bytes)
|
||||
nm.deletionCounter++
|
||||
}
|
||||
func (nm *NeedleMap) Close() {
|
||||
nm.indexFile.Close()
|
||||
|
|
|
@ -89,7 +89,7 @@ func (s *Store) Status() []*VolumeInfo {
|
|||
var stats []*VolumeInfo
|
||||
for k, v := range s.volumes {
|
||||
s := new(VolumeInfo)
|
||||
s.Id, s.Size, s.RepType = VolumeId(k), v.Size(), v.replicaType
|
||||
s.Id, s.Size, s.RepType, s.FileCount, s.DeleteCount = VolumeId(k), v.Size(), v.replicaType, v.nm.fileCounter, v.nm.deletionCounter
|
||||
stats = append(stats, s)
|
||||
}
|
||||
return stats
|
||||
|
@ -98,7 +98,7 @@ func (s *Store) Join(mserver string) error {
|
|||
stats := new([]*VolumeInfo)
|
||||
for k, v := range s.volumes {
|
||||
s := new(VolumeInfo)
|
||||
s.Id, s.Size, s.RepType = VolumeId(k), v.Size(), v.replicaType
|
||||
s.Id, s.Size, s.RepType, s.FileCount, s.DeleteCount = VolumeId(k), v.Size(), v.replicaType, v.nm.fileCounter, v.nm.deletionCounter
|
||||
*stats = append(*stats, s)
|
||||
}
|
||||
bytes, _ := json.Marshal(stats)
|
||||
|
|
|
@ -21,7 +21,7 @@ type Volume struct {
|
|||
replicaType ReplicationType
|
||||
|
||||
accessLock sync.Mutex
|
||||
|
||||
|
||||
}
|
||||
|
||||
func NewVolume(dirname string, id VolumeId, replicationType ReplicationType) (v *Volume) {
|
||||
|
|
|
@ -8,6 +8,8 @@ type VolumeInfo struct {
|
|||
Id VolumeId
|
||||
Size int64
|
||||
RepType ReplicationType
|
||||
FileCount int
|
||||
DeleteCount int
|
||||
}
|
||||
type ReplicationType string
|
||||
|
||||
|
|
|
@ -14,6 +14,7 @@ type Node interface {
|
|||
UpAdjustMaxVolumeCountDelta(maxVolumeCountDelta int)
|
||||
UpAdjustActiveVolumeCountDelta(activeVolumeCountDelta int)
|
||||
UpAdjustMaxVolumeId(vid storage.VolumeId)
|
||||
|
||||
GetActiveVolumeCount() int
|
||||
GetMaxVolumeCount() int
|
||||
GetMaxVolumeId() storage.VolumeId
|
||||
|
@ -25,8 +26,8 @@ type Node interface {
|
|||
IsDataNode() bool
|
||||
Children() map[NodeId]Node
|
||||
Parent() Node
|
||||
|
||||
GetValue()interface{} //get reference to the topology,dc,rack,datanode
|
||||
|
||||
GetValue() interface{} //get reference to the topology,dc,rack,datanode
|
||||
}
|
||||
type NodeImpl struct {
|
||||
id NodeId
|
||||
|
@ -38,7 +39,7 @@ type NodeImpl struct {
|
|||
|
||||
//for rack, data center, topology
|
||||
nodeType string
|
||||
value interface{}
|
||||
value interface{}
|
||||
}
|
||||
|
||||
func (n *NodeImpl) IsDataNode() bool {
|
||||
|
@ -71,8 +72,8 @@ func (n *NodeImpl) Children() map[NodeId]Node {
|
|||
func (n *NodeImpl) Parent() Node {
|
||||
return n.parent
|
||||
}
|
||||
func (n *NodeImpl) GetValue()interface{}{
|
||||
return n.value
|
||||
func (n *NodeImpl) GetValue() interface{} {
|
||||
return n.value
|
||||
}
|
||||
func (n *NodeImpl) ReserveOneVolume(r int, vid storage.VolumeId) (bool, *DataNode) {
|
||||
ret := false
|
||||
|
@ -119,7 +120,6 @@ func (n *NodeImpl) UpAdjustMaxVolumeId(vid storage.VolumeId) { //can be negative
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
func (n *NodeImpl) GetMaxVolumeId() storage.VolumeId {
|
||||
return n.maxVolumeId
|
||||
}
|
||||
|
@ -164,7 +164,7 @@ func (n *NodeImpl) CollectDeadNodeAndFullVolumes(freshThreshHold int64, volumeSi
|
|||
}
|
||||
for _, v := range dn.volumes {
|
||||
if uint64(v.Size) >= volumeSizeLimit {
|
||||
n.GetTopology().chanFullVolumes <- &v
|
||||
n.GetTopology().chanFullVolumes <- &v
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -175,11 +175,11 @@ func (n *NodeImpl) CollectDeadNodeAndFullVolumes(freshThreshHold int64, volumeSi
|
|||
}
|
||||
}
|
||||
|
||||
func (n *NodeImpl) GetTopology() *Topology{
|
||||
var p Node
|
||||
p = n
|
||||
for p.Parent() != nil {
|
||||
p = p.Parent()
|
||||
}
|
||||
return p.GetValue().(*Topology)
|
||||
func (n *NodeImpl) GetTopology() *Topology {
|
||||
var p Node
|
||||
p = n
|
||||
for p.Parent() != nil {
|
||||
p = p.Parent()
|
||||
}
|
||||
return p.GetValue().(*Topology)
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue