Browse Source

reload entry only when it is a hard link

fix https://github.com/chrislusf/seaweedfs/issues/1581
Chris Lu 4 years ago
parent
commit
0b68b68ec4
1 changed files with 9 additions and 1 deletions
  1. 9 1
      weed/filesys/file.go

+ 9 - 1
weed/filesys/file.go

@@ -253,9 +253,15 @@ func (file *File) Forget() {
 }
 
 func (file *File) maybeLoadEntry(ctx context.Context) error {
-	if (file.entry != nil && len(file.entry.HardLinkId) != 0) || file.isOpen > 0 {
+	if file.isOpen > 0 {
 		return nil
 	}
+	if file.entry != nil {
+		if len(file.entry.HardLinkId) == 0 {
+			// only always reload hard link
+			return nil
+		}
+	}
 	entry, err := file.wfs.maybeLoadEntry(file.dir.FullPath(), file.Name)
 	if err != nil {
 		glog.V(3).Infof("maybeLoadEntry file %s/%s: %v", file.dir.FullPath(), file.Name, err)
@@ -263,6 +269,8 @@ func (file *File) maybeLoadEntry(ctx context.Context) error {
 	}
 	if entry != nil {
 		file.setEntry(entry)
+	} else {
+		glog.Warningf("maybeLoadEntry not found entry %s/%s: %v", file.dir.FullPath(), file.Name, err)
 	}
 	return nil
 }