Skip to content

Commit

Permalink
Swap pk for app-backend path, fix heartbeat task
Browse files Browse the repository at this point in the history
Signed-off-by: lpete@vmware.com <lpete@vmware.com>
  • Loading branch information
PeteLevineA committed Aug 17, 2023
1 parent 6ec403f commit 9ae110c
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 13 deletions.
1 change: 1 addition & 0 deletions .changeset/yellow-trains-protect.md
Expand Up @@ -7,6 +7,7 @@
'@backstage/backend-tasks': patch
'@backstage/plugin-app-backend': patch
'@backstage/plugin-bazaar-backend': patch
'@backstage/plugin-scaffolder-backend': patch
---

Changes needed to support MySQL
6 changes: 3 additions & 3 deletions plugins/app-backend/migrations/20211229105307_init.js
Expand Up @@ -24,12 +24,12 @@ exports.up = async function up(knex) {
table.comment(
'A cache of static assets that where previously deployed and may still be lazy-loaded by clients',
);
// setting to 64KB to account for long paths
table
.string('path', 16383)
.uuid('id')
.primary()
.notNullable()
.comment('The path of the file');
.comment('Auto-generated ID of the asset');
table.text('path', 'text').notNullable().comment('The path of the file');
table
.dateTime('last_modified_at')
.defaultTo(knex.fn.now())
Expand Down
Expand Up @@ -261,18 +261,21 @@ export class DatabaseTaskStore implements TaskStore {
tasks: { taskId: string }[];
}> {
const { timeoutS } = options;

let heartbeatInterval = this.db.raw(`? - interval '${timeoutS} seconds'`, [
this.db.fn.now(),
]);
if (this.db.client.config.client.includes('mysql')) {
heartbeatInterval = this.db.raw(
`date_sub(now(), interval ${timeoutS} second)`,
);
} else if (this.db.client.config.client.includes('sqlite3')) {
heartbeatInterval = this.db.raw(`datetime('now', ?)`, [
`-${timeoutS} seconds`,
]);
}
const rawRows = await this.db<RawDbTaskRow>('tasks')
.where('status', 'processing')
.andWhere(
'last_heartbeat_at',
'<=',
this.db.client.config.client.includes('sqlite3')
? this.db.raw(`datetime('now', ?)`, [`-${timeoutS} seconds`])
: this.db.raw(`? - interval '${timeoutS} seconds'`, [
this.db.fn.now(),
]),
);
.andWhere('last_heartbeat_at', '<=', heartbeatInterval);
const tasks = rawRows.map(row => ({
taskId: row.id,
}));
Expand Down

0 comments on commit 9ae110c

Please sign in to comment.