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

Remove leftover worker code and types #55383

Merged
merged 2 commits into from Sep 14, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
5 changes: 2 additions & 3 deletions packages/next/src/server/lib/router-server.ts
@@ -1,5 +1,4 @@
import type { IncomingMessage } from 'http'
import type { createWorker } from './server-ipc'

// this must come first as it includes require hooks
import type {
Expand Down Expand Up @@ -52,8 +51,8 @@ export type RenderWorker = Pick<
>

export interface RenderWorkers {
app?: Awaited<ReturnType<typeof createWorker>>
pages?: Awaited<ReturnType<typeof createWorker>>
app?: RenderWorker
pages?: RenderWorker
}

const devInstances: Record<
Expand Down
66 changes: 0 additions & 66 deletions packages/next/src/server/lib/server-ipc/index.ts
@@ -1,14 +1,8 @@
import type NextServer from '../../next-server'
import type { NextConfigComplete } from '../../config-shared'
import type { RenderWorker } from '../router-server'

import { getNodeOptionsWithoutInspect } from '../utils'
import { errorToJSON } from '../../render'
import crypto from 'crypto'
import isError from '../../../lib/is-error'
import { genRenderExecArgv } from '../worker-utils'
import { deserializeErr } from './request-utils'
import type { Env } from '@next/env'

// we can't use process.send as jest-worker relies on
// it already and can cause unexpected message errors
Expand Down Expand Up @@ -82,63 +76,3 @@ export async function createIpcServer(
ipcValidationKey,
}
}

export const createWorker = async (
ipcPort: number,
ipcValidationKey: string,
isNodeDebugging: boolean | 'brk' | undefined,
type: 'pages' | 'app',
nextConfig: NextConfigComplete,
initialEnv: NodeJS.ProcessEnv | Env = process.env
): Promise<RenderWorker> => {
const useServerActions = !!nextConfig.experimental.serverActions
const { Worker } =
require('next/dist/compiled/jest-worker') as typeof import('next/dist/compiled/jest-worker')

const worker = new Worker(require.resolve('../render-server'), {
numWorkers: 1,
// TODO: do we want to allow more than 8 OOM restarts?
maxRetries: 8,
forkOptions: {
env: {
FORCE_COLOR: '1',
...initialEnv,
// we don't pass down NODE_OPTIONS as it can
// allow more memory usage than expected
NODE_OPTIONS: getNodeOptionsWithoutInspect()
.replace(/--max-old-space-size=[\d]{1,}/, '')
.trim(),
__NEXT_PRIVATE_RENDER_WORKER: type,
__NEXT_PRIVATE_RENDER_WORKER_CONFIG: JSON.stringify(nextConfig),
__NEXT_PRIVATE_ROUTER_IPC_PORT: ipcPort + '',
__NEXT_PRIVATE_ROUTER_IPC_KEY: ipcValidationKey,
__NEXT_PRIVATE_STANDALONE_CONFIG:
process.env.__NEXT_PRIVATE_STANDALONE_CONFIG,
NODE_ENV: process.env.NODE_ENV,
__NEXT_PRIVATE_PREBUNDLED_REACT:
type === 'app'
? useServerActions
? 'experimental'
: 'next'
: undefined,
...(process.env.NEXT_CPU_PROF
? { __NEXT_PRIVATE_CPU_PROFILE: `CPU.${type}-renderer` }
: {}),
},
execArgv: await genRenderExecArgv(isNodeDebugging, type),
},
exposedMethods: [
'initialize',
'deleteCache',
'deleteAppClientCache',
'clearModuleContext',
'propagateServerField',
],
}) as any as RenderWorker &
InstanceType<typeof import('next/dist/compiled/jest-worker').Worker>

worker.getStderr().pipe(process.stderr)
worker.getStdout().pipe(process.stdout)

return worker
}
22 changes: 0 additions & 22 deletions packages/next/src/server/lib/utils.ts
Expand Up @@ -23,28 +23,6 @@ export const getDebugPort = () => {
return debugPortStr ? parseInt(debugPortStr, 10) : 9229
}

export const genRouterWorkerExecArgv = async (
isNodeDebugging: boolean | 'brk'
) => {
const execArgv = process.execArgv.filter((localArg) => {
return (
!localArg.startsWith('--inspect') && !localArg.startsWith('--inspect-brk')
)
})

if (isNodeDebugging) {
let debugPort = getDebugPort() + 1

// Process will log it's own debugger port

execArgv.push(
`--inspect${isNodeDebugging === 'brk' ? '-brk' : ''}=${debugPort}`
)
}

return execArgv
}

const NODE_INSPECT_RE = /--inspect(-brk)?(=\S+)?( |$)/
export function getNodeOptionsWithoutInspect() {
return (process.env.NODE_OPTIONS || '').replace(NODE_INSPECT_RE, '')
Expand Down
42 changes: 0 additions & 42 deletions packages/next/src/server/lib/worker-utils.ts
@@ -1,6 +1,4 @@
import * as Log from '../../build/output/log'
import http from 'http'
import { getDebugPort } from './utils'

export const getFreePort = async (): Promise<number> => {
return new Promise((resolve, reject) => {
Expand All @@ -17,43 +15,3 @@ export const getFreePort = async (): Promise<number> => {
})
})
}

export const genRenderExecArgv = async (
isNodeDebugging: string | boolean | undefined,
type: 'pages' | 'app'
) => {
const execArgv = process.execArgv.filter((localArg) => {
return (
!localArg.startsWith('--inspect') && !localArg.startsWith('--inspect-brk')
)
})

if (isNodeDebugging) {
const isDebugging =
process.execArgv.some((localArg) => localArg.startsWith('--inspect')) ||
process.env.NODE_OPTIONS?.match?.(/--inspect(=\S+)?( |$)/)

const isDebuggingWithBrk =
process.execArgv.some((localArg) =>
localArg.startsWith('--inspect-brk')
) || process.env.NODE_OPTIONS?.match?.(/--inspect-brk(=\S+)?( |$)/)

if (isDebugging || isDebuggingWithBrk) {
let debugPort = getDebugPort()

debugPort += type === 'pages' ? 1 : 2

Log.info(
`the --inspect${
isDebuggingWithBrk ? '-brk' : ''
} option was detected, the Next.js server${
type === 'pages' ? ' for pages' : type === 'app' ? ' for app' : ''
} should be inspected at port ${debugPort}.`
)

execArgv.push(`--inspect${isDebuggingWithBrk ? '-brk' : ''}=${debugPort}`)
}
}

return execArgv
}
5 changes: 1 addition & 4 deletions packages/next/src/server/server-utils.ts
Expand Up @@ -114,10 +114,7 @@ export function getUtils({
defaultRouteMatches = dynamicRouteMatcher(page) as ParsedUrlQuery
}

function handleRewrites(
req: BaseNextRequest | IncomingMessage,
parsedUrl: UrlWithParsedQuery
) {
function handleRewrites(req: BaseNextRequest, parsedUrl: UrlWithParsedQuery) {
Copy link
Member Author

Choose a reason for hiding this comment

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

handleRewrites is nowadays only called with BaseNextRequest.

const rewriteParams = {}
let fsPathname = parsedUrl.pathname

Expand Down