From d6deb5e440afb16aab5579dabb5d304a3527a83b Mon Sep 17 00:00:00 2001 From: Nicolas Arnold Date: Fri, 25 Feb 2022 13:04:57 +0000 Subject: [PATCH] Set timeout for scaffolder octokit client If a client fails to contact github (or the network connectivity is bad), there is no reasonible timeout for the Octokit client. This change here adds a default timeout of 60 seconds Here is a link to the octokit type definition: https://github.com/octokit/types.ts/blob/master/src/RequestRequestOptions.ts Signed-off-by: Nicolas Arnold --- .changeset/khaki-socks-wash.md | 5 +++++ .../src/scaffolder/actions/builtin/github/helpers.ts | 7 +++++++ 2 files changed, 12 insertions(+) create mode 100644 .changeset/khaki-socks-wash.md diff --git a/.changeset/khaki-socks-wash.md b/.changeset/khaki-socks-wash.md new file mode 100644 index 0000000000..241ac75be3 --- /dev/null +++ b/.changeset/khaki-socks-wash.md @@ -0,0 +1,5 @@ +--- +'@backstage/plugin-scaffolder-backend': patch +--- + +Set timeout for scaffolder octokit client diff --git a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/helpers.ts b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/helpers.ts index c310389488..8354d50471 100644 --- a/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/helpers.ts +++ b/plugins/scaffolder-backend/src/scaffolder/actions/builtin/github/helpers.ts @@ -22,6 +22,8 @@ import { import { OctokitOptions } from '@octokit/core/dist-types/types'; import { parseRepoUrl } from '../publish/util'; +const SECOND = 1000; + export async function getOctokitOptions(options: { integrations: ScmIntegrationRegistry; credentialsProvider?: GithubCredentialsProvider; @@ -30,6 +32,10 @@ export async function getOctokitOptions(options: { }): Promise { const { integrations, credentialsProvider, repoUrl, token } = options; const { owner, repo, host } = parseRepoUrl(repoUrl, integrations); + const requestOptions = { + // set timeout to 60 seconds + timeout: 60 * SECOND, + }; if (!owner) { throw new InputError(`No owner provided for repo ${repoUrl}`); @@ -47,6 +53,7 @@ export async function getOctokitOptions(options: { auth: token, baseUrl: integrationConfig.apiBaseUrl, previews: ['nebula-preview'], + request: requestOptions, }; }