@ -136,7 +136,7 @@ func (t *Topology) HasWritableVolume(option *VolumeGrowOption) bool {
return active > 0
return active > 0
}
}
func ( t * Topology ) PickForWrite ( count uint64 , option * VolumeGrowOption ) ( string , uint64 , * DataNode , error ) {
func ( t * Topology ) PickForWrite ( count uint64 , option * VolumeGrowOption ) ( string , uint64 , * VolumeLocationList , error ) {
vid , count , datanodes , err := t . GetVolumeLayout ( option . Collection , option . ReplicaPlacement , option . Ttl , option . DiskType ) . PickForWrite ( count , option )
vid , count , datanodes , err := t . GetVolumeLayout ( option . Collection , option . ReplicaPlacement , option . Ttl , option . DiskType ) . PickForWrite ( count , option )
if err != nil {
if err != nil {
return "" , 0 , nil , fmt . Errorf ( "failed to find writable volumes for collection:%s replication:%s ttl:%s error: %v" , option . Collection , option . ReplicaPlacement . String ( ) , option . Ttl . String ( ) , err )
return "" , 0 , nil , fmt . Errorf ( "failed to find writable volumes for collection:%s replication:%s ttl:%s error: %v" , option . Collection , option . ReplicaPlacement . String ( ) , option . Ttl . String ( ) , err )
@ -145,7 +145,7 @@ func (t *Topology) PickForWrite(count uint64, option *VolumeGrowOption) (string,
return "" , 0 , nil , fmt . Errorf ( "no writable volumes available for collection:%s replication:%s ttl:%s" , option . Collection , option . ReplicaPlacement . String ( ) , option . Ttl . String ( ) )
return "" , 0 , nil , fmt . Errorf ( "no writable volumes available for collection:%s replication:%s ttl:%s" , option . Collection , option . ReplicaPlacement . String ( ) , option . Ttl . String ( ) )
}
}
fileId := t . Sequence . NextFileId ( count )
fileId := t . Sequence . NextFileId ( count )
return needle . NewFileId ( * vid , fileId , rand . Uint32 ( ) ) . String ( ) , count , datanodes . Head ( ) , nil
return needle . NewFileId ( * vid , fileId , rand . Uint32 ( ) ) . String ( ) , count , datanodes , nil
}
}
func ( t * Topology ) GetVolumeLayout ( collectionName string , rp * super_block . ReplicaPlacement , ttl * needle . TTL , diskType types . DiskType ) * VolumeLayout {
func ( t * Topology ) GetVolumeLayout ( collectionName string , rp * super_block . ReplicaPlacement , ttl * needle . TTL , diskType types . DiskType ) * VolumeLayout {