diff --git a/.changeset/brown-crabs-tap.md b/.changeset/brown-crabs-tap.md new file mode 100644 index 0000000000..29c34ce0cb --- /dev/null +++ b/.changeset/brown-crabs-tap.md @@ -0,0 +1,6 @@ +--- +'@backstage/plugin-catalog-backend-module-bitbucket-server': minor +'@backstage/backend-defaults': minor +--- + +Remove Throttle of Bitbucket Server API calls diff --git a/packages/backend-defaults/package.json b/packages/backend-defaults/package.json index bb4aca1f8b..380bb65324 100644 --- a/packages/backend-defaults/package.json +++ b/packages/backend-defaults/package.json @@ -173,7 +173,6 @@ "node-fetch": "^2.7.0", "node-forge": "^1.3.1", "p-limit": "^3.1.0", - "p-throttle": "^4.1.1", "path-to-regexp": "^8.0.0", "pg": "^8.11.3", "pg-connection-string": "^2.3.0", diff --git a/packages/backend-defaults/src/entrypoints/urlReader/lib/BitbucketServerUrlReader.ts b/packages/backend-defaults/src/entrypoints/urlReader/lib/BitbucketServerUrlReader.ts index 0a838af68b..3482bdf4bd 100644 --- a/packages/backend-defaults/src/entrypoints/urlReader/lib/BitbucketServerUrlReader.ts +++ b/packages/backend-defaults/src/entrypoints/urlReader/lib/BitbucketServerUrlReader.ts @@ -41,20 +41,6 @@ import { Minimatch } from 'minimatch'; import { ReaderFactory, ReadTreeResponseFactory } from './types'; import { ReadUrlResponseFactory } from './ReadUrlResponseFactory'; -import pThrottle from 'p-throttle'; - -// 1 per second -const throttle = pThrottle({ - limit: 1, - interval: 1000, -}); - -const throttledFetch = throttle( - async (url: RequestInfo, options?: RequestInit) => { - return await fetch(url, options); - }, -); - /** * Implements a {@link @backstage/backend-plugin-api#UrlReaderService} for files from Bitbucket Server APIs. * @@ -97,7 +83,7 @@ export class BitbucketServerUrlReader implements UrlReaderService { let response: Response; try { - response = await throttledFetch(bitbucketUrl.toString(), { + response = await fetch(bitbucketUrl.toString(), { headers: { ...requestOptions.headers, ...(etag && { 'If-None-Match': etag }), @@ -147,7 +133,7 @@ export class BitbucketServerUrlReader implements UrlReaderService { url, this.integration.config, ); - const archiveResponse = await throttledFetch( + const archiveResponse = await fetch( downloadUrl, getBitbucketServerRequestOptions(this.integration.config), ); @@ -244,7 +230,7 @@ export class BitbucketServerUrlReader implements UrlReaderService { // https://docs.atlassian.com/bitbucket-server/rest/7.9.0/bitbucket-rest.html#idp211 (branches docs) const branchListUrl = `${this.integration.config.apiBaseUrl}/projects/${project}/repos/${repoName}/branches${branchParameter}`; - const branchListResponse = await throttledFetch( + const branchListResponse = await fetch( branchListUrl, getBitbucketServerRequestOptions(this.integration.config), ); diff --git a/plugins/catalog-backend-module-bitbucket-server/package.json b/plugins/catalog-backend-module-bitbucket-server/package.json index 8833541b4e..542edf45c5 100644 --- a/plugins/catalog-backend-module-bitbucket-server/package.json +++ b/plugins/catalog-backend-module-bitbucket-server/package.json @@ -55,7 +55,6 @@ "@backstage/plugin-catalog-common": "workspace:^", "@backstage/plugin-catalog-node": "workspace:^", "@backstage/plugin-events-node": "workspace:^", - "p-throttle": "^4.1.1", "uuid": "^11.0.0" }, "devDependencies": { diff --git a/plugins/catalog-backend-module-bitbucket-server/src/lib/BitbucketServerClient.ts b/plugins/catalog-backend-module-bitbucket-server/src/lib/BitbucketServerClient.ts index 70e791c992..bd4cbe92e1 100644 --- a/plugins/catalog-backend-module-bitbucket-server/src/lib/BitbucketServerClient.ts +++ b/plugins/catalog-backend-module-bitbucket-server/src/lib/BitbucketServerClient.ts @@ -18,7 +18,6 @@ import { BitbucketServerIntegrationConfig, getBitbucketServerRequestOptions, } from '@backstage/integration'; -import pThrottle from 'p-throttle'; import { BitbucketServerDefaultBranch, BitbucketServerRepository, @@ -27,18 +26,6 @@ import { BitbucketServerProject } from './types'; import { NotFoundError } from '@backstage/errors'; import { ResponseError } from '@backstage/errors'; -// 1 per second -const throttle = pThrottle({ - limit: 1, - interval: 1000, -}); - -const throttledFetch = throttle( - async (url: RequestInfo, options?: RequestInit) => { - return await fetch(url, options); - }, -); - /** * A client for interacting with a Bitbucket Server instance * @@ -83,8 +70,9 @@ export class BitbucketServerClient { repo: string; path: string; }): Promise { - return throttledFetch( - `${this.config.apiBaseUrl}/projects/${options.projectKey}/repos/${options.repo}/raw/${options.path}`, + const base = new URL(this.config.apiBaseUrl); + return fetch( + `${base.protocol}//${base.host}/projects/${options.projectKey}/repos/${options.repo}/raw/${options.path}`, getBitbucketServerRequestOptions(this.config), ); } @@ -94,7 +82,7 @@ export class BitbucketServerClient { repo: string; }): Promise { const request = `${this.config.apiBaseUrl}/projects/${options.projectKey}/repos/${options.repo}`; - const response = await throttledFetch( + const response = await fetch( request, getBitbucketServerRequestOptions(this.config), ); @@ -163,17 +151,16 @@ export class BitbucketServerClient { } private async request(req: Request): Promise { - return throttledFetch( - req, - getBitbucketServerRequestOptions(this.config), - ).then((response: Response) => { - if (!response.ok) { - throw new Error( - `Unexpected response for ${req.method} ${req.url}. Expected 200 but got ${response.status} - ${response.statusText}`, - ); - } - return response; - }); + return fetch(req, getBitbucketServerRequestOptions(this.config)).then( + (response: Response) => { + if (!response.ok) { + throw new Error( + `Unexpected response for ${req.method} ${req.url}. Expected 200 but got ${response.status} - ${response.statusText}`, + ); + } + return response; + }, + ); } } diff --git a/yarn.lock b/yarn.lock index b9ad8a7a87..e12042f2b8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3617,7 +3617,6 @@ __metadata: node-forge: "npm:^1.3.1" node-mocks-http: "npm:^1.0.0" p-limit: "npm:^3.1.0" - p-throttle: "npm:^4.1.1" path-to-regexp: "npm:^8.0.0" pg: "npm:^8.11.3" pg-connection-string: "npm:^2.3.0" @@ -5814,7 +5813,6 @@ __metadata: "@backstage/plugin-events-node": "workspace:^" luxon: "npm:^3.0.0" msw: "npm:^1.0.0" - p-throttle: "npm:^4.1.1" uuid: "npm:^11.0.0" languageName: unknown linkType: soft