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

[Turbopack] connect children in a batch when task is about to finish #74773

Open
wants to merge 13 commits into
base: canary
Choose a base branch
from

Conversation

sokra
Copy link
Member

@sokra sokra commented Jan 10, 2025

What?

Connects all (new) children once the task is finished instead of each task when it's called.

To keep tasks active while the parent is in progress, but not finished, it uses the new active counter.

@ijjk
Copy link
Member

ijjk commented Jan 10, 2025

Failing test suites

Commit: 118a2af

pnpm test-dev-turbo test/development/acceptance/ReactRefreshRequire.test.ts (turbopack)

  • ReactRefreshRequire > propagates a module that stops accepting in next version
Expand output

● ReactRefreshRequire › propagates a module that stops accepting in next version

expect(received).toEqual(expected) // deep equality

- Expected  - 0
+ Received  + 1

  Array [
    "init BarV1.1",
+   "init BarV1.1",
  ]

  399 |         `window.log.push('init BarV1.1'); export default function Bar() {};`
  400 |       ))
> 401 |     expect(await session.evaluate(() => (window as any).log)).toEqual([
      |                                                               ^
  402 |       'init BarV1.1',
  403 |     ])
  404 |

  at Object.toEqual (development/acceptance/ReactRefreshRequire.test.ts:401:63)

Read more about building and testing Next.js in contributing.md.

pnpm test-start-turbo test/e2e/persistent-caching/persistent-caching.test.ts (turbopack)

  • persistent-caching > should persistent cache loaders
  • persistent-caching > should allow to change files while stopped
Expand output

● persistent-caching › should persistent cache loaders

thrown: "Exceeded timeout of 120000 ms for a test.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  32 |   }
  33 |
> 34 |   it('should persistent cache loaders', async () => {
     |   ^
  35 |     let appTimestamp, pagesTimestamp
  36 |     {
  37 |       const browser = await next.browser('/')

  at it (e2e/persistent-caching/persistent-caching.test.ts:34:3)
  at Object.describe (e2e/persistent-caching/persistent-caching.test.ts:4:1)

● persistent-caching › should allow to change files while stopped

page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:38353/
Call log:
  - navigating to "http://localhost:38353/", waiting until "load"

  282 |     opts?.beforePageLoad?.(page)
  283 |
> 284 |     await page.goto(url, { waitUntil: 'load' })
      |                ^
  285 |   }
  286 |
  287 |   back(options) {

  at BrowserInterface.goto (lib/browsers/playwright.ts:284:16)
  at webdriver (lib/next-webdriver.ts:136:3)
  at Object.<anonymous> (e2e/persistent-caching/persistent-caching.test.ts:64:23)

Read more about building and testing Next.js in contributing.md.

@ijjk
Copy link
Member

ijjk commented Jan 10, 2025

Stats from current PR

Default Build (Increase detected ⚠️)
General
vercel/next.js canary vercel/next.js sokra/lazy-connect Change
buildDuration 16.6s 15s N/A
buildDurationCached 14.1s 11.8s N/A
nodeModulesSize 417 MB 417 MB N/A
nextStartRea..uration (ms) 420ms 423ms N/A
Client Bundles (main, webpack)
vercel/next.js canary vercel/next.js sokra/lazy-connect Change
5306-HASH.js gzip 53.5 kB 53.4 kB N/A
8276.HASH.js gzip 169 B 168 B N/A
8377-HASH.js gzip 5.44 kB 5.44 kB N/A
bccd1874-HASH.js gzip 52.9 kB 52.9 kB N/A
framework-HASH.js gzip 57.5 kB 57.5 kB N/A
main-app-HASH.js gzip 241 B 242 B N/A
main-HASH.js gzip 34.2 kB 34.2 kB N/A
webpack-HASH.js gzip 1.71 kB 1.71 kB N/A
Overall change 0 B 0 B
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js sokra/lazy-connect Change
polyfills-HASH.js gzip 39.4 kB 39.4 kB
Overall change 39.4 kB 39.4 kB
Client Pages
vercel/next.js canary vercel/next.js sokra/lazy-connect Change
_app-HASH.js gzip 193 B 193 B
_error-HASH.js gzip 193 B 193 B
amp-HASH.js gzip 512 B 510 B N/A
css-HASH.js gzip 343 B 342 B N/A
dynamic-HASH.js gzip 1.84 kB 1.84 kB
edge-ssr-HASH.js gzip 265 B 265 B
head-HASH.js gzip 363 B 362 B N/A
hooks-HASH.js gzip 393 B 392 B N/A
image-HASH.js gzip 4.57 kB 4.57 kB N/A
index-HASH.js gzip 268 B 268 B
link-HASH.js gzip 2.35 kB 2.34 kB N/A
routerDirect..HASH.js gzip 328 B 328 B
script-HASH.js gzip 397 B 397 B
withRouter-HASH.js gzip 323 B 326 B N/A
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 3.59 kB 3.59 kB
Client Build Manifests
vercel/next.js canary vercel/next.js sokra/lazy-connect Change
_buildManifest.js gzip 749 B 747 B N/A
Overall change 0 B 0 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js sokra/lazy-connect Change
index.html gzip 524 B 523 B N/A
link.html gzip 539 B 538 B N/A
withRouter.html gzip 520 B 520 B
Overall change 520 B 520 B
Edge SSR bundle Size
vercel/next.js canary vercel/next.js sokra/lazy-connect Change
edge-ssr.js gzip 129 kB 129 kB N/A
page.js gzip 207 kB 207 kB N/A
Overall change 0 B 0 B
Middleware size
vercel/next.js canary vercel/next.js sokra/lazy-connect Change
middleware-b..fest.js gzip 667 B 667 B
middleware-r..fest.js gzip 155 B 156 B N/A
middleware.js gzip 31.3 kB 31.3 kB N/A
edge-runtime..pack.js gzip 844 B 844 B
Overall change 1.51 kB 1.51 kB
Next Runtimes
vercel/next.js canary vercel/next.js sokra/lazy-connect Change
274-experime...dev.js gzip 322 B 322 B
274.runtime.dev.js gzip 314 B 314 B
app-page-exp...dev.js gzip 372 kB 372 kB
app-page-exp..prod.js gzip 130 kB 130 kB
app-page-tur..prod.js gzip 142 kB 142 kB
app-page-tur..prod.js gzip 138 kB 138 kB
app-page.run...dev.js gzip 360 kB 360 kB
app-page.run..prod.js gzip 126 kB 126 kB
app-route-ex...dev.js gzip 37.6 kB 37.6 kB
app-route-ex..prod.js gzip 25.6 kB 25.6 kB
app-route-tu..prod.js gzip 25.6 kB 25.6 kB
app-route-tu..prod.js gzip 25.4 kB 25.4 kB
app-route.ru...dev.js gzip 39.2 kB 39.2 kB
app-route.ru..prod.js gzip 25.4 kB 25.4 kB
pages-api-tu..prod.js gzip 9.69 kB 9.69 kB
pages-api.ru...dev.js gzip 11.6 kB 11.6 kB
pages-api.ru..prod.js gzip 9.68 kB 9.68 kB
pages-turbo...prod.js gzip 21.7 kB 21.7 kB
pages.runtim...dev.js gzip 27.5 kB 27.5 kB
pages.runtim..prod.js gzip 21.7 kB 21.7 kB
server.runti..prod.js gzip 916 kB 916 kB
Overall change 2.46 MB 2.46 MB
build cache Overall increase ⚠️
vercel/next.js canary vercel/next.js sokra/lazy-connect Change
0.pack gzip 2.09 MB 2.09 MB N/A
index.pack gzip 75.6 kB 76.2 kB ⚠️ +560 B
Overall change 75.6 kB 76.2 kB ⚠️ +560 B
Diff details
Diff for main-HASH.js

Diff too large to display

Commit: 118a2af

@sokra sokra force-pushed the sokra/active-counter-2 branch from d449b0e to b15d66c Compare January 13, 2025 21:15
@sokra sokra force-pushed the sokra/lazy-connect branch from e5f13e2 to 0084ab7 Compare January 13, 2025 21:15
@sokra sokra changed the title lazy connect children [Turbopack] connect children in a batch when task is about to finish Jan 13, 2025
@sokra sokra marked this pull request as ready for review January 13, 2025 21:20
@sokra sokra requested a review from mischnic January 13, 2025 21:21
@sokra sokra force-pushed the sokra/active-counter-2 branch from b15d66c to 585a4e0 Compare January 13, 2025 21:31
@sokra sokra force-pushed the sokra/lazy-connect branch from 0084ab7 to f34b63c Compare January 13, 2025 21:31
@sokra sokra force-pushed the sokra/active-counter-2 branch from 585a4e0 to cac5701 Compare January 14, 2025 12:50
@sokra sokra force-pushed the sokra/lazy-connect branch from f34b63c to 2267156 Compare January 14, 2025 12:51
@sokra sokra force-pushed the sokra/active-counter-2 branch from cac5701 to 2d17da4 Compare January 14, 2025 13:19
@sokra sokra force-pushed the sokra/lazy-connect branch from 2267156 to 366bcfb Compare January 14, 2025 13:20
@sokra sokra force-pushed the sokra/active-counter-2 branch from 2d17da4 to b3d8c4d Compare January 14, 2025 13:32
@sokra sokra force-pushed the sokra/lazy-connect branch from 366bcfb to 468026c Compare January 14, 2025 13:32
@sokra sokra force-pushed the sokra/active-counter-2 branch 2 times, most recently from 96f4c63 to 207c7fc Compare January 14, 2025 15:23
@sokra sokra force-pushed the sokra/lazy-connect branch from 468026c to 8d560fc Compare January 14, 2025 15:23
@sokra sokra changed the base branch from sokra/active-counter-2 to graphite-base/74773 January 14, 2025 15:39
@sokra sokra changed the base branch from graphite-base/74773 to canary January 14, 2025 15:39
Instead of directly connecting children on call, put them in a list and connect them when the parent finishes.
Future children are kept active with an active_counter.
@sokra sokra force-pushed the sokra/lazy-connect branch from 8d560fc to 09299b0 Compare January 14, 2025 15:39
@sokra sokra force-pushed the sokra/lazy-connect branch from 09299b0 to 118a2af Compare January 14, 2025 15:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
created-by: Turbopack team PRs by the Turbopack team.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants