From 5e5b41361ecb96765b6f696090662c5aca9e9495 Mon Sep 17 00:00:00 2001 From: Matt Kane Date: Tue, 28 Jul 2020 11:49:08 +0100 Subject: [PATCH] fix(gatsby): Defer node mutation in more APIs (#26067) --- packages/gatsby/src/services/create-pages.ts | 2 ++ packages/gatsby/src/services/customize-schema.ts | 2 ++ packages/gatsby/src/services/post-bootstrap.ts | 6 +++++- packages/gatsby/src/state-machines/develop/index.ts | 1 + packages/gatsby/src/utils/create-schema-customization.ts | 3 +++ packages/gatsby/src/utils/start-server.ts | 2 +- 6 files changed, 14 insertions(+), 2 deletions(-) diff --git a/packages/gatsby/src/services/create-pages.ts b/packages/gatsby/src/services/create-pages.ts index 797da30ecce66..da12b51c9a064 100644 --- a/packages/gatsby/src/services/create-pages.ts +++ b/packages/gatsby/src/services/create-pages.ts @@ -9,6 +9,7 @@ export async function createPages({ parentSpan, gatsbyNodeGraphQLFunction, store, + deferNodeMutation, }: Partial): Promise<{ deletedPages: string[] changedPages: string[] @@ -28,6 +29,7 @@ export async function createPages({ traceId: `initial-createPages`, waitForCascadingActions: true, parentSpan: activity.span, + deferNodeMutation, }, { activity } ) diff --git a/packages/gatsby/src/services/customize-schema.ts b/packages/gatsby/src/services/customize-schema.ts index e9dcf4328439b..fd1a2afdd2a0b 100644 --- a/packages/gatsby/src/services/customize-schema.ts +++ b/packages/gatsby/src/services/customize-schema.ts @@ -4,6 +4,7 @@ import { IDataLayerContext } from "../state-machines/data-layer/types" export async function customizeSchema({ parentSpan, + deferNodeMutation, refresh, // webhookBody,//coming soon }: Partial): Promise { const activity = reporter.activityTimer(`createSchemaCustomization`, { @@ -13,6 +14,7 @@ export async function customizeSchema({ await createSchemaCustomization({ parentSpan, refresh, + deferNodeMutation, // webhookBody, }) activity.end() diff --git a/packages/gatsby/src/services/post-bootstrap.ts b/packages/gatsby/src/services/post-bootstrap.ts index 58fd98b4b82dd..30f5e349df8a5 100644 --- a/packages/gatsby/src/services/post-bootstrap.ts +++ b/packages/gatsby/src/services/post-bootstrap.ts @@ -6,12 +6,16 @@ import { boundActionCreators } from "../redux/actions" export async function postBootstrap({ parentSpan, + deferNodeMutation, }: Partial): Promise { const activity = reporter.activityTimer(`onPostBootstrap`, { parentSpan, }) activity.start() - await apiRunnerNode(`onPostBootstrap`, { parentSpan: activity.span }) + await apiRunnerNode(`onPostBootstrap`, { + parentSpan: activity.span, + deferNodeMutation, + }) activity.end() reporter.info(reporter.stripIndent` diff --git a/packages/gatsby/src/state-machines/develop/index.ts b/packages/gatsby/src/state-machines/develop/index.ts index 6c04a4b12c323..ab05e0ee913b0 100644 --- a/packages/gatsby/src/state-machines/develop/index.ts +++ b/packages/gatsby/src/state-machines/develop/index.ts @@ -237,6 +237,7 @@ const developConfig: MachineConfig = { parentSpan, store, webhookBody, + refresh: true, deferNodeMutation: true, } }, diff --git a/packages/gatsby/src/utils/create-schema-customization.ts b/packages/gatsby/src/utils/create-schema-customization.ts index cd4e28be78a93..2182000ab2de1 100644 --- a/packages/gatsby/src/utils/create-schema-customization.ts +++ b/packages/gatsby/src/utils/create-schema-customization.ts @@ -5,15 +5,18 @@ import { Span } from "opentracing" export const createSchemaCustomization = async ({ refresh = false, parentSpan, + deferNodeMutation, }: { refresh?: boolean parentSpan?: Span + deferNodeMutation?: boolean }): Promise => { if (refresh) { store.dispatch({ type: `CLEAR_SCHEMA_CUSTOMIZATION` }) } await apiRunnerNode(`createSchemaCustomization`, { parentSpan, + deferNodeMutation, traceId: !refresh ? `initial-createSchemaCustomization` : `refresh-createSchemaCustomization`, diff --git a/packages/gatsby/src/utils/start-server.ts b/packages/gatsby/src/utils/start-server.ts index 8a65a2588d6af..3d4dd6919028b 100644 --- a/packages/gatsby/src/utils/start-server.ts +++ b/packages/gatsby/src/utils/start-server.ts @@ -270,7 +270,7 @@ export async function startServer( }, cors()) } - await apiRunnerNode(`onCreateDevServer`, { app }) + await apiRunnerNode(`onCreateDevServer`, { app, deferNodeMutation: true }) // In case nothing before handled hot-update - send 404. // This fixes "Unexpected token < in JSON at position 0" runtime