fix(servicemanager): cancel startup timeout once service initialization completes

This commit is contained in:
2026-03-23 14:59:59 +00:00
parent e25271f9db
commit 820811cca2
4 changed files with 17 additions and 8 deletions

View File

@@ -1,5 +1,11 @@
# Changelog # Changelog
## 2026-03-23 - 8.0.2 - fix(servicemanager)
cancel startup timeout once service initialization completes
- Replaces the startup timeout race delay with a cancellable Timeout instance
- Prevents the global startup timeout from lingering after startup finishes or fails
## 2026-03-23 - 8.0.1 - fix(servicemanager) ## 2026-03-23 - 8.0.1 - fix(servicemanager)
cancel shutdown timeouts after services stop cancel shutdown timeouts after services stop

View File

@@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@push.rocks/taskbuffer', name: '@push.rocks/taskbuffer',
version: '8.0.1', version: '8.0.2',
description: 'A flexible task management library supporting TypeScript, allowing for task buffering, scheduling, and execution with dependency management.' description: 'A flexible task management library supporting TypeScript, allowing for task buffering, scheduling, and execution with dependency management.'
} }

View File

@@ -82,12 +82,15 @@ export class ServiceManager {
// Enforce global startup timeout // Enforce global startup timeout
if (this.options.startupTimeoutMs) { if (this.options.startupTimeoutMs) {
await Promise.race([ const timeout = new plugins.smartdelay.Timeout(this.options.startupTimeoutMs);
startupPromise, const timeoutPromise = timeout.promise.then(() => {
plugins.smartdelay.delayFor(this.options.startupTimeoutMs).then(() => { throw new Error(`${this.name}: global startup timeout exceeded (${this.options.startupTimeoutMs}ms)`);
throw new Error(`${this.name}: global startup timeout exceeded (${this.options.startupTimeoutMs}ms)`); });
}), try {
]); await Promise.race([startupPromise, timeoutPromise]);
} finally {
timeout.cancel();
}
} else { } else {
await startupPromise; await startupPromise;
} }

View File

@@ -3,6 +3,6 @@
*/ */
export const commitinfo = { export const commitinfo = {
name: '@push.rocks/taskbuffer', name: '@push.rocks/taskbuffer',
version: '8.0.1', version: '8.0.2',
description: 'A flexible task management library supporting TypeScript, allowing for task buffering, scheduling, and execution with dependency management.' description: 'A flexible task management library supporting TypeScript, allowing for task buffering, scheduling, and execution with dependency management.'
} }