@hydranium/core 1.0.0-next.169 → 1.0.0-next.173

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/lib/langium/document-builder/document-builder.d.ts +8 -7
  2. package/lib/langium/document-builder/document-builder.d.ts.map +1 -1
  3. package/lib/langium/document-builder/document-builder.js +9 -8
  4. package/lib/langium/document-builder/document-builder.js.map +1 -1
  5. package/lib/langium/integrity/integrity-service.d.ts +8 -7
  6. package/lib/langium/integrity/integrity-service.d.ts.map +1 -1
  7. package/lib/langium/integrity/integrity-service.js +20 -12
  8. package/lib/langium/integrity/integrity-service.js.map +1 -1
  9. package/lib/langium/model-service/model-service.d.ts +27 -40
  10. package/lib/langium/model-service/model-service.d.ts.map +1 -1
  11. package/lib/langium/model-service/model-service.js +16 -25
  12. package/lib/langium/model-service/model-service.js.map +1 -1
  13. package/lib/langium/module.d.ts +1 -1
  14. package/lib/langium/module.js +1 -1
  15. package/lib/langium/module.js.map +1 -1
  16. package/lib/langium/workspace/hydranium-workspace-lock.d.ts +31 -2
  17. package/lib/langium/workspace/hydranium-workspace-lock.d.ts.map +1 -1
  18. package/lib/langium/workspace/hydranium-workspace-lock.js +41 -2
  19. package/lib/langium/workspace/hydranium-workspace-lock.js.map +1 -1
  20. package/lib/langium/workspace/write-lock-scope.d.ts +19 -10
  21. package/lib/langium/workspace/write-lock-scope.d.ts.map +1 -1
  22. package/lib/langium/workspace/write-lock-scope.js +11 -4
  23. package/lib/langium/workspace/write-lock-scope.js.map +1 -1
  24. package/lib/testing/make-test-services.d.ts +1 -1
  25. package/lib/testing/make-test-services.js +4 -4
  26. package/lib/testing/make-test-services.js.map +1 -1
  27. package/lib/testing/stub-model-service.d.ts +1 -1
  28. package/lib/testing/stub-model-service.js +1 -1
  29. package/package.json +5 -5
  30. package/src/langium/document-builder/document-builder.ts +9 -8
  31. package/src/langium/integrity/integrity-service.ts +27 -13
  32. package/src/langium/model-service/model-service.ts +35 -57
  33. package/src/langium/module.ts +2 -2
  34. package/src/langium/workspace/hydranium-workspace-lock.ts +66 -3
  35. package/src/langium/workspace/write-lock-scope.ts +23 -11
  36. package/src/testing/make-test-services.ts +5 -5
  37. package/src/testing/stub-model-service.ts +1 -1
@@ -8,7 +8,7 @@
8
8
  ********************************************************************************/
9
9
  import { defineMessage, ObservableValue, TIMED_OUT } from '@hydranium/protocol';
10
10
  import { DocumentState, UriUtils } from '@hydranium/langium';
11
- import { ReentrantWriteLockError, isInsideWriteLock } from '../workspace/write-lock-scope.js';
11
+ import { ReentrantWriteLockError, isInsideWriteLock, isWriteLockScopeInstalled } from '../workspace/write-lock-scope.js';
12
12
  import { AstDocument } from '../../documents/ast-document-manager.js';
13
13
  import { isConnectionGoneError } from '../../util/connection-liveness.js';
14
14
  import { IntegrityService } from '../integrity/integrity-service.js';
@@ -44,8 +44,8 @@ export class DefaultModelService {
44
44
  * (see {@link DocumentUriPolicy}).
45
45
  */
46
46
  uriPolicy;
47
- /** See {@link ModelServiceOptions.serializeBuilds}. Defaults to `true`. */
48
- serializeBuilds;
47
+ /** See {@link ModelServiceOptions.allowReentrantBuilds}. Defaults to `false`. */
48
+ allowReentrantBuilds;
49
49
  /**
50
50
  * Per-URI applyEdit coalescing: at most one in-flight `applyEditToLanguageClient`
51
51
  * RPC per URI, newest text wins. A newer settle while the current RPC is in
@@ -100,7 +100,7 @@ export class DefaultModelService {
100
100
  this.services = services;
101
101
  this.tracer = services.Tracer.for(options.logName ?? 'ModelService').trace('instantiated');
102
102
  this.uriPolicy = services.workspace.DocumentUriPolicy;
103
- this.serializeBuilds = ObservableValue.from(options.serializeBuilds ?? true);
103
+ this.allowReentrantBuilds = ObservableValue.from(options.allowReentrantBuilds ?? false);
104
104
  // Optional-chain so a harness that binds no WorkspaceManager awaits
105
105
  // `undefined` and resolves immediately; production hosts always have it
106
106
  // bound.
@@ -208,9 +208,9 @@ export class DefaultModelService {
208
208
  * where that build carries it. Langium alone does not coalesce concurrent
209
209
  * builds of one URI: two unserialised builds each run a full validation
210
210
  * pass and Langium appends the second set onto the first, duplicating every
211
- * diagnostic. Opt out via
212
- * {@link ModelServiceOptions.serializeBuilds} — see there for the
213
- * non-reentrancy hazard that is the reason the opt-out exists.
211
+ * diagnostic. A caller that already holds the lock builds without it only
212
+ * under {@link ModelServiceOptions.allowReentrantBuilds} — see there for the
213
+ * non-reentrancy hazard.
214
214
  *
215
215
  * An override calls the base before it awaits. Under an LSP connection the
216
216
  * store's change event has already asked the update handler to build a
@@ -253,30 +253,21 @@ export class DefaultModelService {
253
253
  // meant for category-partitioned passes). The user-visible result is every
254
254
  // diagnostic duplicated, plus double the validation work per write.
255
255
  //
256
- // Opt out via `ModelServiceOptions.serializeBuilds` — see there for
257
- // the non-reentrancy hazard that opt-out exists for.
258
- if (this.serializeBuilds.value) {
259
- // Fail loudly on the one shape the lock cannot survive. `WorkspaceLock`
260
- // is not reentrant: acquiring the write lock cancels the running holder,
261
- // so a caller already inside one — an integrity rule or build-phase pass
262
- // writing back through this facade — would cancel its own enclosing
263
- // build and then likely stall in the phase wait below. The check is
264
- // gated on `serializeBuilds` deliberately, because acquiring the lock IS
265
- // the hazard: with serialisation off the build takes no lock, which
266
- // makes the existing opt-out the guard's opt-out too.
267
- // Detection needs async-context propagation, so it is inert until a host
268
- // installs a tracker (`@hydranium/core/node` does) — see
269
- // `isInsideWriteLock`.
270
- if (isInsideWriteLock()) {
256
+ // A caller already inside the lock would cancel its own build and stall in
257
+ // the wait below; `allowReentrantBuilds` builds it unlocked, and without a
258
+ // tracker it cannot be told apart from any other caller.
259
+ const inside = isInsideWriteLock();
260
+ if (this.allowReentrantBuilds.value && (inside || !isWriteLockScopeInstalled())) {
261
+ await this.services.workspace.DocumentBuilder.update([documentUri], [], cancelToken);
262
+ }
263
+ else {
264
+ if (inside) {
271
265
  throw new ReentrantWriteLockError(uri);
272
266
  }
273
267
  // The build runs on the lock's own token, which a later write cancels;
274
268
  // the caller's token governs only the phase wait below.
275
269
  await this.services.workspace.DocumentBuilder.scheduleUpdate([documentUri], []);
276
270
  }
277
- else {
278
- await this.services.workspace.DocumentBuilder.update([documentUri], [], cancelToken);
279
- }
280
271
  return this.waitForDocumentStateCanonical(uri, state ?? IntegrityService.SettledState, cancelToken);
281
272
  }
282
273
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"model-service.js","sourceRoot":"","sources":["../../../src/langium/model-service/model-service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"model-service.js","sourceRoot":"","sources":["../../../src/langium/model-service/model-service.ts"],"names":[],"mappings":"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"}
@@ -154,7 +154,7 @@ export interface ServerAddedSharedServices<TProject extends Project = Project, T
154
154
  * `ModelService.rebuild` build through this slot's
155
155
  * `scheduleUpdate`, so narrowing here is a load-bearing contract:
156
156
  * a builder without it fails every LSP-driven build, and every
157
- * session write while `serializeBuilds` is on, at run time.
157
+ * session write that takes the lock, at run time.
158
158
  */
159
159
  DocumentBuilder: HydraniumDocumentBuilder;
160
160
  /**
@@ -130,7 +130,7 @@ export function createServerSharedModule(context) {
130
130
  DocumentBuilder: services => new HydraniumDocumentBuilder(services),
131
131
  // The write-lock scope this marks is inert unless a host installs a
132
132
  // scope tracker — `@hydranium/core/node` does.
133
- WorkspaceLock: () => new HydraniumWorkspaceLock(),
133
+ WorkspaceLock: services => new HydraniumWorkspaceLock(services),
134
134
  ProjectManager: services => new SingleProjectManager(services),
135
135
  SelfSaveRegistry: services => new DefaultSelfSaveRegistry(services),
136
136
  DocumentUriPolicy: () => new DefaultDocumentUriPolicy(),
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/langium/module.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/langium/module.ts"],"names":[],"mappings":"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"}
@@ -6,8 +6,25 @@
6
6
  *
7
7
  * SPDX-License-Identifier: MIT
8
8
  ********************************************************************************/
9
+ import { type Clock, type Tracer } from '@hydranium/protocol';
9
10
  import { DefaultWorkspaceLock, type MaybePromise } from '@hydranium/langium';
10
- import { type CancellationToken } from 'vscode-languageserver-protocol';
11
+ import { type CancellationToken, type Disposable } from 'vscode-languageserver-protocol';
12
+ import { type LogNameOptions } from '../diagnostics/logger.js';
13
+ import { type ServerSharedServicesMinimal } from '../shared-services.js';
14
+ /** Constructor options for {@link HydraniumWorkspaceLock}. */
15
+ export interface HydraniumWorkspaceLockOptions extends LogNameOptions {
16
+ /**
17
+ * How long a write may keep running after a later write cancelled it before
18
+ * the lock logs an error. Every write and read waits behind it meanwhile, so
19
+ * one that never ends stops the server. Defaults to 10 s; `0` turns the
20
+ * check off.
21
+ */
22
+ readonly stalledWriteWarnMs?: number;
23
+ }
24
+ /** The write action a {@link HydraniumWorkspaceLock} is running, with the timer its cancellation started. */
25
+ export interface RunningWrite {
26
+ stallTimer?: Disposable;
27
+ }
11
28
  /**
12
29
  * Langium's {@link DefaultWorkspaceLock} with the write action marked as a
13
30
  * write-lock scope, so anything it reaches can be asked whether the lock is
@@ -28,6 +45,11 @@ import { type CancellationToken } from 'vscode-languageserver-protocol';
28
45
  export declare class HydraniumWorkspaceLock extends DefaultWorkspaceLock {
29
46
  /** Backs {@link writeCancellations}. */
30
47
  protected cancelledWriteCount: number;
48
+ protected readonly clock: Clock;
49
+ protected readonly tracer: Tracer;
50
+ protected readonly stalledWriteWarnMs: number;
51
+ protected runningWrite?: RunningWrite;
52
+ constructor(services: Pick<ServerSharedServicesMinimal, 'Clock' | 'Tracer'>, options?: HydraniumWorkspaceLockOptions);
31
53
  /**
32
54
  * How many calls have cancelled the lock's latest write: every `write`,
33
55
  * which cancels the write before it, and every `cancelWrite`. A caller that
@@ -38,7 +60,14 @@ export declare class HydraniumWorkspaceLock extends DefaultWorkspaceLock {
38
60
  */
39
61
  get writeCancellations(): number;
40
62
  write(action: (token: CancellationToken) => MaybePromise<void>): Promise<void>;
41
- /** Counted here rather than in {@link write}, because Langium's `write` cancels through this method too. */
63
+ /** Run `action` as {@link runningWrite}, so a cancellation while it runs can time it. */
64
+ protected runWrite(action: (token: CancellationToken) => MaybePromise<void>, token: CancellationToken): Promise<void>;
65
+ /**
66
+ * Counted here rather than in {@link write}, because Langium's `write` cancels
67
+ * through this method too. A write running when this is called has been
68
+ * cancelled, by this call or an earlier one, so its timer starts here.
69
+ */
42
70
  cancelWrite(): void;
71
+ protected reportStalledWrite(): void;
43
72
  }
44
73
  //# sourceMappingURL=hydranium-workspace-lock.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"hydranium-workspace-lock.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-workspace-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,oBAAoB,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,KAAK,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAGxE;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,sBAAuB,SAAQ,oBAAoB;IAC7D,wCAAwC;IACxC,SAAS,CAAC,mBAAmB,SAAK;IAElC;;;;;;;OAOG;IACH,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAEQ,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,YAAY,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvF,4GAA4G;IACnG,WAAW,IAAI,IAAI;CAI9B"}
1
+ {"version":3,"file":"hydranium-workspace-lock.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-workspace-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,KAAK,KAAK,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,KAAK,iBAAiB,EAAE,KAAK,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACzF,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,KAAK,2BAA2B,EAAE,MAAM,uBAAuB,CAAC;AAGzE,8DAA8D;AAC9D,MAAM,WAAW,6BAA8B,SAAQ,cAAc;IAClE;;;;;OAKG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACvC;AAID,6GAA6G;AAC7G,MAAM,WAAW,YAAY;IAC1B,UAAU,CAAC,EAAE,UAAU,CAAC;CAC1B;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,sBAAuB,SAAQ,oBAAoB;IAC7D,wCAAwC;IACxC,SAAS,CAAC,mBAAmB,SAAK;IAClC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAChC,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAClC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IAC9C,SAAS,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;gBAE1B,QAAQ,EAAE,IAAI,CAAC,2BAA2B,EAAE,OAAO,GAAG,QAAQ,CAAC,EAAE,OAAO,GAAE,6BAAkC;IAOxH;;;;;;;OAOG;IACH,IAAI,kBAAkB,IAAI,MAAM,CAE/B;IAEQ,KAAK,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,YAAY,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAIvF,yFAAyF;cACzE,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC;IAa3H;;;;OAIG;IACM,WAAW,IAAI,IAAI;IAS5B,SAAS,CAAC,kBAAkB,IAAI,IAAI;CAQtC"}
@@ -8,6 +8,7 @@
8
8
  ********************************************************************************/
9
9
  import { DefaultWorkspaceLock } from '@hydranium/langium';
10
10
  import { runInWriteLockScope } from './write-lock-scope.js';
11
+ const DEFAULT_STALLED_WRITE_WARN_MS = 10_000;
11
12
  /**
12
13
  * Langium's {@link DefaultWorkspaceLock} with the write action marked as a
13
14
  * write-lock scope, so anything it reaches can be asked whether the lock is
@@ -28,6 +29,16 @@ import { runInWriteLockScope } from './write-lock-scope.js';
28
29
  export class HydraniumWorkspaceLock extends DefaultWorkspaceLock {
29
30
  /** Backs {@link writeCancellations}. */
30
31
  cancelledWriteCount = 0;
32
+ clock;
33
+ tracer;
34
+ stalledWriteWarnMs;
35
+ runningWrite;
36
+ constructor(services, options = {}) {
37
+ super();
38
+ this.clock = services.Clock;
39
+ this.tracer = services.Tracer.for(options.logName ?? 'WorkspaceLock');
40
+ this.stalledWriteWarnMs = options.stalledWriteWarnMs ?? DEFAULT_STALLED_WRITE_WARN_MS;
41
+ }
31
42
  /**
32
43
  * How many calls have cancelled the lock's latest write: every `write`,
33
44
  * which cancels the write before it, and every `cancelWrite`. A caller that
@@ -40,12 +51,40 @@ export class HydraniumWorkspaceLock extends DefaultWorkspaceLock {
40
51
  return this.cancelledWriteCount;
41
52
  }
42
53
  write(action) {
43
- return super.write(token => runInWriteLockScope(() => action(token)));
54
+ return super.write(token => runInWriteLockScope(() => this.runWrite(action, token)));
55
+ }
56
+ /** Run `action` as {@link runningWrite}, so a cancellation while it runs can time it. */
57
+ async runWrite(action, token) {
58
+ const running = {};
59
+ this.runningWrite = running;
60
+ try {
61
+ await action(token);
62
+ }
63
+ finally {
64
+ running.stallTimer?.dispose();
65
+ if (this.runningWrite === running) {
66
+ this.runningWrite = undefined;
67
+ }
68
+ }
44
69
  }
45
- /** Counted here rather than in {@link write}, because Langium's `write` cancels through this method too. */
70
+ /**
71
+ * Counted here rather than in {@link write}, because Langium's `write` cancels
72
+ * through this method too. A write running when this is called has been
73
+ * cancelled, by this call or an earlier one, so its timer starts here.
74
+ */
46
75
  cancelWrite() {
47
76
  this.cancelledWriteCount++;
77
+ const running = this.runningWrite;
78
+ if (running && !running.stallTimer && this.stalledWriteWarnMs > 0) {
79
+ running.stallTimer = this.clock.setTimer(() => this.reportStalledWrite(), this.stalledWriteWarnMs);
80
+ }
48
81
  super.cancelWrite();
49
82
  }
83
+ reportStalledWrite() {
84
+ this.tracer.error(`A write is still running ${this.stalledWriteWarnMs} ms after it was cancelled, and every write and read waits behind it. ` +
85
+ 'Likely causes: a model-service write or rebuild from inside a build in a host with no write-lock scope tracker, ' +
86
+ 'which waits for the build it runs in, or a write action that ignores its cancellation token. ' +
87
+ 'See https://github.com/eclipse-emfcloud/hydranium/issues/245.');
88
+ }
50
89
  }
51
90
  //# sourceMappingURL=hydranium-workspace-lock.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hydranium-workspace-lock.js","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-workspace-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF,OAAO,EAAE,oBAAoB,EAAqB,MAAM,oBAAoB,CAAC;AAE7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAE5D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,sBAAuB,SAAQ,oBAAoB;IAC7D,wCAAwC;IAC9B,mBAAmB,GAAG,CAAC,CAAC;IAElC;;;;;;;OAOG;IACH,IAAI,kBAAkB;QACnB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IACnC,CAAC;IAEQ,KAAK,CAAC,MAAwD;QACpE,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,4GAA4G;IACnG,WAAW;QACjB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,KAAK,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;CACH"}
1
+ {"version":3,"file":"hydranium-workspace-lock.js","sourceRoot":"","sources":["../../../src/langium/workspace/hydranium-workspace-lock.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAGlF,OAAO,EAAE,oBAAoB,EAAqB,MAAM,oBAAoB,CAAC;AAI7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAa5D,MAAM,6BAA6B,GAAG,MAAM,CAAC;AAO7C;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,sBAAuB,SAAQ,oBAAoB;IAC7D,wCAAwC;IAC9B,mBAAmB,GAAG,CAAC,CAAC;IACf,KAAK,CAAQ;IACb,MAAM,CAAS;IACf,kBAAkB,CAAS;IACpC,YAAY,CAAgB;IAEtC,YAAY,QAA+D,EAAE,UAAyC,EAAE;QACrH,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,IAAI,eAAe,CAAC,CAAC;QACtE,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,IAAI,6BAA6B,CAAC;IACzF,CAAC;IAED;;;;;;;OAOG;IACH,IAAI,kBAAkB;QACnB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IACnC,CAAC;IAEQ,KAAK,CAAC,MAAwD;QACpE,OAAO,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,yFAAyF;IAC/E,KAAK,CAAC,QAAQ,CAAC,MAAwD,EAAE,KAAwB;QACxG,MAAM,OAAO,GAAiB,EAAE,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;QAC5B,IAAI,CAAC;YACF,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;gBAAS,CAAC;YACR,OAAO,CAAC,UAAU,EAAE,OAAO,EAAE,CAAC;YAC9B,IAAI,IAAI,CAAC,YAAY,KAAK,OAAO,EAAE,CAAC;gBACjC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;YACjC,CAAC;QACJ,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACM,WAAW;QACjB,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;QAClC,IAAI,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,kBAAkB,GAAG,CAAC,EAAE,CAAC;YACjE,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;QACtG,CAAC;QACD,KAAK,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IAES,kBAAkB;QACzB,IAAI,CAAC,MAAM,CAAC,KAAK,CACd,4BAA4B,IAAI,CAAC,kBAAkB,wEAAwE;YACxH,kHAAkH;YAClH,+FAA+F;YAC/F,+DAA+D,CACpE,CAAC;IACL,CAAC;CACH"}
@@ -21,13 +21,17 @@
21
21
  * Answering it needs async-context propagation, which has no browser-neutral
22
22
  * implementation: Node's `AsyncLocalStorage` is a `node:async_hooks` import (so
23
23
  * it cannot appear on the portable `.` entry, which `check:neutral` gates), and
24
- * TC39's `AsyncContext` is unshipped. Hence the same seam shape the log file-tee
25
- * uses: this module declares the contract and defaults to inert, and
26
- * `@hydranium/core/node` installs a real implementation at entry load. A browser
27
- * bundle therefore gets NO detection rather than a broken approximation, which
28
- * is the right degradation — the reentrant shape is a server-side build concern,
29
- * and a false negative costs the pre-existing stall while a false positive would
30
- * reject a legitimate write.
24
+ * TC39's `AsyncContext` is unshipped. Userland polyfills lose the context at a
25
+ * native `await` unless every awaited path, Langium's included, is transpiled.
26
+ * Hence the same seam shape the log file-tee uses: this module declares the
27
+ * contract and defaults to inert, and `@hydranium/core/node` installs a real
28
+ * implementation at entry load. A browser bundle therefore gets NO detection
29
+ * rather than a broken approximation, which is the right degradation — the
30
+ * reentrant shape is a server-side build concern, and a false negative costs
31
+ * the stall, which `HydraniumWorkspaceLock` reports once the stalled write
32
+ * outlives its cancellation, while a false positive would reject a legitimate
33
+ * write. Detection without a tracker is tracked in
34
+ * https://github.com/eclipse-emfcloud/hydranium/issues/245.
31
35
  */
32
36
  export interface WriteLockScope {
33
37
  /** Run `fn` marked as executing inside a write-lock holder. */
@@ -51,6 +55,11 @@ export declare function runInWriteLockScope<T>(fn: () => T): T;
51
55
  * gaining spurious rejections.
52
56
  */
53
57
  export declare function isInsideWriteLock(): boolean;
58
+ /**
59
+ * Whether a write-lock scope tracker is installed, which is what makes a
60
+ * `false` from {@link isInsideWriteLock} mean "outside" rather than "unknown".
61
+ */
62
+ export declare function isWriteLockScopeInstalled(): boolean;
54
63
  /**
55
64
  * Thrown when the model facade is reached from inside a workspace write-lock
56
65
  * holder — typically an integrity rule or build-phase pass writing through
@@ -59,9 +68,9 @@ export declare function isInsideWriteLock(): boolean;
59
68
  * Named rather than a bare `Error` because the remedy is specific and worth
60
69
  * pointing at: either move the write out of the build (integrity rules that
61
70
  * persist repairs should write through `FileSystemProvider.writeFile`, which
62
- * takes no lock), or set `ModelServiceOptions.serializeBuilds: false`, which
63
- * keeps the facade's build from cancelling the holder but not its wait from
64
- * stalling on a document that needs a re-queue.
71
+ * takes no lock), or set `ModelServiceOptions.allowReentrantBuilds: true`,
72
+ * which keeps the facade's build from cancelling the holder but not its wait
73
+ * from stalling on a document that needs a re-queue.
65
74
  */
66
75
  export declare class ReentrantWriteLockError extends Error {
67
76
  readonly uri: string;
@@ -1 +1 @@
1
- {"version":3,"file":"write-lock-scope.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/write-lock-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,cAAc;IAC5B,+DAA+D;IAC/D,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IACvB,gEAAgE;IAChE,QAAQ,IAAI,OAAO,CAAC;CACtB;AAID,qFAAqF;AACrF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,GAAG,IAAI,CAEzE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAErD;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM;gBAAX,GAAG,EAAE,MAAM;CASlC"}
1
+ {"version":3,"file":"write-lock-scope.d.ts","sourceRoot":"","sources":["../../../src/langium/workspace/write-lock-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAElF;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,MAAM,WAAW,cAAc;IAC5B,+DAA+D;IAC/D,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;IACvB,gEAAgE;IAChE,QAAQ,IAAI,OAAO,CAAC;CACtB;AAID,qFAAqF;AACrF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS,GAAG,IAAI,CAEzE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAErD;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,IAAI,OAAO,CAE3C;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,OAAO,CAEnD;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,uBAAwB,SAAQ,KAAK;IACnC,QAAQ,CAAC,GAAG,EAAE,MAAM;gBAAX,GAAG,EAAE,MAAM;CASlC"}
@@ -29,6 +29,13 @@ export function runInWriteLockScope(fn) {
29
29
  export function isInsideWriteLock() {
30
30
  return writeLockScope?.isInside() ?? false;
31
31
  }
32
+ /**
33
+ * Whether a write-lock scope tracker is installed, which is what makes a
34
+ * `false` from {@link isInsideWriteLock} mean "outside" rather than "unknown".
35
+ */
36
+ export function isWriteLockScopeInstalled() {
37
+ return writeLockScope !== undefined;
38
+ }
32
39
  /**
33
40
  * Thrown when the model facade is reached from inside a workspace write-lock
34
41
  * holder — typically an integrity rule or build-phase pass writing through
@@ -37,9 +44,9 @@ export function isInsideWriteLock() {
37
44
  * Named rather than a bare `Error` because the remedy is specific and worth
38
45
  * pointing at: either move the write out of the build (integrity rules that
39
46
  * persist repairs should write through `FileSystemProvider.writeFile`, which
40
- * takes no lock), or set `ModelServiceOptions.serializeBuilds: false`, which
41
- * keeps the facade's build from cancelling the holder but not its wait from
42
- * stalling on a document that needs a re-queue.
47
+ * takes no lock), or set `ModelServiceOptions.allowReentrantBuilds: true`,
48
+ * which keeps the facade's build from cancelling the holder but not its wait
49
+ * from stalling on a document that needs a re-queue.
43
50
  */
44
51
  export class ReentrantWriteLockError extends Error {
45
52
  uri;
@@ -47,7 +54,7 @@ export class ReentrantWriteLockError extends Error {
47
54
  super(`Model facade reached for '${uri}' from inside a workspace write-lock holder. ` +
48
55
  'Acquiring the write lock would cancel the enclosing build and may stall this call. ' +
49
56
  'Write through FileSystemProvider.writeFile from a build-phase pass, or set ' +
50
- 'ModelServiceOptions.serializeBuilds: false to opt out of build serialisation.');
57
+ 'ModelServiceOptions.allowReentrantBuilds: true to build without the lock from inside it.');
51
58
  this.uri = uri;
52
59
  this.name = 'ReentrantWriteLockError';
53
60
  }
@@ -1 +1 @@
1
- {"version":3,"file":"write-lock-scope.js","sourceRoot":"","sources":["../../../src/langium/workspace/write-lock-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAgClF,IAAI,cAA0C,CAAC;AAE/C,qFAAqF;AACrF,MAAM,UAAU,iBAAiB,CAAC,KAAiC;IAChE,cAAc,GAAG,KAAK,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAI,EAAW;IAC/C,OAAO,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACzD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB;IAC9B,OAAO,cAAc,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC;AAC9C,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAC1B;IAArB,YAAqB,GAAW;QAC7B,KAAK,CACF,6BAA6B,GAAG,+CAA+C;YAC5E,qFAAqF;YACrF,6EAA6E;YAC7E,+EAA+E,CACpF,CAAC;QANgB,QAAG,GAAH,GAAG,CAAQ;QAO7B,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACzC,CAAC;CACH"}
1
+ {"version":3,"file":"write-lock-scope.js","sourceRoot":"","sources":["../../../src/langium/workspace/write-lock-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;kFAOkF;AAoClF,IAAI,cAA0C,CAAC;AAE/C,qFAAqF;AACrF,MAAM,UAAU,iBAAiB,CAAC,KAAiC;IAChE,cAAc,GAAG,KAAK,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAI,EAAW;IAC/C,OAAO,cAAc,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AACzD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB;IAC9B,OAAO,cAAc,EAAE,QAAQ,EAAE,IAAI,KAAK,CAAC;AAC9C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB;IACtC,OAAO,cAAc,KAAK,SAAS,CAAC;AACvC,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAC1B;IAArB,YAAqB,GAAW;QAC7B,KAAK,CACF,6BAA6B,GAAG,+CAA+C;YAC5E,qFAAqF;YACrF,6EAA6E;YAC7E,0FAA0F,CAC/F,CAAC;QANgB,QAAG,GAAH,GAAG,CAAQ;QAO7B,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACzC,CAAC;CACH"}
@@ -186,7 +186,7 @@ export interface MakeTestServicesOptions<TAst extends AstNode = AstNode, TDiagno
186
186
  modelService?: (services: ServerSharedServices<TProject>) => ModelService<TAst, TDiagnostic, TTransfer>;
187
187
  /**
188
188
  * Framework {@link ModelServiceOptions} for the DEFAULT stub service, so a
189
- * test can reach an option-gated path (`serializeBuilds`) without supplying
189
+ * test can reach an option-gated path (`allowReentrantBuilds`) without supplying
190
190
  * a whole {@link modelService} factory. Ignored when `modelService` is
191
191
  * given — that factory owns its own construction.
192
192
  */
@@ -37,15 +37,15 @@ import { makeStubWritableFileSystem } from './stub-writable-file-system.js';
37
37
  export function makeTestServices(options = {}) {
38
38
  const documents = makeStubLangiumDocuments(options.seedDocuments);
39
39
  const textDocuments = makeStubHydraniumTextDocuments();
40
- const workspaceLock = new HydraniumWorkspaceLock();
40
+ const logger = options.logger ?? new NoopLogger();
41
+ const clock = options.clock ?? new SystemClock();
42
+ const tracer = new DefaultTracer(logger, clock);
43
+ const workspaceLock = new HydraniumWorkspaceLock({ Clock: clock, Tracer: tracer });
41
44
  const documentBuilder = makeStubDocumentBuilder(workspaceLock);
42
45
  const selfSaveRegistry = makeStubSelfSaveRegistry();
43
46
  const fileSystem = makeStubWritableFileSystem(selfSaveRegistry);
44
47
  const projectManager = makeStubProjectManager(options.seedProjects);
45
48
  const astDocumentManager = makeStubAstDocumentManager(textDocuments, fileSystem, documents);
46
- const logger = options.logger ?? new NoopLogger();
47
- const clock = options.clock ?? new SystemClock();
48
- const tracer = new DefaultTracer(logger, clock);
49
49
  const documentUriPolicy = options.documentUriPolicy ?? new DefaultDocumentUriPolicy();
50
50
  const serviceRegistry = options.languages
51
51
  ? makeStubServiceRegistry(options.languages, { openLanguageIds: options.openLanguageIds })
@@ -1 +1 @@
1
- {"version":3,"file":"make-test-services.js","sourceRoot":"","sources":["../../src/testing/make-test-services.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"make-test-services.js","sourceRoot":"","sources":["../../src/testing/make-test-services.ts"],"names":[],"mappings":"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"}
@@ -21,7 +21,7 @@ export type StubModelService<TAst extends AstNode, TDiagnostic extends AstDiagno
21
21
  * `makeTestServices` wires this stub automatically.
22
22
  *
23
23
  * `options` are the framework {@link ModelServiceOptions}, forwarded verbatim, so
24
- * a test can exercise an option-gated code path (`serializeBuilds`) without
24
+ * a test can exercise an option-gated code path (`allowReentrantBuilds`) without
25
25
  * hand-rolling a subclass just to reach the constructor.
26
26
  *
27
27
  * Adopters that need richer override behaviour — the framework's own extension
@@ -32,7 +32,7 @@ class StubModelServiceImpl extends DefaultModelService {
32
32
  * `makeTestServices` wires this stub automatically.
33
33
  *
34
34
  * `options` are the framework {@link ModelServiceOptions}, forwarded verbatim, so
35
- * a test can exercise an option-gated code path (`serializeBuilds`) without
35
+ * a test can exercise an option-gated code path (`allowReentrantBuilds`) without
36
36
  * hand-rolling a subclass just to reach the constructor.
37
37
  *
38
38
  * Adopters that need richer override behaviour — the framework's own extension
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hydranium/core",
3
- "version": "1.0.0-next.169",
3
+ "version": "1.0.0-next.173",
4
4
  "description": "Foundational runtime of the hydranium framework: AST coordination layer (services, integrity, AST extension, serialization, multi-client documents) plus the LSP textual head at the /lsp subpath. Consumed by protocol-head packages (@hydranium/data-server, @hydranium/glsp-server).",
5
5
  "keywords": [
6
6
  "hydranium",
@@ -104,8 +104,8 @@
104
104
  "diff": "^5.2.0"
105
105
  },
106
106
  "devDependencies": {
107
- "@hydranium/langium": "1.0.0-next.169",
108
- "@hydranium/protocol": "1.0.0-next.169",
107
+ "@hydranium/langium": "1.0.0-next.173",
108
+ "@hydranium/protocol": "1.0.0-next.173",
109
109
  "@playwright/test": "^1.40.0",
110
110
  "@types/diff": "^5.2.0",
111
111
  "rimraf": "^5.0.0",
@@ -117,8 +117,8 @@
117
117
  "vscode-languageserver-types": "^3.17.5"
118
118
  },
119
119
  "peerDependencies": {
120
- "@hydranium/langium": "1.0.0-next.169",
121
- "@hydranium/protocol": "1.0.0-next.169",
120
+ "@hydranium/langium": "1.0.0-next.173",
121
+ "@hydranium/protocol": "1.0.0-next.173",
122
122
  "@playwright/test": "^1.40.0",
123
123
  "vscode-jsonrpc": "9.0.1",
124
124
  "vscode-languageserver": "~10.0.1",
@@ -1068,7 +1068,7 @@ export class HydraniumDocumentBuilder extends DefaultDocumentBuilder {
1068
1068
  * across two different builds.
1069
1069
  *
1070
1070
  * Builds outside the lock are not hypothetical even without an adopter: the
1071
- * model service with `serializeBuilds` off starts one. Two locked builds
1071
+ * model service under `allowReentrantBuilds` starts one. Two locked builds
1072
1072
  * never overlap, since the lock starts a write only once the write it
1073
1073
  * cancelled has unwound.
1074
1074
  */
@@ -1246,7 +1246,7 @@ export class HydraniumDocumentBuilder extends DefaultDocumentBuilder {
1246
1246
  // replacing it, and the publisher reads that array when it is invoked. A
1247
1247
  // build settling inside that window therefore appends after this call has
1248
1248
  // already deduped, and the appended duplicate is published by the listener
1249
- // of the build that deduped. Only `serializeBuilds` closes the window.
1249
+ // of the build that deduped. Only the write lock closes the window.
1250
1250
  //
1251
1251
  // Dedupe before rendering: rendering is deterministic, so it cannot
1252
1252
  // change which entries are structurally equal, and fewer survive to render.
@@ -1372,8 +1372,8 @@ export class HydraniumDocumentBuilder extends DefaultDocumentBuilder {
1372
1372
  * twice: Langium's validate appends to `document.diagnostics` when they are
1373
1373
  * already set — deliberately, so a category-partitioned pass keeps the earlier
1374
1374
  * category's findings — and a repeated FULL pass therefore doubles the list.
1375
- * `ModelServiceOptions.serializeBuilds` prevents that at the source; this is
1376
- * the net for configurations that allow concurrent builds anyway.
1375
+ * The write lock prevents that at the source; this is the net for builds
1376
+ * that skip it, as `ModelServiceOptions.allowReentrantBuilds` lets one do.
1377
1377
  *
1378
1378
  * Clearing the list before a pass is NOT an alternative: the append happens at
1379
1379
  * pass completion, so two interleaved passes both clear, both finish, and the
@@ -1448,10 +1448,11 @@ export class HydraniumDocumentBuilder extends DefaultDocumentBuilder {
1448
1448
  * **It inherits {@link dedupeDiagnostics}'s window, and therefore the same
1449
1449
  * precondition.** A build settling inside the listener window appends
1450
1450
  * diagnostics this pass never saw, and the publisher of the build that
1451
- * rendered sends them — unrendered. `ModelServiceOptions.serializeBuilds`
1452
- * closes it and defaults to `true`, so "every diagnostic is rendered" holds
1453
- * by default and is an opt-out rather than a guarantee. Opting out accepts
1454
- * unrendered diagnostics on exactly the terms it already accepts duplicates.
1451
+ * rendered sends them — unrendered. The write lock closes it, so "every
1452
+ * diagnostic is rendered" holds while
1453
+ * `ModelServiceOptions.allowReentrantBuilds` is `false`, its default.
1454
+ * Turning it on accepts unrendered diagnostics on exactly the terms it
1455
+ * already accepts duplicates.
1455
1456
  *
1456
1457
  * Entries are REPLACED rather than mutated: `sendDiagnostics` passes the
1457
1458
  * array by reference and serialises later, so an in-place message mutation