From 54a7183b119e6c4b4ad717835d199a558d0beab2 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 8 Mar 2024 10:29:41 +0100 Subject: [PATCH] Check available jobs on reconnection --- apps/peertube-runner/scripts/watch.js | 7 +++++++ apps/peertube-runner/src/server/server.ts | 20 ++++++++++++++++---- 2 files changed, 23 insertions(+), 4 deletions(-) create mode 100644 apps/peertube-runner/scripts/watch.js diff --git a/apps/peertube-runner/scripts/watch.js b/apps/peertube-runner/scripts/watch.js new file mode 100644 index 000000000..94e57199c --- /dev/null +++ b/apps/peertube-runner/scripts/watch.js @@ -0,0 +1,7 @@ +import * as esbuild from 'esbuild' +import { esbuildOptions } from './build.js' + +const context = await esbuild.context(esbuildOptions) + +// Enable watch mode +await context.watch() diff --git a/apps/peertube-runner/src/server/server.ts b/apps/peertube-runner/src/server/server.ts index 72e0d5ee5..a7708929a 100644 --- a/apps/peertube-runner/src/server/server.ts +++ b/apps/peertube-runner/src/server/server.ts @@ -26,6 +26,7 @@ export class RunnerServer { private checkingAvailableJobs = false private cleaningUp = false + private initialized = false private readonly sockets = new Map() @@ -70,6 +71,7 @@ export class RunnerServer { logger.info(`Using ${ConfigManager.Instance.getTranscodingDirectory()} for transcoding directory`) + this.initialized = true await this.checkAvailableJobs() } @@ -98,8 +100,6 @@ export class RunnerServer { await this.saveRegisteredInstancesInConf() logger.info(`Registered runner ${runnerName} on ${url}`) - - await this.checkAvailableJobs() } private loadServer (server: PeerTubeServer) { @@ -114,8 +114,14 @@ export class RunnerServer { }) socket.on('connect_error', err => logger.warn({ err }, `Cannot connect to ${url} socket`)) - socket.on('connect', () => logger.info(`Connected to ${url} socket`)) - socket.on('available-jobs', () => this.checkAvailableJobs()) + socket.on('available-jobs', () => this.safeAsyncCheckAvailableJobs()) + + socket.on('connect', () => { + logger.info(`Connected to ${url} socket`) + + this.safeAsyncCheckAvailableJobs() + }) + socket.on('disconnect', () => logger.warn(`Disconnected from ${url} socket`)) this.sockets.set(server, socket) } @@ -169,7 +175,13 @@ export class RunnerServer { // --------------------------------------------------------------------------- + private safeAsyncCheckAvailableJobs () { + this.checkAvailableJobs() + .catch(err => logger.error({ err }, `Cannot check available jobs`)) + } + private async checkAvailableJobs () { + if (!this.initialized) return if (this.checkingAvailableJobs) return this.checkingAvailableJobs = true