Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/build/resolveOpenAPI.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import {DeRefedOpenAPI} from './open-api/types';

// SENTRY_API_SCHEMA_SHA is used in the sentry-docs GHA workflow in getsentry/sentry-api-schema.
// DO NOT change variable name unless you change it in the sentry-docs GHA workflow in getsentry/sentry-api-schema.
const SENTRY_API_SCHEMA_SHA = 'd218ebe064fe5ec8cb383688e80cbf36c0a6a5e8';
const SENTRY_API_SCHEMA_SHA = '43a08415e12ae4aa680595d1bef5cd69527156c9';

Copy link

Choose a reason for hiding this comment

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

Bug: The OpenAPI schema fetch logic lacks error handling for HTTP failures and does not validate the response structure, which can crash the build process.
Severity: MEDIUM

Suggested Fix

Implement robust error handling around the fetch call. Check if response.ok is true before calling response.json() to handle non-2xx HTTP statuses. Additionally, wrap the fetch and parsing logic in a try...catch block. Before using the parsed data, validate that required properties like tags and paths exist to prevent runtime errors.

Prompt for AI Agent
Review the code at the location below. A potential bug has been identified by an AI
agent.
Verify if this is a real issue. If it is, propose a fix; if not, explain why it's not
valid.

Location: src/build/resolveOpenAPI.ts#L12

Potential issue: The `resolveOpenAPI` function fetches a JSON schema from a remote URL
but does not handle potential failures. It lacks checks for HTTP errors (like 404 Not
Found) before attempting to parse the response body. Furthermore, downstream code in
`apiCategoriesUncached` directly accesses properties like `data.tags` and `data.paths`
without validating their existence. If the remote file is missing, the network request
fails, or the JSON structure is unexpected, the application will throw a runtime error
during the build process, causing the entire build to fail.

Did we get this right? 👍 / 👎 to inform future reviews.

const activeEnv = process.env.GATSBY_ENV || process.env.NODE_ENV || 'development';

Expand Down
Loading