Skip to content

Commit de04c27

Browse files
committed
Just warn on leak
1 parent 37adee2 commit de04c27

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

packages/common/src/client/ConnectionManager.ts

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ export class ConnectionManager extends BaseObserver<ConnectionManagerListener> {
310310
this.subscriptionsMayHaveChanged();
311311
};
312312

313-
subscription = new ActiveSubscription(name, parameters, waitForFirstSync, clearSubscription);
313+
subscription = new ActiveSubscription(name, parameters, this.logger, waitForFirstSync, clearSubscription);
314314
this.locallyActiveSubscriptions.set(key, subscription);
315315
this.subscriptionsMayHaveChanged();
316316
}
@@ -341,6 +341,7 @@ class ActiveSubscription {
341341
constructor(
342342
readonly name: string,
343343
readonly parameters: Record<string, any> | null,
344+
readonly logger: ILogger,
344345
readonly waitForFirstSync: (abort?: AbortSignal) => Promise<void>,
345346
private clearSubscription: () => void
346347
) {}
@@ -377,4 +378,10 @@ class SyncStreamSubscriptionHandle implements SyncStreamSubscription {
377378
}
378379

379380
const _finalizer =
380-
FinalizationRegistry != null ? new FinalizationRegistry<ActiveSubscription>((sub) => sub.decrementRefCount()) : null;
381+
FinalizationRegistry != null
382+
? new FinalizationRegistry<ActiveSubscription>((sub) => {
383+
sub.logger.warn(
384+
`A subscription to ${sub.name} with params ${JSON.stringify(sub.parameters)} leaked! Please ensure calling unsubscribe() when you don't need a subscription anymore. For global subscriptions, consider storing them in global fields to avoid this warning.`
385+
);
386+
})
387+
: null;

0 commit comments

Comments
 (0)