You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							57 lines
						
					
					
						
							1.3 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							57 lines
						
					
					
						
							1.3 KiB
						
					
					
				
								package mount
							 | 
						|
								
							 | 
						|
								import (
							 | 
						|
									"sync/atomic"
							 | 
						|
								
							 | 
						|
									"google.golang.org/grpc"
							 | 
						|
								
							 | 
						|
									"github.com/seaweedfs/seaweedfs/weed/glog"
							 | 
						|
									"github.com/seaweedfs/seaweedfs/weed/pb"
							 | 
						|
									"github.com/seaweedfs/seaweedfs/weed/pb/filer_pb"
							 | 
						|
									"github.com/seaweedfs/seaweedfs/weed/util"
							 | 
						|
								)
							 | 
						|
								
							 | 
						|
								var _ = filer_pb.FilerClient(&WFS{})
							 | 
						|
								
							 | 
						|
								func (wfs *WFS) WithFilerClient(streamingMode bool, fn func(filer_pb.SeaweedFilerClient) error) (err error) {
							 | 
						|
								
							 | 
						|
									return util.Retry("filer grpc", func() error {
							 | 
						|
								
							 | 
						|
										i := atomic.LoadInt32(&wfs.option.filerIndex)
							 | 
						|
										n := len(wfs.option.FilerAddresses)
							 | 
						|
										for x := 0; x < n; x++ {
							 | 
						|
								
							 | 
						|
											filerGrpcAddress := wfs.option.FilerAddresses[i].ToGrpcAddress()
							 | 
						|
											err = pb.WithGrpcClient(streamingMode, wfs.signature, func(grpcConnection *grpc.ClientConn) error {
							 | 
						|
												client := filer_pb.NewSeaweedFilerClient(grpcConnection)
							 | 
						|
												return fn(client)
							 | 
						|
											}, filerGrpcAddress, false, wfs.option.GrpcDialOption)
							 | 
						|
								
							 | 
						|
											if err != nil {
							 | 
						|
												glog.V(0).Infof("WithFilerClient %d %v: %v", x, filerGrpcAddress, err)
							 | 
						|
											} else {
							 | 
						|
												atomic.StoreInt32(&wfs.option.filerIndex, i)
							 | 
						|
												return nil
							 | 
						|
											}
							 | 
						|
								
							 | 
						|
											i++
							 | 
						|
											if i >= int32(n) {
							 | 
						|
												i = 0
							 | 
						|
											}
							 | 
						|
								
							 | 
						|
										}
							 | 
						|
										return err
							 | 
						|
									})
							 | 
						|
								
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								func (wfs *WFS) AdjustedUrl(location *filer_pb.Location) string {
							 | 
						|
									if wfs.option.VolumeServerAccess == "publicUrl" {
							 | 
						|
										return location.PublicUrl
							 | 
						|
									}
							 | 
						|
									return location.Url
							 | 
						|
								}
							 | 
						|
								
							 | 
						|
								func (wfs *WFS) GetDataCenter() string {
							 | 
						|
									return wfs.option.DataCenter
							 | 
						|
								}
							 |