aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchrislu <chris.lu@gmail.com>2023-06-25 22:07:23 -0700
committerchrislu <chris.lu@gmail.com>2023-06-25 22:07:23 -0700
commitf193942adce8134c9e7b277890c2a0709f2d9e08 (patch)
treec87d6dabb43c2c05367610594b7356a3dece415a
parent61c42f9991e117ca6097c6429bb306b7e05758e2 (diff)
downloadseaweedfs-f193942adce8134c9e7b277890c2a0709f2d9e08.tar.xz
seaweedfs-f193942adce8134c9e7b277890c2a0709f2d9e08.zip
lock on append metadata operation
-rw-r--r--weed/server/filer_grpc_server.go7
1 files changed, 6 insertions, 1 deletions
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 {