serverLifetimeService.ts ×8

Frontier kind: Code frontier

unlabeled · c_5214768a75d1

12 tests · 7980 LOC · 38 files · introduces 0 tests · 67 LOC · 1 file

Introduces — evidence that enters the hierarchy at this concept

Code
8 ranges67 lines · 1 files
Tests
0 tests

Contains — complete concept membership

All code (extent)
1281 ranges7980 lines · 38 files · Browse complete extent
All tests (intent)
12 testsBrowse complete intent

Neighbourhood graph

The orange circle is the focus. Violet and green circles are every ancestor and descendant, broader and narrower, at any distance; blue squares and pink diamonds are the introduced files and exact introduced tests of every visible concept, not only the focus's. Arrows point from broader to narrower concepts and bridge only concepts omitted from this view. Undirected links show source or test introduction. Concept and file size follows LOC; exact test nodes use test-count units.

Introduced files, introduced tests, and structurally relevant concept specialization

In the embedded map, ordinary wheel input scrolls the page; use the visible controls to zoom and drag to pan. Open the full-screen map for canvas navigation: wheel pans, Ctrl/Command plus wheel zooms, and arrow keys pan when this region is focused. On touch screens, open the full-screen map to pan or pinch. If JavaScript or WebGL is unavailable, use the native relationship evidence on this page.

Introduced files, introduced tests, and structurally relevant concept specializationserverAgentHostManager.test|title=ServerAgentHostManager process exit resets both signals and clears token|occurrence=1 · 0 introduced LOCserverAgentHostManager.t…serverAgentHostManager.ts ×1 · 2 introduced LOCserverAgentHostManager.t…serverAgentHostManager.test|title=ServerAgentHostManager reports unexpected process exit|occurrence=1 · 0 introduced LOCserverAgentHostManager.t…serverAgentHostManager.ts ×2 · 19 introduced LOCserverAgentHostManager.t…serverAgentHostManager.ts ×1 · 2 introduced LOCserverAgentHostManager.t…serverAgentHostManager.ts ×1 · 4 introduced LOCserverAgentHostManager.t…serverAgentHostManager.ts ×2 · 4 introduced LOCserverAgentHostManager.t…serverAgentHostManager.ts ×3 · 19 introduced LOCserverAgentHostManager.t…agentHostProcessTelemetry.ts ×1 · 7 introduced LOCagentHostProcessTelemetr…serverAgentHostManager.ts ×7 · 138 introduced LOCserverAgentHostManager.t…serverLifetimeService.test|title=ServerLifetimeService dispose is idempotent|occurrence=1 · 0 introduced LOCserverLifetimeService.te…serverLifetimeService.ts ×1 · 2 introduced LOCserverLifetimeService.ts…serverLifetimeService.ts ×6 · 31 introduced LOCserverLifetimeService.ts…serverLifetimeService.ts ×3 · 9 introduced LOCserverLifetimeService.ts…log.ts ×1 · 1 introduced LOClog.ts ×1log.ts ×72 · 446 introduced LOClog.ts ×72contextkey.ts ×1 · 2 introduced LOCcontextkey.ts ×1contextkey.ts ×3 · 7 introduced LOCcontextkey.ts ×3contextkey.ts ×1 · 3 introduced LOCcontextkey.ts ×1contextkey.ts ×1 · 2 introduced LOCcontextkey.ts ×1contextkey.ts ×1 · 3 introduced LOCcontextkey.ts ×1contextkey.ts ×1 · 2 introduced LOCcontextkey.ts ×1contextkey.ts ×2 · 3 introduced LOCcontextkey.ts ×2contextkey.ts ×1 · 2 introduced LOCcontextkey.ts ×1contextkey.ts ×2 · 3 introduced LOCcontextkey.ts ×2contextkey.ts ×2 · 3 introduced LOCcontextkey.ts ×2contextkey.ts ×1 · 2 introduced LOCcontextkey.ts ×1contextkey.ts ×1 · 4 introduced LOCcontextkey.ts ×1contextkey.ts ×201 · 796 introduced LOCcontextkey.ts ×201hash.ts ×17 · 74 introduced LOChash.ts ×17resources.ts ×23 · 253 introduced LOCresources.ts ×23network.ts ×20 · 292 introduced LOCnetwork.ts ×20extpath.ts ×17 · 91 introduced LOCextpath.ts ×17strings.ts ×101 · 542 introduced LOCstrings.ts ×101cancellation.ts ×18 · 90 introduced LOCcancellation.ts ×18lifecycle.test|title=Lifecycle dispose disposable array|occurrence=1, lifecycle.test|title=Lifecycle Action bar has broken accessibility #100273|occurrence=1 · 0 introduced LOClifecycle.test|title=Lif…event.ts ×2 · 4 introduced LOCevent.ts ×2event.ts ×2 · 6 introduced LOCevent.ts ×2event.ts ×93 · 864 introduced LOCevent.ts ×93buffer.ts ×42 · 483 introduced LOCbuffer.ts ×42scanner.ts ×13 · 13 introduced LOCscanner.ts ×13scanner.ts ×3 · 3 introduced LOCscanner.ts ×3scanner.ts ×1 · 1 introduced LOCscanner.ts ×1scanner.ts ×1 · 1 introduced LOCscanner.ts ×1scanner.ts ×1 · 1 introduced LOCscanner.ts ×1scanner.ts ×1 · 1 introduced LOCscanner.ts ×1scanner.ts ×1 · 1 introduced LOCscanner.ts ×1scanner.ts ×1 · 1 introduced LOCscanner.ts ×1scanner.ts ×36 · 181 introduced LOCscanner.ts ×36lifecycle.ts ×1 · 6 introduced LOClifecycle.ts ×1utils.ts ×1 · 2 introduced LOCutils.ts ×1utils.ts ×3 · 9 introduced LOCutils.ts ×3instantiation.ts ×4 · 10 introduced LOCinstantiation.ts ×4nls.ts ×1 · 1 introduced LOCnls.ts ×1errorMessage.ts ×6 · 29 introduced LOCerrorMessage.ts ×6lifecycle.ts ×1 · 3 introduced LOClifecycle.ts ×1linkedList.ts ×13 · 44 introduced LOClinkedList.ts ×13nls.ts ×6 · 13 introduced LOCnls.ts ×6instantiation.ts ×5 · 111 introduced LOCinstantiation.ts ×5lifecycle.ts ×1 · 4 introduced LOClifecycle.ts ×1lifecycle.ts ×2 · 6 introduced LOClifecycle.ts ×2lifecycle.ts ×2 · 4 introduced LOClifecycle.ts ×2lifecycle.ts ×1 · 6 introduced LOClifecycle.ts ×1lifecycle.ts ×1 · 1 introduced LOClifecycle.ts ×1lifecycle.ts ×1 · 3 introduced LOClifecycle.ts ×1lifecycle.ts ×3 · 9 introduced LOClifecycle.ts ×3lifecycle.ts ×1 · 7 introduced LOClifecycle.ts ×1lifecycle.ts ×4 · 7 introduced LOClifecycle.ts ×4lifecycle.ts ×4 · 8 introduced LOClifecycle.ts ×4lifecycle.ts ×6 · 16 introduced LOClifecycle.ts ×6lifecycle.ts ×2 · 2 introduced LOClifecycle.ts ×2lazy.ts ×1 · 2 introduced LOClazy.ts ×1lifecycle.ts ×1 · 3 introduced LOClifecycle.ts ×1lifecycle.ts ×3 · 3 introduced LOClifecycle.ts ×3lazy.ts ×3 · 37 introduced LOClazy.ts ×3lifecycle.ts ×1 · 2 introduced LOClifecycle.ts ×1lifecycle.ts ×1 · 2 introduced LOClifecycle.ts ×1uint.ts ×2 · 43 introduced LOCuint.ts ×2iterator.ts ×1 · 2 introduced LOCiterator.ts ×1lifecycle.ts ×1 · 3 introduced LOClifecycle.ts ×1map.ts ×97 · 3334 introduced LOCmap.ts ×97src/vs/base/common/arrays.ts · 949 LOCcommon/arrays.tssrc/vs/base/common/arraysFind.ts · 226 LOCcommon/arraysFind.tssrc/vs/base/common/assert.ts · 91 LOCcommon/assert.tssrc/vs/base/common/buffer.ts · 499 LOCcommon/buffer.tssrc/vs/base/common/cache.ts · 153 LOCcommon/cache.tssrc/vs/base/common/cancellation.ts · 206 LOCcommon/cancellation.tssrc/vs/base/common/charCode.ts · 450 LOCcommon/charCode.tssrc/vs/base/common/collections.ts · 176 LOCcommon/collections.tssrc/vs/base/common/errorMessage.ts · 113 LOCcommon/errorMessage.tssrc/vs/base/common/errors.ts · 357 LOCcommon/errors.tssrc/vs/base/common/event.ts · 1964 LOCcommon/event.tssrc/vs/base/common/extpath.ts · 433 LOCcommon/extpath.tssrc/vs/base/common/functional.ts · 32 LOCcommon/functional.tssrc/vs/base/common/hash.ts · 324 LOCcommon/hash.tssrc/vs/base/common/iterator.ts · 194 LOCcommon/iterator.tssrc/vs/base/common/lazy.ts · 57 LOCcommon/lazy.tssrc/vs/base/common/lifecycle.ts · 974 LOCcommon/lifecycle.tssrc/vs/base/common/linkedList.ts · 151 LOCcommon/linkedList.tssrc/vs/base/common/map.ts · 1016 LOCcommon/map.tssrc/vs/base/common/marshallingIds.ts · 33 LOCcommon/marshallingIds.tssrc/vs/base/common/network.ts · 440 LOCcommon/network.tssrc/vs/base/common/path.ts · 1589 LOCcommon/path.tssrc/vs/base/common/platform.ts · 281 LOCcommon/platform.tssrc/vs/base/common/process.ts · 76 LOCcommon/process.tssrc/vs/base/common/resources.ts · 444 LOCcommon/resources.tssrc/vs/base/common/stopwatch.ts · 41 LOCcommon/stopwatch.tssrc/vs/base/common/stream.ts · 790 LOCcommon/stream.tssrc/vs/base/common/strings.ts · 1413 LOCcommon/strings.tssrc/vs/base/common/types.ts · 410 LOCcommon/types.tssrc/vs/base/common/uint.ts · 59 LOCcommon/uint.tssrc/vs/base/common/uri.ts · 754 LOCcommon/uri.tssrc/vs/base/test/common/utils.ts · 107 LOCcommon/utils.tssrc/vs/nls.ts · 244 LOCvs/nls.tssrc/vs/platform/agentHost/common/agentHostProcessTelemetry.ts · 41 LOCcommon/agentHostProcessT…src/vs/platform/contextkey/common/contextkey.ts · 2183 LOCcommon/contextkey.tssrc/vs/platform/contextkey/common/scanner.ts · 384 LOCcommon/scanner.tssrc/vs/platform/instantiation/common/instantiation.ts · 130 LOCcommon/instantiation.tssrc/vs/platform/log/common/log.ts · 926 LOCcommon/log.tssrc/vs/platform/telemetry/common/errorTelemetry.ts · 175 LOCcommon/errorTelemetry.tssrc/vs/server/node/serverAgentHostManager.ts · 158 LOCnode/serverAgentHostMana…src/vs/server/node/serverLifetimeService.ts · 145 LOCnode/serverLifetimeServi…lifecycle.test|title=Lifecycle Action bar has broken accessibility #100273|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/lifecycle.test|title=Lifecycle Action bar has broken accessibility #100273|occurrence=1lifecycle.test|title=Lif…lifecycle.test|title=Lifecycle dispose disposable array|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/base/test/common/lifecycle.test|title=Lifecycle dispose disposable array|occurrence=1lifecycle.test|title=Lif…serverAgentHostManager.test|title=ServerAgentHostManager acquires token when sessions become active|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/server/test/node/serverAgentHostManager.test|title=ServerAgentHostManager acquires token when sessions become active|occurrence=1serverAgentHostManager.t…serverAgentHostManager.test|title=ServerAgentHostManager acquires token when standalone WebSocket clients connect|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/server/test/node/serverAgentHostManager.test|title=ServerAgentHostManager acquires token when standalone WebSocket clients connect|occurrence=1serverAgentHostManager.t…serverAgentHostManager.test|title=ServerAgentHostManager no lifetime token initially|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/server/test/node/serverAgentHostManager.test|title=ServerAgentHostManager no lifetime token initially|occurrence=1serverAgentHostManager.t…serverAgentHostManager.test|title=ServerAgentHostManager process exit resets both signals and clears token|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/server/test/node/serverAgentHostManager.test|title=ServerAgentHostManager process exit resets both signals and clears token|occurrence=1serverAgentHostManager.t…serverAgentHostManager.test|title=ServerAgentHostManager releases token only when both sessions and standalone WebSocket connections are zero|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/server/test/node/serverAgentHostManager.test|title=ServerAgentHostManager releases token only when both sessions and standalone WebSocket connections are zero|occurrence=1serverAgentHostManager.t…serverAgentHostManager.test|title=ServerAgentHostManager reports process start failure|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/server/test/node/serverAgentHostManager.test|title=ServerAgentHostManager reports process start failure|occurrence=1serverAgentHostManager.t…serverAgentHostManager.test|title=ServerAgentHostManager reports unexpected process exit|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/server/test/node/serverAgentHostManager.test|title=ServerAgentHostManager reports unexpected process exit|occurrence=1serverAgentHostManager.t…serverLifetimeService.test|title=ServerLifetimeService active() marks a consumer and dispose releases it|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/server/test/node/serverLifetimeService.test|title=ServerLifetimeService active() marks a consumer and dispose releases it|occurrence=1serverLifetimeService.te…serverLifetimeService.test|title=ServerLifetimeService dispose is idempotent|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/server/test/node/serverLifetimeService.test|title=ServerLifetimeService dispose is idempotent|occurrence=1serverLifetimeService.te…serverLifetimeService.test|title=ServerLifetimeService multiple active consumers require all to dispose|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/server/test/node/serverLifetimeService.test|title=ServerLifetimeService multiple active consumers require all to dispose|occurrence=1serverLifetimeService.te…serverLifetimeService.test|title=ServerLifetimeService same consumer name counted multiple times|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/server/test/node/serverLifetimeService.test|title=ServerLifetimeService same consumer name counted multiple times|occurrence=1serverLifetimeService.te…serverLifetimeService.test|title=ServerLifetimeService starts with no active consumers|occurrence=1 · introduced test · mocha:v1|namespace=vscode@05c208e9e28d8c1c723fa08f85e2b7a96092e8e5|file=vs/server/test/node/serverLifetimeService.test|title=ServerLifetimeService starts with no active consumers|occurrence=1serverLifetimeService.te…Focused concept · serverLifetimeService.ts ×8 · 67 introduced LOCserverLifetimeService.ts…

Graph controls are ready.

Interactive rendering requires JavaScript and WebGL. Use the native relationship evidence on this page while the interactive map is unavailable.

Native relationship evidence

Every exact file and test below is linked only from the concept that introduces it.

Introduced tests

Every collected test enters the hierarchy at exactly one concept.

No tests are introduced at this concept. Its intent tests are introduced by other concepts.

Introduced code

Every collected source range enters the hierarchy at exactly one concept.

1 file ranked by introduced lines: 67 introduced LOC across 8 ranges. Expand a file to inspect source; the > gutter marks introduced lines.

src/vs/server/node/serverLifetimeService.ts 67 introduced LOC · 8 ranges

Open complete file

1 > /*--------------------------------------------------------------------------------------------- serverLifetimeService.ts
2 > * Copyright (c) Microsoft Corporation. All rights reserved.
3 > * Licensed under the MIT License. See License.txt in the project root for license information.
4 > *--------------------------------------------------------------------------------------------*/
5 >
6 > import { Disposable, IDisposable, toDisposable } from '../../base/common/lifecycle.js';
7 > import { createDecorator } from '../../platform/instantiation/common/instantiation.js';
8 > import { ILogService } from '../../platform/log/common/log.js';
9 >
10 > export const IServerLifetimeService = createDecorator<IServerLifetimeService>('serverLifetimeService');
11 >
12 > export const SHUTDOWN_TIMEOUT = 5 * 60 * 1000;
13 >
14 > /** Options controlling the auto-shutdown behaviour. */
15 > export interface IServerLifetimeOptions {
16 > /** When `false` (default), the server never auto-shuts down. */
17 > readonly enableAutoShutdown?: boolean;
18 > /** When `true`, skip the 5-minute grace period on non-initial shutdowns. */
19 > readonly shutdownWithoutDelay?: boolean;
20 > }
21 >
22 > /**
23 > * Tracks active consumers (extension hosts, agent sessions, etc.) that keep
24 > * the server alive. When auto-shutdown is enabled, the service manages a
25 > * shutdown timer and fires {@link onDidShutdownRequested} when it is time for
26 > * the process to exit.
27 > */
28 > export interface IServerLifetimeService {
29 > readonly _serviceBrand: undefined;
30 >
31 > /**
32 > * Marks a consumer as active. The server will not auto-shutdown until the
33 > * returned {@link IDisposable} is disposed.
34 > */
35 > active(consumer: string): IDisposable;
36 >
37 > /**
38 > * Delays the auto-shutdown timer. If the server is currently in a shutdown
39 > * timeout (all consumers inactive), the timer is reset.
40 > */
41 > delay(): void;
42 >
43 > /** Whether any consumer is currently active. */
44 > readonly hasActiveConsumers: boolean;
45 > }
46 >
47 > export class ServerLifetimeService extends Disposable implements IServerLifetimeService {
48 > declare readonly _serviceBrand: undefined;
49 >
50 > private readonly _consumers = new Map<string, number>();
51 > private _totalCount = 0;
52 > private _shutdownTimer: ReturnType<typeof setTimeout> | undefined;
53 >
54 > constructor(
55 private readonly _options: IServerLifetimeOptions,
56 @ILogService private readonly _logService: ILogService,
63 }
64 }
66 > get hasActiveConsumers(): boolean {
67 return this._totalCount > 0;
68 }
70 > active(consumer: string): IDisposable {
71 const wasEmpty = this._totalCount === 0;
72 const current = this._consumers.get(consumer) ?? 0;
104 });
105 }
107 > delay(): void {
108 if (this._shutdownTimer) {
109 this._logService.debug('ServerLifetime: delay requested, resetting shutdown timer');
112 }
113 }
115 > private _scheduleShutdown(initial: boolean): void {
116 if (this._options.shutdownWithoutDelay && !initial) {
117 this._tryShutdown();
124 }
125 }
127 > private _tryShutdown(): void {
128 if (this._totalCount > 0) {
129 this._logService.debug('ServerLifetime: consumer became active, aborting shutdown');
135 process.exit(0);
136 }
138 > private _cancelShutdown(): void {
139 if (this._shutdownTimer) {
140 this._logService.debug('ServerLifetime: cancelling shutdown timer');