aboutsummaryrefslogtreecommitdiff
path: root/weed/server/filer_grpc_server_sub_meta.go
diff options
context:
space:
mode:
authorchrislu <chris.lu@gmail.com>2022-01-23 16:14:22 -0800
committerchrislu <chris.lu@gmail.com>2022-01-23 16:14:22 -0800
commit4a311c7f5e88d1c1433a11737734994c3a48ef92 (patch)
treecf8fddb44ddf8c07f20d008072314672f8456173 /weed/server/filer_grpc_server_sub_meta.go
parentbb6854b9726e36fb36dad218fb75aa24895717c7 (diff)
downloadseaweedfs-4a311c7f5e88d1c1433a11737734994c3a48ef92.tar.xz
seaweedfs-4a311c7f5e88d1c1433a11737734994c3a48ef92.zip
dedup local metadata subscribers
fix https://github.com/chrislusf/seaweedfs/discussions/2542
Diffstat (limited to 'weed/server/filer_grpc_server_sub_meta.go')
-rw-r--r--weed/server/filer_grpc_server_sub_meta.go9
1 files changed, 5 insertions, 4 deletions
diff --git a/weed/server/filer_grpc_server_sub_meta.go b/weed/server/filer_grpc_server_sub_meta.go
index db395e3c3..d51e71121 100644
--- a/weed/server/filer_grpc_server_sub_meta.go
+++ b/weed/server/filer_grpc_server_sub_meta.go
@@ -27,7 +27,6 @@ func (fs *FilerServer) SubscribeMetadata(req *filer_pb.SubscribeMetadataRequest,
if alreadyKnown {
return fmt.Errorf("duplicated subscription detected for client %s id %d", clientName, req.ClientId)
}
-
defer fs.deleteClient(clientName, req.ClientId)
lastReadTime := time.Unix(0, req.SinceNs)
@@ -84,9 +83,11 @@ func (fs *FilerServer) SubscribeLocalMetadata(req *filer_pb.SubscribeMetadataReq
peerAddress := findClientAddress(stream.Context(), 0)
- _, clientName := fs.addClient(req.ClientName, peerAddress, 0)
-
- defer fs.deleteClient(clientName, 0)
+ alreadyKnown, clientName := fs.addClient(req.ClientName, peerAddress, req.ClientId)
+ if alreadyKnown {
+ return fmt.Errorf("duplicated local subscription detected for client %s id %d", clientName, req.ClientId)
+ }
+ defer fs.deleteClient(clientName, req.ClientId)
lastReadTime := time.Unix(0, req.SinceNs)
glog.V(0).Infof(" %v local subscribe %s from %+v", clientName, req.PathPrefix, lastReadTime)