From f193942adce8134c9e7b277890c2a0709f2d9e08 Mon Sep 17 00:00:00 2001 From: chrislu Date: Sun, 25 Jun 2023 22:07:23 -0700 Subject: [PATCH] lock on append metadata operation --- weed/server/filer_grpc_server.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/weed/server/filer_grpc_server.go b/weed/server/filer_grpc_server.go index d79df1d2e..d67bd425e 100644 --- a/weed/server/filer_grpc_server.go +++ b/weed/server/filer_grpc_server.go @@ -3,6 +3,7 @@ package weed_server import ( "context" "fmt" + "github.com/seaweedfs/seaweedfs/weed/cluster" "os" "path/filepath" "strconv" @@ -240,8 +241,12 @@ func (fs *FilerServer) cleanupChunks(fullpath string, existingEntry *filer.Entry func (fs *FilerServer) AppendToEntry(ctx context.Context, req *filer_pb.AppendToEntryRequest) (*filer_pb.AppendToEntryResponse, error) { glog.V(4).Infof("AppendToEntry %v", req) - fullpath := util.NewFullPath(req.Directory, req.EntryName) + + lockClient := cluster.NewLockClient(fs.grpcDialOption) + lock := lockClient.NewLock(fs.option.Host, string(fullpath)) + defer lock.Unlock() + var offset int64 = 0 entry, err := fs.filer.FindEntry(ctx, fullpath) if err == filer_pb.ErrNotFound {