diff options
| author | Chris Lu <chris.lu@gmail.com> | 2019-05-11 18:42:46 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2019-05-11 18:42:46 -0700 |
| commit | 017d0957c3af96506dc9ab47b52c9f10db367c58 (patch) | |
| tree | dd6d4b7231822714a458d53d4f5d5ba1339486be | |
| parent | 4dfcd2169efbffd004c7f43118c6e65be5ee36c3 (diff) | |
| download | seaweedfs-017d0957c3af96506dc9ab47b52c9f10db367c58.tar.xz seaweedfs-017d0957c3af96506dc9ab47b52c9f10db367c58.zip | |
avoid switching master node if same ip and host name
fix https://github.com/chrislusf/seaweedfs/issues/955
| -rw-r--r-- | weed/server/volume_grpc_client_to_master.go | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/weed/server/volume_grpc_client_to_master.go b/weed/server/volume_grpc_client_to_master.go index b30b2d124..0d4532485 100644 --- a/weed/server/volume_grpc_client_to_master.go +++ b/weed/server/volume_grpc_client_to_master.go @@ -2,6 +2,7 @@ package weed_server import ( "fmt" + "net" "time" "github.com/chrislusf/seaweedfs/weed/security" @@ -79,7 +80,7 @@ func (vs *VolumeServer) doHeartbeat(ctx context.Context, masterNode, masterGrpcA if in.GetVolumeSizeLimit() != 0 { vs.store.SetVolumeSizeLimit(in.GetVolumeSizeLimit()) } - if in.GetLeader() != "" && masterNode != in.GetLeader() { + if in.GetLeader() != "" && masterNode != in.GetLeader() && !isSameIP(in.GetLeader(), masterNode) { glog.V(0).Infof("Volume Server found a new master newLeader: %v instead of %v", in.GetLeader(), masterNode) newLeader = in.GetLeader() doneChan <- nil @@ -130,3 +131,16 @@ func (vs *VolumeServer) doHeartbeat(ctx context.Context, masterNode, masterGrpcA } } } + +func isSameIP(ip string, host string) bool { + ips, err := net.LookupIP(host) + if err != nil { + return false + } + for _, t := range ips { + if ip == t.String() { + return true + } + } + return false +} |
