From 05508a9757d24059928cd800e9b12643c1f98e5f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fredrik=20Adel=C3=B6w?= Date: Thu, 14 Sep 2023 14:58:16 +0200 Subject: [PATCH 1/2] do not create duplicate db connection pools in the old backend MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Fredrik Adelöw --- .changeset/angry-ghosts-brush.md | 13 +++++++++++++ .changeset/thin-ladybugs-lick.md | 5 +++++ .../src/database/DatabaseManager.ts | 19 ++++++------------- packages/backend/src/index.ts | 2 +- .../default-app/packages/backend/src/index.ts | 2 +- 5 files changed, 26 insertions(+), 15 deletions(-) create mode 100644 .changeset/angry-ghosts-brush.md create mode 100644 .changeset/thin-ladybugs-lick.md diff --git a/.changeset/angry-ghosts-brush.md b/.changeset/angry-ghosts-brush.md new file mode 100644 index 0000000000..e1f3d7bc04 --- /dev/null +++ b/.changeset/angry-ghosts-brush.md @@ -0,0 +1,13 @@ +--- +'@backstage/create-app': patch +--- + +Updated the backend template to no longer create duplicate connection pools to plugins that use the task scheduler. + +To apply this change in your own repository, perform the following small update: + +```diff +// in packages/backend/src/index.ts +- const taskScheduler = TaskScheduler.fromConfig(config); ++ const taskScheduler = TaskScheduler.fromConfig(config, { databaseManager }); +``` diff --git a/.changeset/thin-ladybugs-lick.md b/.changeset/thin-ladybugs-lick.md new file mode 100644 index 0000000000..41707e22d0 --- /dev/null +++ b/.changeset/thin-ladybugs-lick.md @@ -0,0 +1,5 @@ +--- +'@backstage/backend-common': patch +--- + +Minor internal refactor diff --git a/packages/backend-common/src/database/DatabaseManager.ts b/packages/backend-common/src/database/DatabaseManager.ts index db5d36afad..4b655512bb 100644 --- a/packages/backend-common/src/database/DatabaseManager.ts +++ b/packages/backend-common/src/database/DatabaseManager.ts @@ -56,13 +56,14 @@ export type DatabaseManagerOptions = { /** * Manages database connections for Backstage backend plugins. * + * @public + * @remarks + * * The database manager allows the user to set connection and client settings on * a per pluginId basis by defining a database config block under * `plugin.` in addition to top level defaults. Optionally, a user may * set `prefix` which is used to prefix generated database names if config is * not provided. - * - * @public */ export class DatabaseManager { /** @@ -105,17 +106,9 @@ export class DatabaseManager { pluginMetadata: PluginMetadataService; }, ): PluginDatabaseManager { - const _this = this; - - return { - getClient(): Promise { - return _this.getDatabase(pluginId, deps); - }, - migrations: { - skip: false, - ..._this.options?.migrations, - }, - }; + const getClient = () => this.getDatabase(pluginId, deps); + const migrations = { skip: false, ...this.options?.migrations }; + return { getClient, migrations }; } /** diff --git a/packages/backend/src/index.ts b/packages/backend/src/index.ts index 54f0f98e41..b22f7d2983 100644 --- a/packages/backend/src/index.ts +++ b/packages/backend/src/index.ts @@ -93,7 +93,7 @@ function makeCreateEnv(config: Config) { }); const databaseManager = DatabaseManager.fromConfig(config, { logger: root }); const cacheManager = CacheManager.fromConfig(config); - const taskScheduler = TaskScheduler.fromConfig(config); + const taskScheduler = TaskScheduler.fromConfig(config, { databaseManager }); const identity = DefaultIdentityClient.create({ discovery, }); diff --git a/packages/create-app/templates/default-app/packages/backend/src/index.ts b/packages/create-app/templates/default-app/packages/backend/src/index.ts index 1c08288675..04c4ff9392 100644 --- a/packages/create-app/templates/default-app/packages/backend/src/index.ts +++ b/packages/create-app/templates/default-app/packages/backend/src/index.ts @@ -39,7 +39,7 @@ function makeCreateEnv(config: Config) { const cacheManager = CacheManager.fromConfig(config); const databaseManager = DatabaseManager.fromConfig(config, { logger: root }); const tokenManager = ServerTokenManager.noop(); - const taskScheduler = TaskScheduler.fromConfig(config); + const taskScheduler = TaskScheduler.fromConfig(config, { databaseManager }); const identity = DefaultIdentityClient.create({ discovery, From e9f6fa463781611fc235ccd59a99b1a775904486 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 14 Sep 2023 21:14:29 +0000 Subject: [PATCH 2/2] chore(deps): update dependency msw to v1.3.1 Signed-off-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com> --- yarn.lock | 46 +++++++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 21 deletions(-) diff --git a/yarn.lock b/yarn.lock index 78d55e945d..bbb27f2c4a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13444,19 +13444,19 @@ __metadata: languageName: node linkType: hard -"@mswjs/interceptors@npm:^0.17.5": - version: 0.17.5 - resolution: "@mswjs/interceptors@npm:0.17.5" +"@mswjs/interceptors@npm:^0.17.10": + version: 0.17.10 + resolution: "@mswjs/interceptors@npm:0.17.10" dependencies: "@open-draft/until": ^1.0.3 "@types/debug": ^4.1.7 - "@xmldom/xmldom": ^0.7.5 + "@xmldom/xmldom": ^0.8.3 debug: ^4.3.3 - headers-polyfill: ^3.1.0 + headers-polyfill: 3.2.5 outvariant: ^1.2.1 strict-event-emitter: ^0.2.4 web-encoding: ^1.1.5 - checksum: 0293ccc56c1c85fb7334cd5902574f7df20c26be74d633c83fde64ffd7620f81e08253fe7985c6b5ad3b64c04ad53c3610e9b9c07621518aabd977343026bb2b + checksum: 0e6d32f399144b5cefe6fd7620f2776c83adc9bbbbccf2eb4ea347332be059f585136c44168c09b544c41cd3d686f88e43432e10192227a24fbb0c98a2f52dc8 languageName: node linkType: hard @@ -18654,7 +18654,7 @@ __metadata: languageName: node linkType: hard -"@types/set-cookie-parser@npm:^2.4.0, @types/set-cookie-parser@npm:^2.4.3": +"@types/set-cookie-parser@npm:^2.4.0": version: 2.4.3 resolution: "@types/set-cookie-parser@npm:2.4.3" dependencies: @@ -19470,13 +19470,20 @@ __metadata: languageName: node linkType: hard -"@xmldom/xmldom@npm:^0.7.0, @xmldom/xmldom@npm:^0.7.5, @xmldom/xmldom@npm:^0.7.6, @xmldom/xmldom@npm:^0.7.9": +"@xmldom/xmldom@npm:^0.7.0, @xmldom/xmldom@npm:^0.7.6, @xmldom/xmldom@npm:^0.7.9": version: 0.7.13 resolution: "@xmldom/xmldom@npm:0.7.13" checksum: b4054078530e5fa8ede9677425deff0fce6d965f4c477ca73f8490d8a089e60b8498a15560425a1335f5ff99ecb851ed2c734b0a9a879299a5694302f212f37a languageName: node linkType: hard +"@xmldom/xmldom@npm:^0.8.3": + version: 0.8.10 + resolution: "@xmldom/xmldom@npm:0.8.10" + checksum: 4c136aec31fb3b49aaa53b6fcbfe524d02a1dc0d8e17ee35bd3bf35e9ce1344560481cd1efd086ad1a4821541482528672306d5e37cdbd187f33d7fadd3e2cf0 + languageName: node + linkType: hard + "@xobotyi/scrollbar-width@npm:^1.9.5": version: 1.9.5 resolution: "@xobotyi/scrollbar-width@npm:1.9.5" @@ -28116,13 +28123,10 @@ __metadata: languageName: node linkType: hard -"headers-polyfill@npm:^3.1.0, headers-polyfill@npm:^3.2.0": - version: 3.2.1 - resolution: "headers-polyfill@npm:3.2.1" - dependencies: - "@types/set-cookie-parser": ^2.4.3 - set-cookie-parser: ^2.6.0 - checksum: e66d56ce34821909ce28e51356650233912b2205d00b8494c9c57b4a30d4f07d558afb5f7f6f7fedc9b9c14caf25c9e06afaf8fa60585c36801e17417f901c6b +"headers-polyfill@npm:3.2.5": + version: 3.2.5 + resolution: "headers-polyfill@npm:3.2.5" + checksum: a3c4bdd661584fd39e40c0f91412abc514616edfbd20d29a75567e591f90ef5c445c8e209b7f3c2b2375d27e95e4690f33417368a168d4832484a93861ab6a3c languageName: node linkType: hard @@ -33690,11 +33694,11 @@ __metadata: linkType: hard "msw@npm:^1.0.0, msw@npm:^1.0.1, msw@npm:^1.2.1, msw@npm:^1.2.3": - version: 1.3.0 - resolution: "msw@npm:1.3.0" + version: 1.3.1 + resolution: "msw@npm:1.3.1" dependencies: "@mswjs/cookies": ^0.2.2 - "@mswjs/interceptors": ^0.17.5 + "@mswjs/interceptors": ^0.17.10 "@open-draft/until": ^1.0.3 "@types/cookie": ^0.4.1 "@types/js-levenshtein": ^1.1.1 @@ -33702,7 +33706,7 @@ __metadata: chokidar: ^3.4.2 cookie: ^0.4.2 graphql: ^15.0.0 || ^16.0.0 - headers-polyfill: ^3.2.0 + headers-polyfill: 3.2.5 inquirer: ^8.2.0 is-node-process: ^1.2.0 js-levenshtein: ^1.1.6 @@ -33719,7 +33723,7 @@ __metadata: optional: true bin: msw: cli/index.js - checksum: 5ec31d58b0b8841906427738b3f20efd93c45673022f1f8f2221e2880bf76d8ce85902a4f2656727bdcd6d3124d06bb61ff7827a3f9b218ceba6a09d3f6508be + checksum: 5e3c9d2efff025ecaa55c48b0392179fb07253f26212fe884cca7cc4b5d62cebbfa937dc7249a91d432b1f64ebcce2a1e4938056264f277da62d62d072dfb883 languageName: node linkType: hard @@ -39367,7 +39371,7 @@ __metadata: languageName: node linkType: hard -"set-cookie-parser@npm:^2.4.6, set-cookie-parser@npm:^2.6.0": +"set-cookie-parser@npm:^2.4.6": version: 2.6.0 resolution: "set-cookie-parser@npm:2.6.0" checksum: bf11ebc594c53d84588f1b4c04f1b8ce14e0498b1c011b3d76b5c6d5aac481bbc3f7c5260ec4ce99bdc1d9aed19f9fc315e73166a36ca74d0f12349a73f6bdc9