diff --git a/packages/loader/container-loader/src/container.ts b/packages/loader/container-loader/src/container.ts index 48da727e150e..ccd5dfd197bf 100644 --- a/packages/loader/container-loader/src/container.ts +++ b/packages/loader/container-loader/src/container.ts @@ -1158,6 +1158,9 @@ export class Container this.storageAdapter.dispose(); + // Dispose serialized state manager to clean up snapshot refresh timer + this.serializedStateManager.dispose(); + // Notify storage about critical errors. They may be due to disconnect between client & server knowledge // about file, like file being overwritten in storage, but client having stale local cache. // Driver need to ensure all caches are cleared on critical errors diff --git a/packages/loader/container-loader/src/serializedStateManager.ts b/packages/loader/container-loader/src/serializedStateManager.ts index 0f75491e04a7..1e25339d0855 100644 --- a/packages/loader/container-loader/src/serializedStateManager.ts +++ b/packages/loader/container-loader/src/serializedStateManager.ts @@ -474,6 +474,14 @@ export class SerializedStateManager { }, ); } + + /** + * Dispose of the SerializedStateManager, cleaning up any active timers. + * This prevents Node.js processes from hanging due to the refresh timer. + */ + public dispose(): void { + this.refreshTimer.clear(); + } } /**