@fluidframework/container-runtime 0.59.2001 → 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.
- package/.eslintrc.js +0 -1
- package/dist/batchTracker.js +1 -1
- package/dist/batchTracker.js.map +1 -1
- package/dist/blobManager.js +8 -8
- package/dist/blobManager.js.map +1 -1
- package/dist/connectionTelemetry.js +8 -8
- package/dist/connectionTelemetry.js.map +1 -1
- package/dist/containerHandleContext.js +1 -1
- package/dist/containerHandleContext.js.map +1 -1
- package/dist/containerRuntime.d.ts +27 -17
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +149 -174
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStore.js +1 -1
- package/dist/dataStore.js.map +1 -1
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +44 -44
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStoreContexts.d.ts +2 -2
- package/dist/dataStoreContexts.d.ts.map +1 -1
- package/dist/dataStoreContexts.js +8 -8
- package/dist/dataStoreContexts.js.map +1 -1
- package/dist/dataStores.d.ts +4 -2
- package/dist/dataStores.d.ts.map +1 -1
- package/dist/dataStores.js +45 -33
- package/dist/dataStores.js.map +1 -1
- package/dist/garbageCollection.d.ts +23 -23
- package/dist/garbageCollection.d.ts.map +1 -1
- package/dist/garbageCollection.js +81 -50
- package/dist/garbageCollection.js.map +1 -1
- package/dist/opTelemetry.js +1 -1
- package/dist/opTelemetry.js.map +1 -1
- package/dist/orderedClientElection.d.ts.map +1 -1
- package/dist/orderedClientElection.js +2 -2
- package/dist/orderedClientElection.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/pendingStateManager.js +17 -17
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/runWhileConnectedCoordinator.js +1 -1
- package/dist/runWhileConnectedCoordinator.js.map +1 -1
- package/dist/runningSummarizer.d.ts.map +1 -1
- package/dist/runningSummarizer.js +7 -6
- package/dist/runningSummarizer.js.map +1 -1
- package/dist/summarizer.d.ts.map +1 -1
- package/dist/summarizer.js +4 -3
- package/dist/summarizer.js.map +1 -1
- package/dist/summarizerClientElection.js.map +1 -1
- package/dist/summarizerHeuristics.d.ts +1 -1
- package/dist/summarizerHeuristics.d.ts.map +1 -1
- package/dist/summarizerHeuristics.js +1 -1
- package/dist/summarizerHeuristics.js.map +1 -1
- package/dist/summarizerTypes.d.ts +4 -2
- package/dist/summarizerTypes.d.ts.map +1 -1
- package/dist/summarizerTypes.js.map +1 -1
- package/dist/summaryCollection.js +2 -2
- package/dist/summaryCollection.js.map +1 -1
- package/dist/summaryFormat.d.ts +37 -11
- package/dist/summaryFormat.d.ts.map +1 -1
- package/dist/summaryFormat.js +12 -4
- package/dist/summaryFormat.js.map +1 -1
- package/dist/summaryGenerator.d.ts.map +1 -1
- package/dist/summaryGenerator.js +6 -4
- package/dist/summaryGenerator.js.map +1 -1
- package/dist/summaryManager.js +5 -5
- package/dist/summaryManager.js.map +1 -1
- package/dist/throttler.js +2 -2
- package/dist/throttler.js.map +1 -1
- package/lib/blobManager.js.map +1 -1
- package/lib/containerRuntime.d.ts +27 -17
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +68 -93
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStore.js.map +1 -1
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/dataStoreContexts.d.ts +2 -2
- package/lib/dataStoreContexts.d.ts.map +1 -1
- package/lib/dataStoreContexts.js +2 -2
- package/lib/dataStoreContexts.js.map +1 -1
- package/lib/dataStores.d.ts +4 -2
- package/lib/dataStores.d.ts.map +1 -1
- package/lib/dataStores.js +22 -10
- package/lib/dataStores.js.map +1 -1
- package/lib/garbageCollection.d.ts +23 -23
- package/lib/garbageCollection.d.ts.map +1 -1
- package/lib/garbageCollection.js +68 -37
- package/lib/garbageCollection.js.map +1 -1
- package/lib/opTelemetry.js.map +1 -1
- package/lib/orderedClientElection.d.ts.map +1 -1
- package/lib/orderedClientElection.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/pendingStateManager.js.map +1 -1
- package/lib/runningSummarizer.d.ts.map +1 -1
- package/lib/runningSummarizer.js +4 -3
- package/lib/runningSummarizer.js.map +1 -1
- package/lib/summarizer.d.ts.map +1 -1
- package/lib/summarizer.js +1 -0
- package/lib/summarizer.js.map +1 -1
- package/lib/summarizerClientElection.js.map +1 -1
- package/lib/summarizerHeuristics.d.ts +1 -1
- package/lib/summarizerHeuristics.d.ts.map +1 -1
- package/lib/summarizerHeuristics.js +1 -1
- package/lib/summarizerHeuristics.js.map +1 -1
- package/lib/summarizerTypes.d.ts +4 -2
- package/lib/summarizerTypes.d.ts.map +1 -1
- package/lib/summarizerTypes.js.map +1 -1
- package/lib/summaryCollection.js.map +1 -1
- package/lib/summaryFormat.d.ts +37 -11
- package/lib/summaryFormat.d.ts.map +1 -1
- package/lib/summaryFormat.js +10 -2
- package/lib/summaryFormat.js.map +1 -1
- package/lib/summaryGenerator.d.ts.map +1 -1
- package/lib/summaryGenerator.js +2 -0
- package/lib/summaryGenerator.js.map +1 -1
- package/lib/summaryManager.js.map +1 -1
- package/lib/throttler.js.map +1 -1
- package/package.json +26 -20
- package/src/blobManager.ts +3 -3
- package/src/containerRuntime.ts +108 -137
- package/src/dataStoreContext.ts +8 -11
- package/src/dataStoreContexts.ts +5 -5
- package/src/dataStores.ts +30 -13
- package/src/garbageCollection.ts +100 -57
- package/src/orderedClientElection.ts +5 -10
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +2 -2
- package/src/runningSummarizer.ts +8 -9
- package/src/summarizer.ts +2 -2
- package/src/summarizerHeuristics.ts +1 -1
- package/src/summarizerTypes.ts +8 -6
- package/src/summaryFormat.ts +38 -11
- package/src/summaryGenerator.ts +7 -5
- package/src/summaryManager.ts +2 -2
- package/src/throttler.ts +1 -1
package/src/summaryFormat.ts
CHANGED
|
@@ -74,19 +74,19 @@ export function hasIsolatedChannels(attributes: ReadFluidDataStoreAttributes): b
|
|
|
74
74
|
return !!attributes.summaryFormatVersion && !attributes.disableIsolatedChannels;
|
|
75
75
|
}
|
|
76
76
|
|
|
77
|
-
export
|
|
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
|
|
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
|
-
/**
|
|
85
|
-
readonly
|
|
86
|
-
/**
|
|
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?:
|
|
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
|
-
*
|
|
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
|
*/
|
package/src/summaryGenerator.ts
CHANGED
|
@@ -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" */);
|
package/src/summaryManager.ts
CHANGED
|
@@ -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([
|
|
341
|
+
await Promise.race([delayPromise, opPromise]);
|
|
342
342
|
this.summaryCollection.removeOpListener(opsListenerFn);
|
|
343
343
|
}
|
|
344
344
|
return startWithInitialDelay;
|
package/src/throttler.ts
CHANGED