diff options
Diffstat (limited to 'weed/topology/volume_layout.go')
| -rw-r--r-- | weed/topology/volume_layout.go | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/weed/topology/volume_layout.go b/weed/topology/volume_layout.go index 066f5f69a..af8503b29 100644 --- a/weed/topology/volume_layout.go +++ b/weed/topology/volume_layout.go @@ -45,6 +45,19 @@ func (vl *VolumeLayout) RegisterVolume(v *storage.VolumeInfo, dn *DataNode) { } vl.vid2location[v.Id].Set(dn) glog.V(4).Infoln("volume", v.Id, "added to dn", dn.Id(), "len", vl.vid2location[v.Id].Length(), "copy", v.ReplicaPlacement.GetCopyCount()) + for _, dn := range vl.vid2location[v.Id].list { + if v_info, err := dn.GetVolumesById(v.Id); err == nil { + if v_info.ReadOnly { + glog.V(3).Infof("vid %d removed from writable", v.Id) + vl.removeFromWritable(v.Id) + return + } + } else { + glog.V(3).Infof("vid %d removed from writable", v.Id) + vl.removeFromWritable(v.Id) + return + } + } if vl.vid2location[v.Id].Length() == vl.rp.GetCopyCount() && vl.isWritable(v) { if _, ok := vl.oversizedVolumes[v.Id]; !ok { vl.addToWritable(v.Id) |
