|
|
@ -38,6 +38,36 @@ func NewMasterClient(grpcDialOption grpc.DialOption, filerGroup string, clientTy |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
func (mc *MasterClient) GetLookupFileIdFunction() LookupFileIdFunctionType { |
|
|
|
return mc.LookupFileIdWithFallback |
|
|
|
} |
|
|
|
|
|
|
|
func (mc *MasterClient) LookupFileIdWithFallback(fileId string) (fullUrls []string, err error) { |
|
|
|
fullUrls, err = mc.vidMap.LookupFileId(fileId) |
|
|
|
err = pb.WithMasterClient(false, mc.currentMaster, mc.grpcDialOption, func(client master_pb.SeaweedClient) error { |
|
|
|
resp, err := client.LookupVolume(context.Background(), &master_pb.LookupVolumeRequest{ |
|
|
|
VolumeOrFileIds: []string{fileId}, |
|
|
|
}) |
|
|
|
if err != nil { |
|
|
|
return err |
|
|
|
} |
|
|
|
for vid, vidLocation := range resp.VolumeIdLocations { |
|
|
|
for _, vidLoc := range vidLocation.Locations { |
|
|
|
loc := Location{ |
|
|
|
Url: vidLoc.Url, |
|
|
|
PublicUrl: vidLoc.PublicUrl, |
|
|
|
GrpcPort: int(vidLoc.GrpcPort), |
|
|
|
} |
|
|
|
mc.vidMap.addLocation(uint32(vid), loc) |
|
|
|
fullUrls = append(fullUrls, loc.Url) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
return nil |
|
|
|
}) |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
func (mc *MasterClient) GetMaster() pb.ServerAddress { |
|
|
|
mc.WaitUntilConnected() |
|
|
|
return mc.currentMaster |
|
|
|