Browse Source

fix panic 5435 (#5436)

pull/5440/head
Konstantin Lebedev 9 months ago
committed by GitHub
parent
commit
df40908e57
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 3
      weed/server/master_grpc_server_assign.go
  2. 4
      weed/server/master_server_handlers.go
  3. 2
      weed/topology/volume_layout.go
  4. 3
      weed/topology/volume_location_list.go

3
weed/server/master_grpc_server_assign.go

@ -97,6 +97,9 @@ func (ms *MasterServer) Assign(ctx context.Context, req *master_pb.AssignRequest
continue continue
} }
dn := dnList.Head() dn := dnList.Head()
if dn == nil {
continue
}
var replicas []*master_pb.Location var replicas []*master_pb.Location
for _, r := range dnList.Rest() { for _, r := range dnList.Rest() {
replicas = append(replicas, &master_pb.Location{ replicas = append(replicas, &master_pb.Location{

4
weed/server/master_server_handlers.go

@ -149,7 +149,9 @@ func (ms *MasterServer) dirAssignHandler(w http.ResponseWriter, r *http.Request)
} else { } else {
ms.maybeAddJwtAuthorization(w, fid, true) ms.maybeAddJwtAuthorization(w, fid, true)
dn := dnList.Head() dn := dnList.Head()
if dn == nil {
continue
}
writeJsonQuiet(w, r, http.StatusOK, operation.AssignResult{Fid: fid, Url: dn.Url(), PublicUrl: dn.PublicUrl, Count: count}) writeJsonQuiet(w, r, http.StatusOK, operation.AssignResult{Fid: fid, Url: dn.Url(), PublicUrl: dn.PublicUrl, Count: count})
return return
} }

2
weed/topology/volume_layout.go

@ -301,7 +301,7 @@ func (vl *VolumeLayout) PickForWrite(count uint64, option *VolumeGrowOption) (vi
if float64(info.Size) > float64(vl.volumeSizeLimit)*option.Threshold() { if float64(info.Size) > float64(vl.volumeSizeLimit)*option.Threshold() {
shouldGrow = true shouldGrow = true
} }
return vid, count, locationList, shouldGrow, nil
return vid, count, locationList.Copy(), shouldGrow, nil
} }
return 0, 0, nil, shouldGrow, errors.New("Strangely vid " + vid.String() + " is on no machine!") return 0, 0, nil, shouldGrow, errors.New("Strangely vid " + vid.String() + " is on no machine!")
} }

3
weed/topology/volume_location_list.go

@ -28,6 +28,9 @@ func (dnll *VolumeLocationList) Copy() *VolumeLocationList {
func (dnll *VolumeLocationList) Head() *DataNode { func (dnll *VolumeLocationList) Head() *DataNode {
//mark first node as master volume //mark first node as master volume
if dnll.Length() == 0 {
return nil
}
return dnll.list[0] return dnll.list[0]
} }

Loading…
Cancel
Save