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

parse function: improve memory management #11370

Merged
merged 13 commits into from
Nov 29, 2023
Merged

Conversation

phryneas
Copy link
Member

@phryneas phryneas commented Nov 17, 2023

This PR is based on #11367 so it should be merged after that one.

This is actually one of the more important PRs: the verifyDocumentType export is used in a lot of our hooks.

Note that we cannot hook parser.resetCache up to InMemoryCache.gc directly, because that would pull the dependency into the core.

I might open an independent PR for a central "memory reset" mechanism with self-registration.

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

* use LRU `WeakCache` instead of `Map` to keep a limited number of hash results
* hash cache is initiated lazily, only when needed
* expose `parse.resetCache()` method
Copy link

changeset-bot bot commented Nov 17, 2023

🦋 Changeset detected

Latest commit: ed09a9c

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

Copy link
Contributor

github-actions bot commented Nov 17, 2023

size-limit report 📦

Path Size
dist/apollo-client.min.cjs 37.72 KB (+0.06% 🔺)
import { ApolloClient, InMemoryCache, HttpLink } from "dist/main.cjs" 44.17 KB (+0.09% 🔺)
import { ApolloClient, InMemoryCache, HttpLink } from "dist/main.cjs" (production) 42.65 KB (+0.12% 🔺)
import { ApolloClient, InMemoryCache, HttpLink } from "dist/index.js" 32.77 KB (0%)
import { ApolloClient, InMemoryCache, HttpLink } from "dist/index.js" (production) 31.45 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.38 KB (+0.93% 🔺)
import { useQuery } from "dist/react/index.js" (production) 4.19 KB (+0.9% 🔺)
import { useLazyQuery } from "dist/react/index.js" 4.69 KB (+0.76% 🔺)
import { useLazyQuery } from "dist/react/index.js" (production) 4.51 KB (+0.9% 🔺)
import { useMutation } from "dist/react/index.js" 2.65 KB (+1.58% 🔺)
import { useMutation } from "dist/react/index.js" (production) 2.63 KB (+1.55% 🔺)
import { useSubscription } from "dist/react/index.js" 2.34 KB (+1.79% 🔺)
import { useSubscription } from "dist/react/index.js" (production) 2.29 KB (+1.82% 🔺)
import { useSuspenseQuery } from "dist/react/index.js" 4.37 KB (+0.91% 🔺)
import { useSuspenseQuery } from "dist/react/index.js" (production) 3.79 KB (0%)
import { useBackgroundQuery } from "dist/react/index.js" 3.86 KB (+1.05% 🔺)
import { useBackgroundQuery } from "dist/react/index.js" (production) 3.27 KB (0%)
import { useLoadableQuery } from "dist/react/index.js" 4.12 KB (+0.89% 🔺)
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 added this to the MemoryAnalysis milestone Nov 17, 2023
@phryneas phryneas marked this pull request as ready for review November 17, 2023 14:58
@jerelmiller jerelmiller changed the base branch from pr/print-weakCache to release-3.9 November 29, 2023 03:51
@jerelmiller jerelmiller changed the base branch from release-3.9 to pr/print-weakCache November 29, 2023 03:52
Copy link
Member

@jerelmiller jerelmiller left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🎉

@github-actions github-actions bot added the auto-cleanup 🤖 label Nov 29, 2023
Base automatically changed from pr/print-weakCache to release-3.9 November 29, 2023 10:46
@phryneas phryneas merged commit 25e2cb4 into release-3.9 Nov 29, 2023
22 checks passed
@phryneas phryneas deleted the pr/parse-weakCache branch November 29, 2023 11:06
@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