Skip to content
New issue

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

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

Already on GitHub? # to your account

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

Draft
wants to merge 8 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: 4c56daf

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

  • ReactRefreshModule app > should allow any variable names
Expand output

● ReactRefreshModule app › should allow any variable names

Application is in inconsistent state: timeout.

  93 |             }
  94 |             if (status !== 'pending') {
> 95 |               throw new Error(
     |                     ^
  96 |                 `Application is in inconsistent state: ${status}.`
  97 |               )
  98 |             }

  at Object.patch (lib/development-sandbox.ts:95:21)
  at Object.<anonymous> (development/acceptance-app/ReactRefreshModule.test.ts:26:7)

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

pnpm test test/integration/jsconfig-paths/test/index.test.js (turbopack)

  • jsconfig paths > default behavior > should have correct module not found error
  • jsconfig paths without baseurl > default behavior > should resolve the first item in the array first
  • jsconfig paths without baseurl > default behavior > should resolve the second item as fallback
  • jsconfig paths without baseurl > default behavior > should resolve a single matching alias
Expand output

● jsconfig paths › default behavior › should have correct module not found error

thrown: "Exceeded timeout of 60000 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."

  63 |     })
  64 |
> 65 |     it('should have correct module not found error', async () => {
     |     ^
  66 |       const basicPage = join(appDir, 'pages/basic-alias.js')
  67 |       const contents = await fs.readFile(basicPage, 'utf8')
  68 |

  at it (integration/jsconfig-paths/test/index.test.js:65:5)
  at describe (integration/jsconfig-paths/test/index.test.js:29:3)
  at runTests (integration/jsconfig-paths/test/index.test.js:137:3)
  at Object.describe (integration/jsconfig-paths/test/index.test.js:136:1)

● jsconfig paths without baseurl › default behavior › should resolve the first item in the array first

expect(received).toMatch(expected)

Expected pattern: /Hello from a/
Received string:  "{\"props\":{\"pageProps\":{\"statusCode\":500,\"hostname\":\"[::]\"}},\"page\":\"/_error\",\"query\":{},\"buildId\":\"development\",\"isFallback\":false,\"err\":{\"name\":\"Error\",\"source\":\"server\",\"message\":\"./test/integration/jsconfig-paths/pages/basic-alias.js:2:1\\nModule not found: Can't resolve '@c/worldd'\\n  1 | import React from 'react'\\n\\u003e 2 | import { World } from '@c/worldd'\\n    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n  3 |\\n  4 | // prevent static generation\\n  5 | export function getServerSideProps() {\\n\\nImport map: aliased to relative './components/worldd' inside of [project]/test/integration/jsconfig-paths\\n\\n\\nhttps://nextjs.org/docs/messages/module-not-found\\n\\n\",\"stack\":\"Error: ./test/integration/jsconfig-paths/pages/basic-alias.js:2:1\\nModule not found: Can't resolve '@c/worldd'\\n\\u001b[0m \\u001b[90m 1 |\\u001b[39m \\u001b[36mimport\\u001b[39m \\u001b[33mReact\\u001b[39m \\u001b[36mfrom\\u001b[39m \\u001b[32m'react'\\u001b[39m\\u001b[0m\\n\\u001b[0m\\u001b[31m\\u001b[1m\\u003e\\u001b[22m\\u001b[39m\\u001b[90m 2 |\\u001b[39m \\u001b[36mimport\\u001b[39m { \\u001b[33mWorld\\u001b[39m } \\u001b[36mfrom\\u001b[39m \\u001b[32m'@c/worldd'\\u001b[39m\\u001b[0m\\n\\u001b[0m \\u001b[90m   |\\u001b[39m \\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[0m\\n\\u001b[0m \\u001b[90m 3 |\\u001b[39m\\u001b[0m\\n\\u001b[0m \\u001b[90m 4 |\\u001b[39m \\u001b[90m// prevent static generation\\u001b[39m\\u001b[0m\\n\\u001b[0m \\u001b[90m 5 |\\u001b[39m \\u001b[36mexport\\u001b[39m \\u001b[36mfunction\\u001b[39m getServerSideProps() {\\u001b[0m\\n\\nImport map: aliased to relative './components/worldd' inside of [project]/test/integration/jsconfig-paths\\n\\n\\nhttps://nextjs.org/docs/messages/module-not-found\\n\\n\\n    at Object.getCompilationErrors (/root/actions-runner/_work/next.js/next.js/packages/next/dist/server/dev/hot-reloader-turbopack.js:707:59)\\n    at DevBundlerService.getCompilationError (/root/actions-runner/_work/next.js/next.js/packages/next/dist/server/lib/dev-bundler-service.js:39:55)\\n    at DevServer.getCompilationError (/root/actions-runner/_work/next.js/next.js/packages/next/dist/server/dev/next-dev-server.js:640:42)\\n    at DevServer.findPageComponents (/root/actions-runner/_work/next.js/next.js/packages/next/dist/server/dev/next-dev-server.js:610:43)\\n    at async DevServer.renderErrorToResponseImpl (/root/actions-runner/_work/next.js/next.js/packages/next/dist/server/base-server.js:2511:26)\"},\"gip\":true,\"scriptLoader\":[]}"

  50 |     it('should resolve the first item in the array first', async () => {
  51 |       const $ = await get$('/resolve-order')
> 52 |       expect($('body').text()).toMatch(/Hello from a/)
     |                                ^
  53 |     })
  54 |
  55 |     it('should resolve the second item as fallback', async () => {

  at Object.toMatch (integration/jsconfig-paths/test/index.test.js:52:32)

● jsconfig paths without baseurl › default behavior › should resolve the second item as fallback

expect(received).toMatch(expected)

Expected pattern: /Hello from only b/
Received string:  "{\"props\":{\"pageProps\":{\"statusCode\":500,\"hostname\":\"[::]\"}},\"page\":\"/_error\",\"query\":{},\"buildId\":\"development\",\"isFallback\":false,\"err\":{\"name\":\"Error\",\"source\":\"server\",\"message\":\"./test/integration/jsconfig-paths/pages/basic-alias.js:2:1\\nModule not found: Can't resolve '@c/worldd'\\n  1 | import React from 'react'\\n\\u003e 2 | import { World } from '@c/worldd'\\n    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n  3 |\\n  4 | // prevent static generation\\n  5 | export function getServerSideProps() {\\n\\nImport map: aliased to relative './components/worldd' inside of [project]/test/integration/jsconfig-paths\\n\\n\\nhttps://nextjs.org/docs/messages/module-not-found\\n\\n\",\"stack\":\"Error: ./test/integration/jsconfig-paths/pages/basic-alias.js:2:1\\nModule not found: Can't resolve '@c/worldd'\\n\\u001b[0m \\u001b[90m 1 |\\u001b[39m \\u001b[36mimport\\u001b[39m \\u001b[33mReact\\u001b[39m \\u001b[36mfrom\\u001b[39m \\u001b[32m'react'\\u001b[39m\\u001b[0m\\n\\u001b[0m\\u001b[31m\\u001b[1m\\u003e\\u001b[22m\\u001b[39m\\u001b[90m 2 |\\u001b[39m \\u001b[36mimport\\u001b[39m { \\u001b[33mWorld\\u001b[39m } \\u001b[36mfrom\\u001b[39m \\u001b[32m'@c/worldd'\\u001b[39m\\u001b[0m\\n\\u001b[0m \\u001b[90m   |\\u001b[39m \\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[0m\\n\\u001b[0m \\u001b[90m 3 |\\u001b[39m\\u001b[0m\\n\\u001b[0m \\u001b[90m 4 |\\u001b[39m \\u001b[90m// prevent static generation\\u001b[39m\\u001b[0m\\n\\u001b[0m \\u001b[90m 5 |\\u001b[39m \\u001b[36mexport\\u001b[39m \\u001b[36mfunction\\u001b[39m getServerSideProps() {\\u001b[0m\\n\\nImport map: aliased to relative './components/worldd' inside of [project]/test/integration/jsconfig-paths\\n\\n\\nhttps://nextjs.org/docs/messages/module-not-found\\n\\n\\n    at Object.getCompilationErrors (/root/actions-runner/_work/next.js/next.js/packages/next/dist/server/dev/hot-reloader-turbopack.js:707:59)\\n    at DevBundlerService.getCompilationError (/root/actions-runner/_work/next.js/next.js/packages/next/dist/server/lib/dev-bundler-service.js:39:55)\\n    at DevServer.getCompilationError (/root/actions-runner/_work/next.js/next.js/packages/next/dist/server/dev/next-dev-server.js:640:42)\\n    at DevServer.findPageComponents (/root/actions-runner/_work/next.js/next.js/packages/next/dist/server/dev/next-dev-server.js:610:43)\\n    at async DevServer.renderErrorToResponseImpl (/root/actions-runner/_work/next.js/next.js/packages/next/dist/server/base-server.js:2511:26)\"},\"gip\":true,\"scriptLoader\":[]}"

  55 |     it('should resolve the second item as fallback', async () => {
  56 |       const $ = await get$('/resolve-fallback')
> 57 |       expect($('body').text()).toMatch(/Hello from only b/)
     |                                ^
  58 |     })
  59 |
  60 |     it('should resolve a single matching alias', async () => {

  at Object.toMatch (integration/jsconfig-paths/test/index.test.js:57:32)

● jsconfig paths without baseurl › default behavior › should resolve a single matching alias

expect(received).toMatch(expected)

Expected pattern: /Hello/
Received string:  "{\"props\":{\"pageProps\":{\"statusCode\":500,\"hostname\":\"[::]\"}},\"page\":\"/_error\",\"query\":{},\"buildId\":\"development\",\"isFallback\":false,\"err\":{\"name\":\"Error\",\"source\":\"server\",\"message\":\"./test/integration/jsconfig-paths/pages/basic-alias.js:2:1\\nModule not found: Can't resolve '@c/worldd'\\n  1 | import React from 'react'\\n\\u003e 2 | import { World } from '@c/worldd'\\n    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n  3 |\\n  4 | // prevent static generation\\n  5 | export function getServerSideProps() {\\n\\nImport map: aliased to relative './components/worldd' inside of [project]/test/integration/jsconfig-paths\\n\\n\\nhttps://nextjs.org/docs/messages/module-not-found\\n\\n\",\"stack\":\"Error: ./test/integration/jsconfig-paths/pages/basic-alias.js:2:1\\nModule not found: Can't resolve '@c/worldd'\\n\\u001b[0m \\u001b[90m 1 |\\u001b[39m \\u001b[36mimport\\u001b[39m \\u001b[33mReact\\u001b[39m \\u001b[36mfrom\\u001b[39m \\u001b[32m'react'\\u001b[39m\\u001b[0m\\n\\u001b[0m\\u001b[31m\\u001b[1m\\u003e\\u001b[22m\\u001b[39m\\u001b[90m 2 |\\u001b[39m \\u001b[36mimport\\u001b[39m { \\u001b[33mWorld\\u001b[39m } \\u001b[36mfrom\\u001b[39m \\u001b[32m'@c/worldd'\\u001b[39m\\u001b[0m\\n\\u001b[0m \\u001b[90m   |\\u001b[39m \\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[31m\\u001b[1m^\\u001b[22m\\u001b[39m\\u001b[0m\\n\\u001b[0m \\u001b[90m 3 |\\u001b[39m\\u001b[0m\\n\\u001b[0m \\u001b[90m 4 |\\u001b[39m \\u001b[90m// prevent static generation\\u001b[39m\\u001b[0m\\n\\u001b[0m \\u001b[90m 5 |\\u001b[39m \\u001b[36mexport\\u001b[39m \\u001b[36mfunction\\u001b[39m getServerSideProps() {\\u001b[0m\\n\\nImport map: aliased to relative './components/worldd' inside of [project]/test/integration/jsconfig-paths\\n\\n\\nhttps://nextjs.org/docs/messages/module-not-found\\n\\n\\n    at Object.getCompilationErrors (/root/actions-runner/_work/next.js/next.js/packages/next/dist/server/dev/hot-reloader-turbopack.js:707:59)\\n    at DevBundlerService.getCompilationError (/root/actions-runner/_work/next.js/next.js/packages/next/dist/server/lib/dev-bundler-service.js:39:55)\\n    at DevServer.getCompilationError (/root/actions-runner/_work/next.js/next.js/packages/next/dist/server/dev/next-dev-server.js:640:42)\\n    at DevServer.findPageComponents (/root/actions-runner/_work/next.js/next.js/packages/next/dist/server/dev/next-dev-server.js:610:43)\\n    at async DevServer.renderErrorToResponseImpl (/root/actions-runner/_work/next.js/next.js/packages/next/dist/server/base-server.js:2511:26)\"},\"gip\":true,\"scriptLoader\":[]}"

  60 |     it('should resolve a single matching alias', async () => {
  61 |       const $ = await get$('/single-alias')
> 62 |       expect($('body').text()).toMatch(/Hello/)
     |                                ^
  63 |     })
  64 |
  65 |     it('should have correct module not found error', async () => {

  at Object.toMatch (integration/jsconfig-paths/test/index.test.js:62:32)

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

pnpm test-dev-turbo test/e2e/app-dir/next-font/next-font.test.ts (turbopack)

  • app dir - next/font > app dir - next-font > Dev errors > should recover on font loader error
Expand output

● app dir - next/font › app dir - next-font › Dev errors › should recover on font loader error

Expected Redbox but found none

  457 |             )
  458 |           )
> 459 |           await assertHasRedbox(browser)
      |           ^
  460 |           expect(await getRedboxSource(browser)).toInclude(
  461 |             "Can't resolve './does-not-exist.woff2'"
  462 |           )

  at Object.<anonymous> (e2e/app-dir/next-font/next-font.test.ts:459:11)

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

pnpm test-dev-turbo test/development/acceptance-app/ReactRefreshLogBox-builtins.test.ts (turbopack)

  • ReactRefreshLogBox app turbo > Node.js builtins
  • ReactRefreshLogBox app turbo > Module not found
Expand output

● ReactRefreshLogBox app turbo › Node.js builtins

Application is in inconsistent state: timeout.

  93 |             }
  94 |             if (status !== 'pending') {
> 95 |               throw new Error(
     |                     ^
  96 |                 `Application is in inconsistent state: ${status}.`
  97 |               )
  98 |             }

  at Object.patch (lib/development-sandbox.ts:95:21)
  at Object.<anonymous> (development/acceptance-app/ReactRefreshLogBox-builtins.test.ts:40:5)

● ReactRefreshLogBox app turbo › Module not found

Application is in inconsistent state: timeout.

  93 |             }
  94 |             if (status !== 'pending') {
> 95 |               throw new Error(
     |                     ^
  96 |                 `Application is in inconsistent state: ${status}.`
  97 |               )
  98 |             }

  at Object.patch (lib/development-sandbox.ts:95:21)
  at Object.<anonymous> (development/acceptance-app/ReactRefreshLogBox-builtins.test.ts:82:5)

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

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

  • ReactRefreshRegression > can fast refresh a page with getStaticProps
  • ReactRefreshRegression > can fast refresh a page with getServerSideProps
Expand output

● ReactRefreshRegression › can fast refresh a page with getStaticProps

Application is in inconsistent state: timeout.

  93 |             }
  94 |             if (status !== 'pending') {
> 95 |               throw new Error(
     |                     ^
  96 |                 `Application is in inconsistent state: ${status}.`
  97 |               )
  98 |             }

  at Object.patch (lib/development-sandbox.ts:95:21)
  at Object.<anonymous> (development/acceptance/ReactRefreshRegression.test.ts:87:5)

● ReactRefreshRegression › can fast refresh a page with getServerSideProps

Application is in inconsistent state: timeout.

  93 |             }
  94 |             if (status !== 'pending') {
> 95 |               throw new Error(
     |                     ^
  96 |                 `Application is in inconsistent state: ${status}.`
  97 |               )
  98 |             }

  at Object.patch (lib/development-sandbox.ts:95:21)
  at Object.<anonymous> (development/acceptance/ReactRefreshRegression.test.ts:149:5)

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

pnpm test-dev-turbo test/development/acceptance-app/error-recovery.test.ts (turbopack)

  • Error recovery app turbo > client component can recover from a component error
  • Error recovery app turbo > stuck error
Expand output

● Error recovery app turbo › client component can recover from a component error

Application is in inconsistent state: timeout.

  93 |             }
  94 |             if (status !== 'pending') {
> 95 |               throw new Error(
     |                     ^
  96 |                 `Application is in inconsistent state: ${status}.`
  97 |               )
  98 |             }

  at Object.patch (lib/development-sandbox.ts:95:21)
  at development/acceptance-app/error-recovery.test.ts:201:7

● Error recovery app turbo › stuck error

Application is in inconsistent state: timeout.

  93 |             }
  94 |             if (status !== 'pending') {
> 95 |               throw new Error(
     |                     ^
  96 |                 `Application is in inconsistent state: ${status}.`
  97 |               )
  98 |             }

  at Object.patch (lib/development-sandbox.ts:95:21)
  at Object.<anonymous> (development/acceptance-app/error-recovery.test.ts:349:5)

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:43067/
Call log:
  - navigating to "http://localhost:43067/", 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.

pnpm test test/integration/env-config/test/index.test.js (turbopack)

  • Env Config > development mode > with hot reload > should trigger HMR correctly when NEXT_PUBLIC_ env is changed
Expand output

● Env Config › development mode › with hot reload › should trigger HMR correctly when NEXT_PUBLIC_ env is changed

TIMED OUT: replaced

overridden

undefined

  735 |
  736 |   if (hardError) {
> 737 |     throw new Error('TIMED OUT: ' + regex + '\n\n' + content + '\n\n' + lastErr)
      |           ^
  738 |   }
  739 |   return false
  740 | }

  at check (lib/next-test-utils.ts:737:11)
  at Object.<anonymous> (integration/env-config/test/index.test.js:348:13)

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 18.1s 15.3s N/A
buildDurationCached 14.3s 12.1s N/A
nodeModulesSize 419 MB 419 MB N/A
nextStartRea..uration (ms) 431ms 418ms N/A
Client Bundles (main, webpack)
vercel/next.js canary vercel/next.js sokra/lazy-connect Change
5306-HASH.js gzip 54.1 kB 54.1 kB N/A
8276.HASH.js gzip 169 B 168 B N/A
8377-HASH.js gzip 5.46 kB 5.46 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 243 B N/A
main-HASH.js gzip 34.6 kB 34.6 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.59 kB 4.58 kB N/A
index-HASH.js gzip 268 B 268 B
link-HASH.js gzip 2.35 kB 2.35 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 748 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 523 B 523 B
link.html gzip 538 B 539 B N/A
withRouter.html gzip 518 B 521 B N/A
Overall change 523 B 523 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 210 kB 210 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 668 B 666 B N/A
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 844 B 844 B
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 378 kB 378 kB
app-page-exp..prod.js gzip 132 kB 132 kB
app-page-tur..prod.js gzip 145 kB 145 kB
app-page-tur..prod.js gzip 141 kB 141 kB
app-page.run...dev.js gzip 365 kB 365 kB
app-page.run..prod.js gzip 128 kB 128 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.9 kB 21.9 kB
pages.runtim...dev.js gzip 27.7 kB 27.7 kB
pages.runtim..prod.js gzip 21.9 kB 21.9 kB
server.runti..prod.js gzip 916 kB 916 kB
Overall change 2.49 MB 2.49 MB
build cache Overall increase ⚠️
vercel/next.js canary vercel/next.js sokra/lazy-connect Change
0.pack gzip 2.1 MB 2.11 MB ⚠️ +4.9 kB
index.pack gzip 75.2 kB 75 kB N/A
Overall change 2.1 MB 2.11 MB ⚠️ +4.9 kB
Diff details
Diff for main-HASH.js

Diff too large to display

Commit: 4c56daf

@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
@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 2 times, most recently from 118a2af to 5902f72 Compare January 15, 2025 06:36
@sokra sokra changed the base branch from canary to sokra/optimize-based-on-follower January 15, 2025 06:36
@sokra sokra marked this pull request as draft January 15, 2025 06:40
@sokra sokra force-pushed the sokra/optimize-based-on-follower branch 2 times, most recently from 32115b0 to d8f6879 Compare January 15, 2025 06:46
@sokra sokra force-pushed the sokra/lazy-connect branch from 5902f72 to dd58bc4 Compare January 15, 2025 06:46
@sokra sokra changed the base branch from sokra/optimize-based-on-follower to graphite-base/74773 January 15, 2025 07:19
@sokra sokra force-pushed the graphite-base/74773 branch from d8f6879 to 2f4610e Compare January 15, 2025 07:19
@sokra sokra force-pushed the sokra/lazy-connect branch from dd58bc4 to e15f24b Compare January 15, 2025 07:19
@sokra sokra changed the base branch from graphite-base/74773 to canary January 15, 2025 07:20
@sokra sokra force-pushed the sokra/lazy-connect branch from e15f24b to 64c5f96 Compare January 15, 2025 07:20
@sokra sokra force-pushed the sokra/lazy-connect branch from 64c5f96 to 4c56daf Compare January 24, 2025 13:25
# for free to join this conversation on GitHub. Already have an account? # 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