From 21a731da71fe1ddae6a73a545128dc7491a74c88 Mon Sep 17 00:00:00 2001 From: Ben Heidemann <56122437+bcheidemann@users.noreply.github.com> Date: Tue, 6 Sep 2022 23:00:39 +0100 Subject: [PATCH 1/2] feat: add experimental proxy timeout option --- packages/next/server/config-schema.ts | 4 ++++ packages/next/server/config-shared.ts | 2 ++ packages/next/server/next-server.ts | 7 ++++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/packages/next/server/config-schema.ts b/packages/next/server/config-schema.ts index 3cf35582ee5e..1ed39ed3c9e6 100644 --- a/packages/next/server/config-schema.ts +++ b/packages/next/server/config-schema.ts @@ -320,6 +320,10 @@ const configSchema = { profiling: { type: 'boolean', }, + proxyTimeout: { + minimum: 0, + type: 'number', + }, runtime: { // automatic typing doesn't like enum enum: ['experimental-edge', 'nodejs'] as any, diff --git a/packages/next/server/config-shared.ts b/packages/next/server/config-shared.ts index 61d92edc6bd0..b0bf627bfb9d 100644 --- a/packages/next/server/config-shared.ts +++ b/packages/next/server/config-shared.ts @@ -90,6 +90,7 @@ export interface ExperimentalConfig { cpus?: number sharedPool?: boolean profiling?: boolean + proxyTimeout?: number isrFlushToDisk?: boolean workerThreads?: boolean pageEnv?: boolean @@ -550,6 +551,7 @@ export const defaultConfig: NextConfig = { isrFlushToDisk: true, workerThreads: false, pageEnv: false, + proxyTimeout: undefined, optimizeCss: false, nextScriptWorkers: false, scrollRestoration: false, diff --git a/packages/next/server/next-server.ts b/packages/next/server/next-server.ts index 5e39ac360fc7..4b307dadb5c1 100644 --- a/packages/next/server/next-server.ts +++ b/packages/next/server/next-server.ts @@ -697,7 +697,12 @@ export default class NextNodeServer extends BaseServer { ws: true, // we limit proxy requests to 30s by default, in development // we don't time out WebSocket requests to allow proxying - proxyTimeout: upgradeHead && this.renderOpts.dev ? undefined : 30_000, + proxyTimeout: + upgradeHead && this.renderOpts.dev + ? undefined + : 'proxyTimeout' in this.nextConfig.experimental + ? this.nextConfig.experimental.proxyTimeout + : 30_000, }) await new Promise((proxyResolve, proxyReject) => { From 90e863d9caceaeaf65cd3d1defb172826ad49575 Mon Sep 17 00:00:00 2001 From: Ben Heidemann <56122437+bcheidemann@users.noreply.github.com> Date: Tue, 6 Sep 2022 23:42:38 +0100 Subject: [PATCH 2/2] fix condition always truthy --- packages/next/server/next-server.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/packages/next/server/next-server.ts b/packages/next/server/next-server.ts index 4b307dadb5c1..304b59778fe1 100644 --- a/packages/next/server/next-server.ts +++ b/packages/next/server/next-server.ts @@ -700,9 +700,7 @@ export default class NextNodeServer extends BaseServer { proxyTimeout: upgradeHead && this.renderOpts.dev ? undefined - : 'proxyTimeout' in this.nextConfig.experimental - ? this.nextConfig.experimental.proxyTimeout - : 30_000, + : this.nextConfig.experimental.proxyTimeout || 30_000, }) await new Promise((proxyResolve, proxyReject) => {