diff --git a/.changeset/happy-garlics-cross.md b/.changeset/happy-garlics-cross.md new file mode 100644 index 000000000..6d4d833d3 --- /dev/null +++ b/.changeset/happy-garlics-cross.md @@ -0,0 +1,5 @@ +--- +'hive': patch +--- + +Gracefully handle error when publish lock acquisition fails for clients not supporting retries. diff --git a/packages/services/api/src/modules/schema/providers/schema-publisher.ts b/packages/services/api/src/modules/schema/providers/schema-publisher.ts index 39ed8e147..4a1edcc54 100644 --- a/packages/services/api/src/modules/schema/providers/schema-publisher.ts +++ b/packages/services/api/src/modules/schema/providers/schema-publisher.ts @@ -1298,10 +1298,24 @@ export class SchemaPublisher { }, ) .catch((error: unknown) => { - if (error instanceof MutexResourceLockedError && input.supportsRetry === true) { + if (error instanceof MutexResourceLockedError) { + if (input.supportsRetry === true) { + return { + __typename: 'SchemaPublishRetry', + reason: 'Another schema publish is currently in progress.', + } satisfies PublishResult; + } + return { - __typename: 'SchemaPublishRetry', - reason: 'Another schema publish is currently in progress.', + __typename: 'SchemaPublishError', + valid: false, + changes: [], + errors: [ + { + message: + 'Another schema publish is currently in progress. Please retry the publish.', + }, + ], } satisfies PublishResult; }