-
Notifications
You must be signed in to change notification settings - Fork 2k
Closed
Milestone
Description
apollo-server/packages/apollo-server-core/src/requestPipeline.ts
Lines 247 to 250 in 54416e2
requestContext.document = parse(query, config.parseOptions); | |
await parsingDidEnd(); | |
} catch (syntaxError) { | |
await parsingDidEnd(syntaxError as Error); |
apollo-server/packages/apollo-server-core/src/requestPipeline.ts
Lines 436 to 441 in 54416e2
await executionDispatcher.invokeHook('executionDidEnd'); | |
} catch (executionError) { | |
await executionDispatcher.invokeHook( | |
'executionDidEnd', | |
executionError as Error, | |
); |
In (at least) these two cases, if the end hook itself throws, we then call it again in the catch block (but with no try/catch if it throws!). I'd say these try/catches incorrectly assume that the hook won't throw, but we should be prepared for it to throw and handle it gracefully.
This probably means calling the hook after the try/catch or something else which doesn't result in the end hook possibly being called twice.
Metadata
Metadata
Assignees
Labels
No labels
Type
Projects
Relationships
Development
Select code repository
Activity
[-]Handle hook-thrown errors correctly[/-][+]Handle end-hook-thrown errors correctly[/+]executionDidEnd
hooks are only called once #6846trevor-scheer commentedon Aug 24, 2022
#6846