Browse Source

fix some deadlock

pull/279/head
tnextday 10 years ago
parent
commit
a6a37dec92
  1. 2
      weed/storage/store.go
  2. 8
      weed/storage/volume.go
  3. 2
      weed/topology/data_node.go
  4. 11
      weed/topology/node.go

2
weed/storage/store.go

@ -67,7 +67,7 @@ func (mn *MasterNodes) findMaster() (string, error) {
} }
mn.nodes = append(masters, m) mn.nodes = append(masters, m)
mn.master = mn.nodes[rand.Intn(len(mn.nodes))] mn.master = mn.nodes[rand.Intn(len(mn.nodes))]
glog.V(2).Infof("current master nodes is (nodes:%v, master:%s)", mn, mn.nodes, mn.master)
glog.V(2).Infof("current master nodes is (nodes:%v, master:%s)", mn.nodes, mn.master)
break break
} else { } else {
glog.V(4).Infof("Failed listing masters on %s: %v", m, e) glog.V(4).Infof("Failed listing masters on %s: %v", m, e)

8
weed/storage/volume.go

@ -38,7 +38,13 @@ func NewVolume(dirname string, collection string, id VolumeId, needleMapKind Nee
func (v *Volume) String() string { func (v *Volume) String() string {
v.mutex.RLock() v.mutex.RLock()
defer v.mutex.RUnlock() defer v.mutex.RUnlock()
return fmt.Sprintf("Id:%v, dir:%s, Collection:%s, dataFile:%v, nm:%v, readOnly:%v", v.Id, v.dir, v.Collection, v.dataFile, v.nm, v.readOnly)
return fmt.Sprintf("Id:%v, dir:%s, Collection:%s, dataFile:%v, nm:%v, readOnly:%v",
v.Id,
v.dir,
v.Collection,
v.dataFile,
v.nm,
v.readOnly)
} }
func loadVolumeWithoutIndex(dirname string, collection string, id VolumeId, needleMapKind NeedleMapType) (v *Volume, e error) { func loadVolumeWithoutIndex(dirname string, collection string, id VolumeId, needleMapKind NeedleMapType) (v *Volume, e error) {

2
weed/topology/data_node.go

@ -34,7 +34,7 @@ func (dn *DataNode) String() string {
dn.mutex.RLock() dn.mutex.RLock()
defer dn.mutex.RUnlock() defer dn.mutex.RUnlock()
return fmt.Sprintf("Node:%s, volumes:%v, Ip:%s, Port:%d, PublicUrl:%s, Dead:%v", return fmt.Sprintf("Node:%s, volumes:%v, Ip:%s, Port:%d, PublicUrl:%s, Dead:%v",
dn.NodeImpl.String(),
dn.NodeImpl.toString(),
dn.volumes, dn.volumes,
dn.Ip, dn.Ip,
dn.Port, dn.Port,

11
weed/topology/node.go

@ -132,11 +132,18 @@ func (n *NodeImpl) IsDataCenter() bool {
return n.nodeType == "DataCenter" return n.nodeType == "DataCenter"
} }
func (n *NodeImpl) String() string { func (n *NodeImpl) String() string {
if n.Parent() != nil {
return n.Parent().String() + ":" + string(n.id)
n.mutex.RLock()
defer n.mutex.RUnlock()
return n.toString()
}
func (n *NodeImpl) toString() string {
if n.parent != nil {
return n.parent.String() + ":" + string(n.id)
} }
return string(n.id) return string(n.id)
} }
func (n *NodeImpl) Id() NodeId { func (n *NodeImpl) Id() NodeId {
return n.id return n.id
} }

Loading…
Cancel
Save