diff --git a/CHANGELOG.md b/CHANGELOG.md index dcf5a995afc..b63771a5d5f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,10 @@ The version headers in this history reflect the versions of Apollo Server itself - [__CHANGELOG for `@apollo/gateway`__](https://github.com/apollographql/apollo-server/blob/master/packages/apollo-gateway/CHANGELOG.md) - [__CHANGELOG for `@apollo/federation`__](https://github.com/apollographql/apollo-server/blob/master/packages/apollo-federation/CHANGELOG.md) +### vNext + +- `apollo-engine-reporting`: Add environment variable `APOLLO_SCHEMA_REPORTING` that can enable schema reporting. If `experimental__schemaReporting` is set it will override the environment variables. + ### v2.14.3 - This release only includes patch updates to dependencies. diff --git a/packages/apollo-engine-reporting/src/__tests__/plugin.test.ts b/packages/apollo-engine-reporting/src/__tests__/plugin.test.ts index f56038aa375..70a85d48fb4 100644 --- a/packages/apollo-engine-reporting/src/__tests__/plugin.test.ts +++ b/packages/apollo-engine-reporting/src/__tests__/plugin.test.ts @@ -58,14 +58,13 @@ describe('schema reporting', () => { it('starts reporting if enabled', async () => { const pluginInstance = plugin( - { - experimental_schemaReporting: true, - }, + {}, addTrace, { startSchemaReporting, executableSchemaIdGenerator, - }, + schemaReport: true, + } ); await pluginTestHarness({ @@ -97,13 +96,13 @@ describe('schema reporting', () => { it('uses the override schema', async () => { const pluginInstance = plugin( { - experimental_schemaReporting: true, experimental_overrideReportedSchema: typeDefs, }, addTrace, { startSchemaReporting, executableSchemaIdGenerator, + schemaReport: true, }, ); @@ -145,14 +144,13 @@ describe('schema reporting', () => { it('uses the same executable schema id for metric reporting', async () => { const pluginInstance = plugin( - { - experimental_schemaReporting: true, - }, + {}, addTrace, { startSchemaReporting, executableSchemaIdGenerator, - }, + schemaReport: true, + } ); await pluginTestHarness({ diff --git a/packages/apollo-engine-reporting/src/agent.ts b/packages/apollo-engine-reporting/src/agent.ts index b6b91f830d1..2b99153ce8d 100644 --- a/packages/apollo-engine-reporting/src/agent.ts +++ b/packages/apollo-engine-reporting/src/agent.ts @@ -389,6 +389,7 @@ export class EngineReportingAgent { }; private readonly tracesEndpointUrl: string; + private readonly schemaReport: boolean; public constructor(options: EngineReportingOptions = {}) { this.options = options; @@ -407,6 +408,13 @@ export class EngineReportingAgent { ); } + + if (options.experimental_schemaReporting !== undefined) { + this.schemaReport = options.experimental_schemaReporting; + } else { + this.schemaReport = process.env.APOLLO_SCHEMA_REPORTING === "true" + } + // Since calculating the signature for Engine reporting is potentially an // expensive operation, we'll cache the signatures we generate and re-use // them based on repeated traces for the same `queryHash`. @@ -469,6 +477,7 @@ export class EngineReportingAgent { return plugin(this.options, this.addTrace.bind(this), { startSchemaReporting: this.startSchemaReporting.bind(this), executableSchemaIdGenerator: this.executableSchemaIdGenerator.bind(this), + schemaReport: this.schemaReport, }); } diff --git a/packages/apollo-engine-reporting/src/plugin.ts b/packages/apollo-engine-reporting/src/plugin.ts index b960df381df..15f242073ca 100644 --- a/packages/apollo-engine-reporting/src/plugin.ts +++ b/packages/apollo-engine-reporting/src/plugin.ts @@ -34,6 +34,7 @@ export const plugin = ( { startSchemaReporting, executableSchemaIdGenerator, + schemaReport, }: { startSchemaReporting: ({ executableSchema, @@ -43,6 +44,7 @@ export const plugin = ( executableSchemaId: string; }) => void; executableSchemaIdGenerator: (schema: string | GraphQLSchema) => string; + schemaReport: boolean; }, ): ApolloServerPlugin => { /** @@ -57,7 +59,7 @@ export const plugin = ( return { serverWillStart: function({ schema }) { - if (!options.experimental_schemaReporting) return; + if (!schemaReport) return; startSchemaReporting({ executableSchema: options.experimental_overrideReportedSchema || printSchema(schema),