Skip to content

Commit 2e4d02d

Browse files
committed
feat: add fallback
1 parent 0f27265 commit 2e4d02d

1 file changed

Lines changed: 17 additions & 3 deletions

File tree

v2/pkg/engine/resolve/resolve.go

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1008,17 +1008,31 @@ func (r *Resolver) handleUpdateSubscription(id uint64, data []byte, subIdentifie
10081008
fmt.Printf("resolver:trigger:subscription:update:%d:%d,%d\n", id, subIdentifier.ConnectionID, subIdentifier.SubscriptionID)
10091009
}
10101010

1011-
c, exists := trig.subscriptionIdentifiers[subIdentifier]
1011+
// Fast path: O(1) lookup of the subscriptions resolver context via map
1012+
resolverCtx, exists := trig.subscriptionIdentifiers[subIdentifier]
1013+
1014+
// Fallback O(N) lookup in case we couldn't find the resolver context by map:
1015+
// Loop through trig.subscriptions and find the corresponding resolver context.
1016+
if !exists {
1017+
for i := range trig.subscriptions {
1018+
if trig.subscriptions[i].id == subIdentifier {
1019+
resolverCtx = i
1020+
exists = true
1021+
break
1022+
}
1023+
}
1024+
}
1025+
10121026
if !exists {
10131027
return
10141028
}
10151029

1016-
s, exists := trig.subscriptions[c]
1030+
subscription, exists := trig.subscriptions[resolverCtx]
10171031
if !exists {
10181032
return
10191033
}
10201034

1021-
r.sendUpdateToSubscription(data, c, s)
1035+
r.sendUpdateToSubscription(data, resolverCtx, subscription)
10221036
}
10231037

10241038
func (r *Resolver) sendUpdateToSubscription(data []byte, c *Context, s *sub) {

0 commit comments

Comments
 (0)