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,