@fluidframework/container-runtime 0.59.2000-63294 → 0.59.3000-66610

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 (138) hide show
  1. package/.eslintrc.js +0 -1
  2. package/dist/batchTracker.js +1 -1
  3. package/dist/batchTracker.js.map +1 -1
  4. package/dist/blobManager.js +8 -8
  5. package/dist/blobManager.js.map +1 -1
  6. package/dist/connectionTelemetry.js +8 -8
  7. package/dist/connectionTelemetry.js.map +1 -1
  8. package/dist/containerHandleContext.js +1 -1
  9. package/dist/containerHandleContext.js.map +1 -1
  10. package/dist/containerRuntime.d.ts +27 -17
  11. package/dist/containerRuntime.d.ts.map +1 -1
  12. package/dist/containerRuntime.js +149 -174
  13. package/dist/containerRuntime.js.map +1 -1
  14. package/dist/dataStore.js +1 -1
  15. package/dist/dataStore.js.map +1 -1
  16. package/dist/dataStoreContext.d.ts.map +1 -1
  17. package/dist/dataStoreContext.js +44 -44
  18. package/dist/dataStoreContext.js.map +1 -1
  19. package/dist/dataStoreContexts.d.ts +2 -2
  20. package/dist/dataStoreContexts.d.ts.map +1 -1
  21. package/dist/dataStoreContexts.js +8 -8
  22. package/dist/dataStoreContexts.js.map +1 -1
  23. package/dist/dataStores.d.ts +4 -2
  24. package/dist/dataStores.d.ts.map +1 -1
  25. package/dist/dataStores.js +45 -33
  26. package/dist/dataStores.js.map +1 -1
  27. package/dist/garbageCollection.d.ts +23 -23
  28. package/dist/garbageCollection.d.ts.map +1 -1
  29. package/dist/garbageCollection.js +81 -50
  30. package/dist/garbageCollection.js.map +1 -1
  31. package/dist/opTelemetry.js +1 -1
  32. package/dist/opTelemetry.js.map +1 -1
  33. package/dist/orderedClientElection.d.ts.map +1 -1
  34. package/dist/orderedClientElection.js +2 -2
  35. package/dist/orderedClientElection.js.map +1 -1
  36. package/dist/packageVersion.d.ts +1 -1
  37. package/dist/packageVersion.js +1 -1
  38. package/dist/packageVersion.js.map +1 -1
  39. package/dist/pendingStateManager.js +17 -17
  40. package/dist/pendingStateManager.js.map +1 -1
  41. package/dist/runWhileConnectedCoordinator.js +1 -1
  42. package/dist/runWhileConnectedCoordinator.js.map +1 -1
  43. package/dist/runningSummarizer.d.ts.map +1 -1
  44. package/dist/runningSummarizer.js +7 -6
  45. package/dist/runningSummarizer.js.map +1 -1
  46. package/dist/summarizer.d.ts.map +1 -1
  47. package/dist/summarizer.js +4 -3
  48. package/dist/summarizer.js.map +1 -1
  49. package/dist/summarizerClientElection.js.map +1 -1
  50. package/dist/summarizerHeuristics.d.ts +1 -1
  51. package/dist/summarizerHeuristics.d.ts.map +1 -1
  52. package/dist/summarizerHeuristics.js +1 -1
  53. package/dist/summarizerHeuristics.js.map +1 -1
  54. package/dist/summarizerTypes.d.ts +4 -2
  55. package/dist/summarizerTypes.d.ts.map +1 -1
  56. package/dist/summarizerTypes.js.map +1 -1
  57. package/dist/summaryCollection.js +2 -2
  58. package/dist/summaryCollection.js.map +1 -1
  59. package/dist/summaryFormat.d.ts +37 -11
  60. package/dist/summaryFormat.d.ts.map +1 -1
  61. package/dist/summaryFormat.js +12 -4
  62. package/dist/summaryFormat.js.map +1 -1
  63. package/dist/summaryGenerator.d.ts.map +1 -1
  64. package/dist/summaryGenerator.js +6 -4
  65. package/dist/summaryGenerator.js.map +1 -1
  66. package/dist/summaryManager.js +5 -5
  67. package/dist/summaryManager.js.map +1 -1
  68. package/dist/throttler.js +2 -2
  69. package/dist/throttler.js.map +1 -1
  70. package/lib/blobManager.js.map +1 -1
  71. package/lib/containerRuntime.d.ts +27 -17
  72. package/lib/containerRuntime.d.ts.map +1 -1
  73. package/lib/containerRuntime.js +68 -93
  74. package/lib/containerRuntime.js.map +1 -1
  75. package/lib/dataStore.js.map +1 -1
  76. package/lib/dataStoreContext.d.ts.map +1 -1
  77. package/lib/dataStoreContext.js.map +1 -1
  78. package/lib/dataStoreContexts.d.ts +2 -2
  79. package/lib/dataStoreContexts.d.ts.map +1 -1
  80. package/lib/dataStoreContexts.js +2 -2
  81. package/lib/dataStoreContexts.js.map +1 -1
  82. package/lib/dataStores.d.ts +4 -2
  83. package/lib/dataStores.d.ts.map +1 -1
  84. package/lib/dataStores.js +22 -10
  85. package/lib/dataStores.js.map +1 -1
  86. package/lib/garbageCollection.d.ts +23 -23
  87. package/lib/garbageCollection.d.ts.map +1 -1
  88. package/lib/garbageCollection.js +68 -37
  89. package/lib/garbageCollection.js.map +1 -1
  90. package/lib/opTelemetry.js.map +1 -1
  91. package/lib/orderedClientElection.d.ts.map +1 -1
  92. package/lib/orderedClientElection.js.map +1 -1
  93. package/lib/packageVersion.d.ts +1 -1
  94. package/lib/packageVersion.js +1 -1
  95. package/lib/packageVersion.js.map +1 -1
  96. package/lib/pendingStateManager.js.map +1 -1
  97. package/lib/runningSummarizer.d.ts.map +1 -1
  98. package/lib/runningSummarizer.js +4 -3
  99. package/lib/runningSummarizer.js.map +1 -1
  100. package/lib/summarizer.d.ts.map +1 -1
  101. package/lib/summarizer.js +1 -0
  102. package/lib/summarizer.js.map +1 -1
  103. package/lib/summarizerClientElection.js.map +1 -1
  104. package/lib/summarizerHeuristics.d.ts +1 -1
  105. package/lib/summarizerHeuristics.d.ts.map +1 -1
  106. package/lib/summarizerHeuristics.js +1 -1
  107. package/lib/summarizerHeuristics.js.map +1 -1
  108. package/lib/summarizerTypes.d.ts +4 -2
  109. package/lib/summarizerTypes.d.ts.map +1 -1
  110. package/lib/summarizerTypes.js.map +1 -1
  111. package/lib/summaryCollection.js.map +1 -1
  112. package/lib/summaryFormat.d.ts +37 -11
  113. package/lib/summaryFormat.d.ts.map +1 -1
  114. package/lib/summaryFormat.js +10 -2
  115. package/lib/summaryFormat.js.map +1 -1
  116. package/lib/summaryGenerator.d.ts.map +1 -1
  117. package/lib/summaryGenerator.js +2 -0
  118. package/lib/summaryGenerator.js.map +1 -1
  119. package/lib/summaryManager.js.map +1 -1
  120. package/lib/throttler.js.map +1 -1
  121. package/package.json +26 -20
  122. package/src/blobManager.ts +3 -3
  123. package/src/containerRuntime.ts +108 -137
  124. package/src/dataStoreContext.ts +8 -11
  125. package/src/dataStoreContexts.ts +5 -5
  126. package/src/dataStores.ts +30 -13
  127. package/src/garbageCollection.ts +100 -57
  128. package/src/orderedClientElection.ts +5 -10
  129. package/src/packageVersion.ts +1 -1
  130. package/src/pendingStateManager.ts +2 -2
  131. package/src/runningSummarizer.ts +8 -9
  132. package/src/summarizer.ts +2 -2
  133. package/src/summarizerHeuristics.ts +1 -1
  134. package/src/summarizerTypes.ts +8 -6
  135. package/src/summaryFormat.ts +38 -11
  136. package/src/summaryGenerator.ts +7 -5
  137. package/src/summaryManager.ts +2 -2
  138. package/src/throttler.ts +1 -1
@@ -74,19 +74,19 @@ export function hasIsolatedChannels(attributes: ReadFluidDataStoreAttributes): b
74
74
  return !!attributes.summaryFormatVersion && !attributes.disableIsolatedChannels;
75
75
  }
76
76
 
77
- export type GCVersion = number;
78
- export interface IContainerRuntimeMetadata extends ICreateContainerMetadata {
77
+ export interface IContainerRuntimeMetadata extends ICreateContainerMetadata, IGCMetadata {
79
78
  readonly summaryFormatVersion: 1;
80
- /** The last message processed at the time of summary. Only primitive propertiy types are added to the summary. */
79
+ /** The last message processed at the time of summary. Only primitive property types are added to the summary. */
81
80
  readonly message: ISummaryMetadataMessage | undefined;
82
81
  /** True if channels are not isolated in .channels subtrees, otherwise isolated. */
83
82
  readonly disableIsolatedChannels?: true;
84
- /** 0 to disable GC, > 0 to enable GC, undefined defaults to disabled. */
85
- readonly gcFeature?: GCVersion;
86
- /** Counter of the last summary happened, increments every time we summarize */
83
+ /** The summary number for a container's summary. Incremented on summaries throughout its lifetime. */
84
+ readonly summaryNumber?: number;
85
+ /**
86
+ * @deprecated - User summaryNumber instead.
87
+ * Counter of the last summary happened, increments every time we summarize
88
+ */
87
89
  readonly summaryCount?: number;
88
- /** If this is present, the session for this container will expire after this time and the container will close */
89
- readonly sessionExpiryTimeoutMs?: number;
90
90
  }
91
91
 
92
92
  export interface ICreateContainerMetadata {
@@ -96,6 +96,25 @@ export interface ICreateContainerMetadata {
96
96
  createContainerTimestamp?: number;
97
97
  }
98
98
 
99
+ export type GCVersion = number;
100
+ export interface IGCMetadata {
101
+ /**
102
+ * The version of the GC code that was run to generate the GC data that is written in the summary.
103
+ * Also, used to determine whether GC is enabled for this container or not:
104
+ * - A value of 0 or undefined means GC is disabled.
105
+ * - A value greater than 0 means GC is enabled.
106
+ */
107
+ readonly gcFeature?: GCVersion;
108
+ /** If this is present, the session for this container will expire after this time and the container will close */
109
+ readonly sessionExpiryTimeoutMs?: number;
110
+ /**
111
+ * Tells whether the GC sweep phase is enabled for this container.
112
+ * - True means sweep phase is enabled.
113
+ * - False means sweep phase is disabled. If GC is disabled as per gcFeature, sweep is also disabled.
114
+ */
115
+ readonly sweepEnabled?: boolean;
116
+ }
117
+
99
118
  /** The properties of an ISequencedDocumentMessage to be stored in the metadata blob in summary. */
100
119
  export type ISummaryMetadataMessage = Pick<ISequencedDocumentMessage,
101
120
  | "clientId"
@@ -146,7 +165,7 @@ export function rootHasIsolatedChannels(metadata?: IContainerRuntimeMetadata): b
146
165
  return !!metadata && !metadata.disableIsolatedChannels;
147
166
  }
148
167
 
149
- export function getGCVersion(metadata?: IContainerRuntimeMetadata): GCVersion {
168
+ export function getGCVersion(metadata?: IGCMetadata): GCVersion {
150
169
  if (!metadata) {
151
170
  // Force to 0/disallowed in prior versions
152
171
  return 0;
@@ -168,11 +187,18 @@ export const dataStoreAttributesBlobName = ".component";
168
187
 
169
188
  /**
170
189
  * Modifies summary tree and stats to put tree under .channels tree.
171
- * Converts from: {
190
+ * Converts from:
191
+ * ```ts
192
+ * {
172
193
  * type: SummaryType.Tree,
173
194
  * tree: { a: {...}, b: {...}, c: {...} },
174
195
  * }
175
- * to: {
196
+ * ```
197
+ *
198
+ * to:
199
+ *
200
+ * ```ts
201
+ * {
176
202
  * type: SummaryType.Tree,
177
203
  * tree: {
178
204
  * ".channels": {
@@ -181,6 +207,7 @@ export const dataStoreAttributesBlobName = ".component";
181
207
  * },
182
208
  * },
183
209
  * }
210
+ * ```
184
211
  * And adds +1 to treeNodeCount in stats.
185
212
  * @param summarizeResult - summary tree and stats to modify
186
213
  */
@@ -32,9 +32,9 @@ import {
32
32
  import { IClientSummaryWatcher } from "./summaryCollection";
33
33
 
34
34
  export type raceTimerResult<T> =
35
- { result: "done"; value: T } |
36
- { result: IPromiseTimerResult["timerResult"] } |
37
- { result: "cancelled" };
35
+ { result: "done"; value: T; } |
36
+ { result: IPromiseTimerResult["timerResult"]; } |
37
+ { result: "cancelled"; };
38
38
 
39
39
  /** Helper function to wait for a promise or PromiseTimer to elapse. */
40
40
  export async function raceTimer<T>(
@@ -195,6 +195,8 @@ export class SummaryGenerator {
195
195
  const { refreshLatestAck, fullTree } = options;
196
196
  const logger = ChildLogger.create(this.logger, undefined, { all: summarizeProps });
197
197
 
198
+ // Note: timeSinceLastAttempt and timeSinceLastSummary for the
199
+ // first summary are basically the time since the summarizer was loaded.
198
200
  const timeSinceLastAttempt = Date.now() - this.heuristicData.lastAttempt.summaryTime;
199
201
  const timeSinceLastSummary = Date.now() - this.heuristicData.lastSuccessfulSummary.summaryTime;
200
202
  let summarizeTelemetryProps: SummaryGeneratorTelemetry = {
@@ -312,7 +314,7 @@ export class SummaryGenerator {
312
314
  }
313
315
 
314
316
  // Log event here on summary success only, as Summarize_cancel duplicates failure logging.
315
- summarizeEvent.reportEvent("generate", {...summarizeTelemetryProps});
317
+ summarizeEvent.reportEvent("generate", { ...summarizeTelemetryProps });
316
318
  resultsBuilder.summarySubmitted.resolve({ success: true, data: summaryData });
317
319
  } catch (error) {
318
320
  return fail("submitSummaryFailure", error);
@@ -381,7 +383,7 @@ export class SummaryGenerator {
381
383
  resultsBuilder.receivedSummaryAckOrNack.resolve({ success: true, data: {
382
384
  summaryAckOp: ackNackOp,
383
385
  ackNackDuration,
384
- }});
386
+ } });
385
387
  } else {
386
388
  // Check for retryDelay in summaryNack response.
387
389
  assert(ackNackOp.type === MessageType.SummaryNack, 0x274 /* "type check" */);
@@ -102,7 +102,7 @@ export class SummaryManager implements IDisposable {
102
102
  this.logger = ChildLogger.create(
103
103
  parentLogger,
104
104
  "SummaryManager",
105
- {all:{ clientId: () => this.latestClientId }});
105
+ { all: { clientId: () => this.latestClientId } });
106
106
 
107
107
  this.connectedState.on("connected", this.handleConnected);
108
108
  this.connectedState.on("disconnected", this.handleDisconnected);
@@ -338,7 +338,7 @@ export class SummaryManager implements IDisposable {
338
338
  // Create a Promise that will resolve if the ops count passes the threshold.
339
339
  const opPromise = new Promise<void>((resolve) => { resolveOpPromiseFn = resolve; });
340
340
  this.summaryCollection.addOpListener(opsListenerFn);
341
- await Promise.race([ delayPromise, opPromise ]);
341
+ await Promise.race([delayPromise, opPromise]);
342
342
  this.summaryCollection.removeOpListener(opsListenerFn);
343
343
  }
344
344
  return startWithInitialDelay;
package/src/throttler.ts CHANGED
@@ -44,7 +44,7 @@ export class Throttler implements IThrottler {
44
44
  * by adding the delay times to the actual times.
45
45
  */
46
46
  public getAttempts(): readonly number[] {
47
- return [ ...this.startTimes ];
47
+ return [...this.startTimes];
48
48
  }
49
49
 
50
50
  /**