1
0
Fork 0
mirror of https://github.com/anyproto/anytype-heart.git synced 2025-06-07 21:37:04 +09:00

GO-5727: Subscriptions: improve lock contention

This commit is contained in:
Sergey 2025-05-28 17:03:56 +02:00
parent 7b8dd360f0
commit 108ab57e33
No known key found for this signature in database
GPG key ID: 3B6BEF79160221C6

View file

@ -225,10 +225,14 @@ func (s *service) SubscribeGroups(req SubscribeGroupsRequest) (*pb.RpcObjectGrou
func (s *service) Unsubscribe(subIds ...string) (err error) {
s.lock.Lock()
subs := make([]*spaceSubscriptions, 0, len(s.spaceSubs))
for _, spaceSub := range s.spaceSubs {
err = errors.Join(spaceSub.Unsubscribe(subIds...))
subs = append(subs, spaceSub)
}
s.lock.Unlock()
for _, spaceSub := range subs {
err = errors.Join(spaceSub.Unsubscribe(subIds...))
}
return err
}
@ -614,9 +618,6 @@ type SubscribeGroupsRequest struct {
func (s *spaceSubscriptions) SubscribeGroups(req SubscribeGroupsRequest) (*pb.RpcObjectGroupsSubscribeResponse, error) {
subId := ""
s.m.Lock()
defer s.m.Unlock()
q := database.Query{
Filters: req.Filters,
}
@ -678,6 +679,9 @@ func (s *spaceSubscriptions) SubscribeGroups(req SubscribeGroupsRequest) (*pb.Rp
subId = bson.NewObjectId().Hex()
}
s.m.Lock()
defer s.m.Unlock()
var sub subscription
if colObserver != nil {
sub = s.newCollectionGroupSub(subId, domain.RelationKey(req.RelationKey), flt, groups, colObserver)