Made shut down stale tasks configurable.

Signed-off-by: Bogdan Nechyporenko <bnechyporenko@bol.com>
This commit is contained in:
Bogdan Nechyporenko
2023-10-13 11:59:23 +02:00
committed by Fredrik Adelöw
parent a72143c79b
commit d16e45a352
5 changed files with 31 additions and 11 deletions
+8
View File
@@ -304,6 +304,14 @@ scaffolder:
# email: scaffolder@backstage.io
# Use to customize the default commit message when new components are created
# defaultCommitMessage: 'Initial commit'
#
# Use to run check on stale tasks every minute. By default, it is '*/5 * * * *', what means to run every 5 minutes.
# staleTasks:
# cron: * * * * *
#
# Use to consider the task stale when no task heartbeat during 2 minutes. By default, it is 24 hours.
# staleTasks:
# timeout: 120 # seconds
auth:
### Add auth.keyStore.provider to more granularly control how to store JWK data when running
@@ -14,14 +14,19 @@
* limitations under the License.
*/
import { TaskContext, TaskBroker, WorkflowRunner } from './types';
import { WorkflowRunner } from './types';
import {
TaskContext,
TaskBroker,
TemplateFilter,
TemplateGlobal,
} from '@backstage/plugin-scaffolder-node';
import PQueue from 'p-queue';
import { NunjucksWorkflowRunner } from './NunjucksWorkflowRunner';
import { Logger } from 'winston';
import { TemplateActionRegistry } from '../actions';
import { ScmIntegrations } from '@backstage/integration';
import { assertError } from '@backstage/errors';
import { TemplateFilter, TemplateGlobal } from '../../lib';
import { PermissionEvaluator } from '@backstage/plugin-permission-common';
/**
* TaskWorkerOptions
@@ -107,7 +107,3 @@ export async function findTemplate(options: {
return template as TemplateEntityV1beta3;
}
export type TemplateTransform = (
template: TemplateEntityV1beta3,
) => TemplateEntityV1beta3;
@@ -38,7 +38,8 @@ import {
stringifyEntityRef,
UserEntity,
} from '@backstage/catalog-model';
import { createRouter, DatabaseTaskStore, TaskBroker } from '../index';
import { createRouter, DatabaseTaskStore } from '../index';
import { TaskBroker } from '@backstage/plugin-scaffolder-node';
import { StorageTaskBroker } from '../scaffolder/tasks/StorageTaskBroker';
import {
IdentityApiGetIdentityRequest,
@@ -48,11 +48,14 @@ import Router from 'express-promise-router';
import { validate } from 'jsonschema';
import { Logger } from 'winston';
import { z } from 'zod';
import { TemplateFilter, TemplateGlobal } from '../lib';
import {
TaskBroker,
TemplateFilter,
TemplateGlobal,
} from '@backstage/plugin-scaffolder-node';
import {
createBuiltinActions,
DatabaseTaskStore,
TaskBroker,
TaskWorker,
TemplateActionRegistry,
} from '../scaffolder';
@@ -256,11 +259,18 @@ export async function createRouter(
if (scheduler && databaseTaskStore.listStaleTasks) {
await scheduler.scheduleTask({
id: 'close_stale_tasks',
frequency: { cron: '*/5 * * * *' }, // every 5 minutes, also supports Duration
frequency: {
cron:
options.config.getOptionalString('scaffolder.staleTasks.cron') ??
'*/5 * * * *',
}, // every 5 minutes, also supports Duration
timeout: { minutes: 15 },
fn: async () => {
const { tasks } = await databaseTaskStore.listStaleTasks({
timeoutS: 86400,
timeoutS:
options.config.getOptionalNumber(
'scaffolder.staleTasks.timeout',
) ?? 86400,
});
for (const task of tasks) {