frostfs-node/pkg/morph/subscriber
Pavel Karpy a69c6d1ec9
All checks were successful
ci/woodpecker/push/pre-commit Pipeline was successful
[#2272] morph: Do not subscribe to events without listening
It led to a neo-go dead-lock in the `subscriber` component. Subscribing to
notifications is the same RPC as any others, so it could also be blocked
forever if no async listening (reading the notification channel) routine
exists. If a number of subscriptions is big enough (or a caller is lucky
enough) subscribing loop might have not finished subscribing before the
first notification is received and then: subscribing RPC is blocked by
received notification (non)handling and listening notifications routine is
blocked by not finished subscription loop.
That commit starts listening notification channel _before_ any subscription
actions.

Signed-off-by: Pavel Karpy <p.karpy@yadro.com>
2023-04-03 08:42:41 +00:00
..
subscriber.go [#2272] morph: Do not subscribe to events without listening 2023-04-03 08:42:41 +00:00