diff options
| author | chrislu <chris.lu@gmail.com> | 2022-06-27 12:40:50 -0700 |
|---|---|---|
| committer | chrislu <chris.lu@gmail.com> | 2022-06-27 12:40:50 -0700 |
| commit | 4b1f48a399ac8e18154929b942d47e10c60a54d9 (patch) | |
| tree | a93a65a5a00ee3ec6ec4fcb8e88fdcfc42148331 /weed | |
| parent | 4a65159250c0ca7cf0fc203dd300bf402c1016f9 (diff) | |
| parent | dc6b1a52e8a2b34c1e775fe21013e366c6a37ca6 (diff) | |
| download | seaweedfs-4b1f48a399ac8e18154929b942d47e10c60a54d9.tar.xz seaweedfs-4b1f48a399ac8e18154929b942d47e10c60a54d9.zip | |
Merge branch 'master' of https://github.com/chrislusf/seaweedfs
Diffstat (limited to 'weed')
| -rw-r--r-- | weed/security/tls.go | 2 | ||||
| -rw-r--r-- | weed/server/master_grpc_server.go | 8 | ||||
| -rw-r--r-- | weed/server/webdav_server.go | 8 | ||||
| -rw-r--r-- | weed/storage/disk_location.go | 7 | ||||
| -rw-r--r-- | weed/wdclient/masterclient.go | 8 |
5 files changed, 23 insertions, 10 deletions
diff --git a/weed/security/tls.go b/weed/security/tls.go index 137b7d06a..bfa9d43c7 100644 --- a/weed/security/tls.go +++ b/weed/security/tls.go @@ -35,7 +35,7 @@ func LoadServerTLS(config *util.ViperProxy, component string) (grpc.ServerOption serverIdentityProvider, err := pemfile.NewProvider(serverOptions) if err != nil { - glog.Warningf("pemfile.NewProvider(%v) failed: %v", serverOptions, err) + glog.Warningf("pemfile.NewProvider(%v) %v failed: %v", serverOptions, component, err) return nil, nil } diff --git a/weed/server/master_grpc_server.go b/weed/server/master_grpc_server.go index 4d0fbbc41..4f5455cb1 100644 --- a/weed/server/master_grpc_server.go +++ b/weed/server/master_grpc_server.go @@ -263,8 +263,12 @@ func (ms *MasterServer) KeepConnected(stream master_pb.Seaweed_KeepConnectedServ } ms.deleteClient(clientName) }() - - for _, message := range ms.Topo.ToVolumeLocations() { + for i, message := range ms.Topo.ToVolumeLocations() { + if i == 0 { + if leader, err := ms.Topo.Leader(); err == nil { + message.Leader = string(leader) + } + } if sendErr := stream.Send(&master_pb.KeepConnectedResponse{VolumeLocation: message}); sendErr != nil { return sendErr } diff --git a/weed/server/webdav_server.go b/weed/server/webdav_server.go index 265dea03a..5140af2b4 100644 --- a/weed/server/webdav_server.go +++ b/weed/server/webdav_server.go @@ -48,6 +48,13 @@ type WebDavServer struct { Handler *webdav.Handler } +func max(x, y int64) int64 { + if x <= y { + return y + } + return x +} + func NewWebDavServer(option *WebDavOption) (ws *WebDavServer, err error) { fs, _ := NewWebDavFileSystem(option) @@ -496,6 +503,7 @@ func (f *WebDavFile) Write(buf []byte) (int, error) { written, err := f.bufWriter.Write(buf) if err == nil { + f.entry.Attributes.FileSize = uint64(max(f.off+int64(written), int64(f.entry.Attributes.FileSize))) glog.V(3).Infof("WebDavFileSystem.Write %v: written [%d,%d)", f.name, f.off, f.off+int64(len(buf))) f.off += int64(written) } diff --git a/weed/storage/disk_location.go b/weed/storage/disk_location.go index 289fd3b47..847324838 100644 --- a/weed/storage/disk_location.go +++ b/weed/storage/disk_location.go @@ -44,13 +44,11 @@ func GenerateDirUuid(dir string) (dirUuidString string, err error) { dirUuidString = dirUuid.String() writeErr := util.WriteFile(fileName, []byte(dirUuidString), 0644) if writeErr != nil { - glog.Warningf("failed to write uuid to %s : %v", fileName, writeErr) return "", fmt.Errorf("failed to write uuid to %s : %v", fileName, writeErr) } } else { uuidData, readErr := os.ReadFile(fileName) if readErr != nil { - glog.Warningf("failed to read uuid from %s : %v", fileName, readErr) return "", fmt.Errorf("failed to read uuid from %s : %v", fileName, readErr) } dirUuidString = string(uuidData) @@ -65,7 +63,10 @@ func NewDiskLocation(dir string, maxVolumeCount int, minFreeSpace util.MinFreeSp } else { idxDir = util.ResolvePath(idxDir) } - dirUuid, _ := GenerateDirUuid(dir) + dirUuid, err := GenerateDirUuid(dir) + if err != nil { + glog.Fatalf("cannot generate uuid of dir %s: %v", dir, err) + } location := &DiskLocation{ Directory: dir, DirectoryUuid: dirUuid, diff --git a/weed/wdclient/masterclient.go b/weed/wdclient/masterclient.go index fb681b523..35f1c4cf8 100644 --- a/weed/wdclient/masterclient.go +++ b/weed/wdclient/masterclient.go @@ -168,8 +168,8 @@ func (mc *MasterClient) tryConnectToMaster(master pb.ServerAddress) (nextHintedL } // check if it is the leader to determine whether to reset the vidMap - if resp.VolumeLocation != nil && resp.VolumeLocation.Leader != "" { - glog.V(0).Infof("redirected to leader %v", resp.VolumeLocation.Leader) + if resp.VolumeLocation != nil && resp.VolumeLocation.Leader != "" && string(master) != resp.VolumeLocation.Leader { + glog.V(0).Infof("master %v redirected to leader %v", master, resp.VolumeLocation.Leader) nextHintedLeader = pb.ServerAddress(resp.VolumeLocation.Leader) stats.MasterClientConnectCounter.WithLabelValues(stats.RedirectedToleader).Inc() return nil @@ -188,8 +188,8 @@ func (mc *MasterClient) tryConnectToMaster(master pb.ServerAddress) (nextHintedL if resp.VolumeLocation != nil { // maybe the leader is changed - if resp.VolumeLocation.Leader != "" { - glog.V(0).Infof("redirected to leader %v", resp.VolumeLocation.Leader) + if resp.VolumeLocation.Leader != "" && string(mc.currentMaster) != resp.VolumeLocation.Leader { + glog.V(0).Infof("currentMaster %v redirected to leader %v", mc.currentMaster, resp.VolumeLocation.Leader) nextHintedLeader = pb.ServerAddress(resp.VolumeLocation.Leader) stats.MasterClientConnectCounter.WithLabelValues(stats.RedirectedToleader).Inc() return nil |
