Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

use default makeCacheKey implementation for FragmentRegistry.transform and FragmentRegistry.findFragmentSpreads #11356

Merged
merged 3 commits into from
Nov 29, 2023

Conversation

phryneas
Copy link
Member

@phryneas phryneas commented Nov 9, 2023

This fixes a potential memory leak in FragmentRegistry.transform and FragmentRegistry.findFragmentSpreads that would hold on to passed-in DocumentNodes for too long.

These optimism-wrapped methods were using the first argument directly as a cache key, which meant that they were strongly holding onto those keys as a result - in addition potentially causing memory leaks down the line in other places that were using these values as weak keys.

Checklist:

  • If this PR contains changes to the library itself (not necessary for e.g. docs updates), please include a changeset (see CONTRIBUTING.md)
  • If this PR is a new feature, please reference an issue where a consensus about the design was reached (not necessary for small changes)
  • Make sure all of the significant new logic is covered by tests

`FragmentRegistry.transform` and `FragmentRegistry.findFragmentSpreads`
Copy link

changeset-bot bot commented Nov 9, 2023

🦋 Changeset detected

Latest commit: 059ce02

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@apollo/client Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@phryneas phryneas added this to the MemoryAnalysis milestone Nov 9, 2023
Copy link
Contributor

github-actions bot commented Nov 9, 2023

size-limit report 📦

Path Size
dist/apollo-client.min.cjs 37.7 KB (0%)
import { ApolloClient, InMemoryCache, HttpLink } from "dist/main.cjs" 44.14 KB (-0.04% 🔽)
import { ApolloClient, InMemoryCache, HttpLink } from "dist/main.cjs" (production) 42.61 KB (-0.06% 🔽)
import { ApolloClient, InMemoryCache, HttpLink } from "dist/index.js" 32.78 KB (0%)
import { ApolloClient, InMemoryCache, HttpLink } from "dist/index.js" (production) 31.43 KB (0%)
import { ApolloProvider } from "dist/react/index.js" 1.28 KB (0%)
import { ApolloProvider } from "dist/react/index.js" (production) 1.26 KB (0%)
import { useQuery } from "dist/react/index.js" 4.34 KB (0%)
import { useQuery } from "dist/react/index.js" (production) 4.16 KB (0%)
import { useLazyQuery } from "dist/react/index.js" 4.65 KB (0%)
import { useLazyQuery } from "dist/react/index.js" (production) 4.47 KB (0%)
import { useMutation } from "dist/react/index.js" 2.61 KB (0%)
import { useMutation } from "dist/react/index.js" (production) 2.59 KB (0%)
import { useSubscription } from "dist/react/index.js" 2.29 KB (0%)
import { useSubscription } from "dist/react/index.js" (production) 2.25 KB (0%)
import { useSuspenseQuery } from "dist/react/index.js" 4.33 KB (0%)
import { useSuspenseQuery } from "dist/react/index.js" (production) 3.79 KB (0%)
import { useBackgroundQuery } from "dist/react/index.js" 3.82 KB (0%)
import { useBackgroundQuery } from "dist/react/index.js" (production) 3.27 KB (0%)
import { useLoadableQuery } from "dist/react/index.js" 4.09 KB (0%)
import { useLoadableQuery } from "dist/react/index.js" (production) 3.53 KB (0%)
import { useReadQuery } from "dist/react/index.js" 3.05 KB (0%)
import { useReadQuery } from "dist/react/index.js" (production) 3 KB (0%)
import { useFragment } from "dist/react/index.js" 2.15 KB (0%)
import { useFragment } from "dist/react/index.js" (production) 2.1 KB (0%)

@phryneas phryneas marked this pull request as ready for review November 9, 2023 13:51
@github-actions github-actions bot added the auto-cleanup 🤖 label Nov 29, 2023
@jerelmiller jerelmiller merged commit cc4ac7e into release-3.9 Nov 29, 2023
28 checks passed
@jerelmiller jerelmiller deleted the pr/fragmentRegistry-defaultMakeCacheKey branch November 29, 2023 03:50
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Dec 30, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants