diff --git a/packages/backend-tasks/README.md b/packages/backend-tasks/README.md index f8a2009af0..d3c361c02c 100644 --- a/packages/backend-tasks/README.md +++ b/packages/backend-tasks/README.md @@ -1,6 +1,6 @@ # @backstage/backend-tasks -Common distributed task management / locking library for Backstage backends. +Common distributed task management for Backstage backends. ## Usage @@ -15,12 +15,12 @@ yarn add @backstage/backend-tasks then make use of its facilities as necessary: ```typescript -import { TaskManager } from '@backstage/backend-tasks'; +import { TaskScheduler } from '@backstage/backend-tasks'; import { Duration } from 'luxon'; -const manager = TaskManager.fromConfig(rootConfig).forPlugin('my-plugin'); +const scheduler = TaskScheduler.fromConfig(rootConfig).forPlugin('my-plugin'); -await manager.scheduleTask({ +await scheduler.scheduleTask({ id: 'refresh-things', frequency: Duration.fromObject({ minutes: 10 }), fn: async () => { diff --git a/packages/backend-tasks/api-report.md b/packages/backend-tasks/api-report.md index 2be69f8788..27259304c8 100644 --- a/packages/backend-tasks/api-report.md +++ b/packages/backend-tasks/api-report.md @@ -10,7 +10,7 @@ import { Duration } from 'luxon'; import { Logger as Logger_2 } from 'winston'; // @public -export interface PluginTaskManager { +export interface PluginTaskScheduler { scheduleTask(task: TaskDefinition): Promise; } @@ -30,9 +30,10 @@ export type TaskFunction = | (() => void | Promise); // @public -export class TaskManager { +export class TaskScheduler { constructor(databaseManager: DatabaseManager, logger: Logger_2); - forPlugin(pluginId: string): PluginTaskManager; + // Warning: (ae-unresolved-link) The @link reference could not be resolved: The package "@backstage/backend-tasks" does not have an export "PluginTaskManager" + forPlugin(pluginId: string): PluginTaskScheduler; // (undocumented) static fromConfig( config: Config, @@ -40,6 +41,6 @@ export class TaskManager { databaseManager?: DatabaseManager; logger?: Logger_2; }, - ): TaskManager; + ): TaskScheduler; } ``` diff --git a/packages/backend-tasks/package.json b/packages/backend-tasks/package.json index dcb5922cf1..01671638e9 100644 --- a/packages/backend-tasks/package.json +++ b/packages/backend-tasks/package.json @@ -1,6 +1,6 @@ { "name": "@backstage/backend-tasks", - "description": "Common distributed task management / locking library for Backstage backends", + "description": "Common distributed task management library for Backstage backends", "version": "0.1.0", "main": "src/index.ts", "types": "src/index.ts", diff --git a/packages/backend-tasks/src/index.ts b/packages/backend-tasks/src/index.ts index 00a8aa2803..dd75aca68c 100644 --- a/packages/backend-tasks/src/index.ts +++ b/packages/backend-tasks/src/index.ts @@ -15,7 +15,7 @@ */ /** - * Common distributed task management / locking library for Backstage backends + * Common distributed task management library for Backstage backends * * @packageDocumentation */ diff --git a/packages/backend-tasks/src/tasks/PluginTaskManagerImpl.test.ts b/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts similarity index 94% rename from packages/backend-tasks/src/tasks/PluginTaskManagerImpl.test.ts rename to packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts index cbf754d5cf..e387b85413 100644 --- a/packages/backend-tasks/src/tasks/PluginTaskManagerImpl.test.ts +++ b/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.test.ts @@ -19,7 +19,7 @@ import { TestDatabaseId, TestDatabases } from '@backstage/backend-test-utils'; import { Duration } from 'luxon'; import waitForExpect from 'wait-for-expect'; import { migrateBackendTasks } from '../database/migrateBackendTasks'; -import { PluginTaskManagerImpl } from './PluginTaskManagerImpl'; +import { PluginTaskSchedulerImpl } from './PluginTaskSchedulerImpl'; describe('PluginTaskManagerImpl', () => { const databases = TestDatabases.create({ @@ -29,7 +29,7 @@ describe('PluginTaskManagerImpl', () => { async function init(databaseId: TestDatabaseId) { const knex = await databases.init(databaseId); await migrateBackendTasks(knex); - const manager = new PluginTaskManagerImpl( + const manager = new PluginTaskSchedulerImpl( async () => knex, getVoidLogger(), ); diff --git a/packages/backend-tasks/src/tasks/PluginTaskManagerImpl.ts b/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.ts similarity index 91% rename from packages/backend-tasks/src/tasks/PluginTaskManagerImpl.ts rename to packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.ts index 497a58b348..93975bc327 100644 --- a/packages/backend-tasks/src/tasks/PluginTaskManagerImpl.ts +++ b/packages/backend-tasks/src/tasks/PluginTaskSchedulerImpl.ts @@ -17,13 +17,13 @@ import { Knex } from 'knex'; import { Logger } from 'winston'; import { TaskWorker } from './TaskWorker'; -import { PluginTaskManager, TaskDefinition } from './types'; +import { PluginTaskScheduler, TaskDefinition } from './types'; import { validateId } from './util'; /** * Implements the actual task management. */ -export class PluginTaskManagerImpl implements PluginTaskManager { +export class PluginTaskSchedulerImpl implements PluginTaskScheduler { constructor( private readonly databaseFactory: () => Promise, private readonly logger: Logger, diff --git a/packages/backend-tasks/src/tasks/PluginTaskManagerJanitor.ts b/packages/backend-tasks/src/tasks/PluginTaskSchedulerJanitor.ts similarity index 98% rename from packages/backend-tasks/src/tasks/PluginTaskManagerJanitor.ts rename to packages/backend-tasks/src/tasks/PluginTaskSchedulerJanitor.ts index 6594243243..8b90afff42 100644 --- a/packages/backend-tasks/src/tasks/PluginTaskManagerJanitor.ts +++ b/packages/backend-tasks/src/tasks/PluginTaskSchedulerJanitor.ts @@ -25,7 +25,7 @@ import { sleep } from './util'; * Makes sure to auto-expire and clean up things that time out or for other * reasons should not be left lingering. */ -export class PluginTaskManagerJanitor { +export class PluginTaskSchedulerJanitor { private readonly knex: Knex; private readonly waitBetweenRuns: Duration; private readonly logger: Logger; diff --git a/packages/backend-tasks/src/tasks/TaskManager.test.ts b/packages/backend-tasks/src/tasks/TaskScheduler.test.ts similarity index 91% rename from packages/backend-tasks/src/tasks/TaskManager.test.ts rename to packages/backend-tasks/src/tasks/TaskScheduler.test.ts index 3f2d9dbc54..ce8e797503 100644 --- a/packages/backend-tasks/src/tasks/TaskManager.test.ts +++ b/packages/backend-tasks/src/tasks/TaskScheduler.test.ts @@ -17,10 +17,10 @@ import { DatabaseManager, getVoidLogger } from '@backstage/backend-common'; import { TestDatabaseId, TestDatabases } from '@backstage/backend-test-utils'; import { Duration } from 'luxon'; -import { TaskManager } from './TaskManager'; +import { TaskScheduler } from './TaskScheduler'; import waitForExpect from 'wait-for-expect'; -describe('TaskManager', () => { +describe('TaskScheduler', () => { const logger = getVoidLogger(); const databases = TestDatabases.create({ ids: ['POSTGRES_13', 'POSTGRES_9', 'SQLITE_3'], @@ -42,7 +42,7 @@ describe('TaskManager', () => { 'can return a working plugin impl, %p', async databaseId => { const database = await createDatabase(databaseId); - const manager = new TaskManager(database, logger).forPlugin('test'); + const manager = new TaskScheduler(database, logger).forPlugin('test'); const fn = jest.fn(); await manager.scheduleTask({ diff --git a/packages/backend-tasks/src/tasks/TaskManager.ts b/packages/backend-tasks/src/tasks/TaskScheduler.ts similarity index 80% rename from packages/backend-tasks/src/tasks/TaskManager.ts rename to packages/backend-tasks/src/tasks/TaskScheduler.ts index d065447fb2..81d1fca479 100644 --- a/packages/backend-tasks/src/tasks/TaskManager.ts +++ b/packages/backend-tasks/src/tasks/TaskScheduler.ts @@ -20,29 +20,29 @@ import { memoize } from 'lodash'; import { Duration } from 'luxon'; import { Logger } from 'winston'; import { migrateBackendTasks } from '../database/migrateBackendTasks'; -import { PluginTaskManagerImpl } from './PluginTaskManagerImpl'; -import { PluginTaskManagerJanitor } from './PluginTaskManagerJanitor'; -import { PluginTaskManager } from './types'; +import { PluginTaskSchedulerImpl } from './PluginTaskSchedulerImpl'; +import { PluginTaskSchedulerJanitor } from './PluginTaskSchedulerJanitor'; +import { PluginTaskScheduler } from './types'; /** - * Deals with management and locking related to distributed tasks. + * Deals with the scheduling of distributed tasks. * * @public */ -export class TaskManager { +export class TaskScheduler { static fromConfig( config: Config, options?: { databaseManager?: DatabaseManager; logger?: Logger; }, - ): TaskManager { + ): TaskScheduler { const databaseManager = options?.databaseManager ?? DatabaseManager.fromConfig(config); const logger = (options?.logger || getRootLogger()).child({ type: 'taskManager', }); - return new TaskManager(databaseManager, logger); + return new TaskScheduler(databaseManager, logger); } constructor( @@ -56,13 +56,13 @@ export class TaskManager { * @param pluginId - The unique ID of the plugin, for example "catalog" * @returns A {@link PluginTaskManager} instance */ - forPlugin(pluginId: string): PluginTaskManager { + forPlugin(pluginId: string): PluginTaskScheduler { const databaseFactory = memoize(async () => { const knex = await this.databaseManager.forPlugin(pluginId).getClient(); await migrateBackendTasks(knex); - const janitor = new PluginTaskManagerJanitor({ + const janitor = new PluginTaskSchedulerJanitor({ knex, waitBetweenRuns: Duration.fromObject({ minutes: 1 }), logger: this.logger, @@ -72,7 +72,7 @@ export class TaskManager { return knex; }); - return new PluginTaskManagerImpl( + return new PluginTaskSchedulerImpl( databaseFactory, this.logger.child({ plugin: pluginId }), ); diff --git a/packages/backend-tasks/src/tasks/index.ts b/packages/backend-tasks/src/tasks/index.ts index bb59b3a3e2..9e0a06f71c 100644 --- a/packages/backend-tasks/src/tasks/index.ts +++ b/packages/backend-tasks/src/tasks/index.ts @@ -14,5 +14,9 @@ * limitations under the License. */ -export { TaskManager } from './TaskManager'; -export type { PluginTaskManager, TaskDefinition, TaskFunction } from './types'; +export { TaskScheduler } from './TaskScheduler'; +export type { + PluginTaskScheduler, + TaskDefinition, + TaskFunction, +} from './types'; diff --git a/packages/backend-tasks/src/tasks/types.ts b/packages/backend-tasks/src/tasks/types.ts index c717a17c3b..4693af7ef3 100644 --- a/packages/backend-tasks/src/tasks/types.ts +++ b/packages/backend-tasks/src/tasks/types.ts @@ -92,12 +92,11 @@ export interface TaskDefinition { } /** - * Deals with management and locking related to distributed tasks, for a given - * plugin. + * Deals with the scheduling of distributed tasks, for a given plugin. * * @public */ -export interface PluginTaskManager { +export interface PluginTaskScheduler { /** * Schedules a task function for coordinated exclusive invocation across * workers.