Open Tainan404 opened 5 months ago
Hello @Tainan404 - nice catch!
I would like to add that consistently deduplicating the subscriptions is a very important feature for BigBlueButton.
This feature allowed us to decouple the data consumption, allowing each component to require the data of interest.
However, with this bug, we will eventually get duplicated subscriptions, increasing the load in both client and server.
@jerelmiller - we have some workarounds in mind, like creating a hook named useDeduplicatedSubscription
, but if it's something you could fix on apollo-client, it would benefit the whole comunity of users.
Any feedback in this issue will be highly appreciated.
Thank you!
Hi @Tainan404 and @TiagoJacobs 👋
I see that the relevant feature request https://github.com/apollographql/apollo-feature-requests/issues/74 was closed by https://github.com/apollographql/apollo-client/pull/6910.
As you described, I am seeing deduplication of the initial subscriptions, but when subsequent components are rendered as you said I'm seeing new connections open. I suspect I know what's happening here: any existing deduplication is happening in the QueryManager when startGraphQLSubscription
calls getObservableFromLink
, so requests that are fired in quick succession can be deduped, but we don't keep track of subscriptions with e.g. a unique cache key, so if the same subscription is being opened at a later time, it cannot be deduplicated against all currently running subscriptions.
I'll have to dig into this more and discuss with the team, thanks for the reproduction!
Hello @alessbell,
To temporarily address this issue, we have implemented a new hook in BigBlueButton called usedDeduplicatedSubscription
. You can find the pull request here.
I am sending it here in case it can be helpful to others.
PS: Looking forward for an oficial fix in the future.
Thanks again!
Maybe same like this here? https://github.com/apollographql/apollo-client/issues/10117
Hello @dominikklein - yes, it's the same case!
When this would work in a better way, would it be the same for subscribeToMore
or is this currently in general handled in a different way?
Issue Description
Intended outcome: When multiple components subscribe for the same subscrition deduplicate them.
Actual outcome: When a new component subscribes for an on running subscription it duplicates the request.
The first two components reuse the same request for subscriptions, the new one creates a new request for the same susbcription example: Screencast from 23-05-2024 18:54:27.webm
Link to Reproduction
https://github.com/Tainan404/subscription-duplication
Reproduction Steps
after start the server and client
@apollo/client
version3.10.4