Skip to content

Commit 2725a38

Browse files
Add timeout to prerecorded stream starting promise
1 parent 03ecd88 commit 2725a38

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

mainroom.config.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ module.exports = {
9494
}
9595
},
9696
cronTime: {
97-
scheduledStreamInfoUpdater: CRON_EVERY_MINUTE,
97+
streamScheduler: CRON_EVERY_MINUTE,
9898
upcomingScheduledStreamEmailer: CRON_EVERY_MINUTE,
9999
createdScheduledStreamsEmailer: CRON_EVERY_HOUR,
100100
newSubscribersEmailer: CRON_EVERY_HOUR,
@@ -235,6 +235,7 @@ module.exports = {
235235
socketIOConnectionTimeout: SECOND,
236236
loadLivestreamTimeout: 15 * SECOND,
237237
successMessageTimeout: 3 * SECOND,
238+
streamSchedulerTimeout: 5 * SECOND,
238239
bugReportURL: 'https://gitreports.com/issue/DylanRodgers98/Mainroom',
239240
chatColours: {
240241
aqua: "#00ffff",

server/cron/streamScheduler.js

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
const {CronJob} = require('cron');
2-
const {cronTime} = require('../../mainroom.config');
2+
const {cronTime, streamSchedulerTimeout} = require('../../mainroom.config');
33
const {ScheduledStream, User, EventStage} = require('../model/schemas');
44
const CompositeError = require('../errors/CompositeError');
55
const snsErrorPublisher = require('../aws/snsErrorPublisher');
@@ -15,7 +15,7 @@ const jobName = 'Stream Scheduler';
1515
let lastTimeTriggered = Date.now();
1616
let isFirstTimeTriggered = true;
1717

18-
const job = new CronJob(cronTime.scheduledStreamInfoUpdater, async () => {
18+
const job = new CronJob(cronTime.streamScheduler, async () => {
1919
LOGGER.debug(`${jobName} triggered`);
2020

2121
const thisTimeTriggered = job.lastDate().valueOf();
@@ -146,9 +146,12 @@ function startStreamFromPrerecordedVideo({startTime, inputURL, streamKey}) {
146146
`${RTMP_SERVER_URL}/${streamKey}`);
147147

148148
mainroomEventBus.once(`streamStarted_${streamKey}`, resolve);
149+
149150
spawn(process.env.FFMPEG_PATH, args, {detached: true, stdio: 'ignore'})
150151
.on('error', reject)
151152
.unref();
153+
154+
setTimeout(reject, streamSchedulerTimeout);
152155
});
153156
}
154157

@@ -171,7 +174,9 @@ async function startAllStreams(startStreamPromises) {
171174
}
172175
}
173176

174-
LOGGER.info('Successfully started {} out of {} streams from prerecorded videos', successCount, startStreamPromises.length);
177+
LOGGER.info('Successfully started {} out of {} streams from prerecorded videos',
178+
successCount, startStreamPromises.length);
179+
175180
if (errors.length) {
176181
throw new CompositeError(errors);
177182
}

0 commit comments

Comments
 (0)