@fluidframework/container-runtime 2.0.0-dev.4.1.0.148229 → 2.0.0-dev.4.3.0.157531
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/CHANGELOG.md +58 -0
- package/README.md +69 -0
- package/dist/blobManager.d.ts +6 -14
- package/dist/blobManager.d.ts.map +1 -1
- package/dist/blobManager.js +50 -37
- package/dist/blobManager.js.map +1 -1
- package/dist/containerRuntime.d.ts +47 -4
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +203 -49
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStoreContext.d.ts +2 -1
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +3 -0
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStores.d.ts +5 -5
- package/dist/dataStores.d.ts.map +1 -1
- package/dist/dataStores.js +3 -6
- package/dist/dataStores.js.map +1 -1
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +5 -5
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcConfigs.d.ts.map +1 -1
- package/dist/gc/gcConfigs.js +1 -3
- package/dist/gc/gcConfigs.js.map +1 -1
- package/dist/gc/gcDefinitions.js +1 -1
- package/dist/gc/gcDefinitions.js.map +1 -1
- package/dist/gc/gcHelpers.d.ts.map +1 -1
- package/dist/gc/gcHelpers.js +6 -6
- package/dist/gc/gcHelpers.js.map +1 -1
- package/dist/id-compressor/appendOnlySortedMap.d.ts +146 -0
- package/dist/id-compressor/appendOnlySortedMap.d.ts.map +1 -0
- package/dist/id-compressor/appendOnlySortedMap.js +360 -0
- package/dist/id-compressor/appendOnlySortedMap.js.map +1 -0
- package/dist/id-compressor/idCompressor.d.ts +279 -0
- package/dist/id-compressor/idCompressor.d.ts.map +1 -0
- package/dist/id-compressor/idCompressor.js +1258 -0
- package/dist/id-compressor/idCompressor.js.map +1 -0
- package/dist/id-compressor/idRange.d.ts +11 -0
- package/dist/id-compressor/idRange.d.ts.map +1 -0
- package/dist/id-compressor/idRange.js +29 -0
- package/dist/id-compressor/idRange.js.map +1 -0
- package/dist/id-compressor/index.d.ts +14 -0
- package/dist/id-compressor/index.d.ts.map +1 -0
- package/dist/id-compressor/index.js +38 -0
- package/dist/id-compressor/index.js.map +1 -0
- package/dist/id-compressor/numericUuid.d.ts +59 -0
- package/dist/id-compressor/numericUuid.d.ts.map +1 -0
- package/dist/id-compressor/numericUuid.js +325 -0
- package/dist/id-compressor/numericUuid.js.map +1 -0
- package/dist/id-compressor/sessionIdNormalizer.d.ts +138 -0
- package/dist/id-compressor/sessionIdNormalizer.d.ts.map +1 -0
- package/dist/id-compressor/sessionIdNormalizer.js +488 -0
- package/dist/id-compressor/sessionIdNormalizer.js.map +1 -0
- package/dist/id-compressor/utils.d.ts +57 -0
- package/dist/id-compressor/utils.d.ts.map +1 -0
- package/dist/id-compressor/utils.js +90 -0
- package/dist/id-compressor/utils.js.map +1 -0
- package/dist/id-compressor/uuidUtilities.d.ts +30 -0
- package/dist/id-compressor/uuidUtilities.d.ts.map +1 -0
- package/dist/id-compressor/uuidUtilities.js +106 -0
- package/dist/id-compressor/uuidUtilities.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -1
- package/dist/index.js.map +1 -1
- package/dist/opLifecycle/batchManager.d.ts +9 -2
- package/dist/opLifecycle/batchManager.d.ts.map +1 -1
- package/dist/opLifecycle/batchManager.js +21 -2
- package/dist/opLifecycle/batchManager.js.map +1 -1
- package/dist/opLifecycle/index.d.ts +2 -1
- package/dist/opLifecycle/index.d.ts.map +1 -1
- package/dist/opLifecycle/index.js +3 -1
- package/dist/opLifecycle/index.js.map +1 -1
- package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opDecompressor.js +2 -1
- package/dist/opLifecycle/opDecompressor.js.map +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts +14 -0
- package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -0
- package/dist/opLifecycle/opGroupingManager.js +61 -0
- package/dist/opLifecycle/opGroupingManager.js.map +1 -0
- package/dist/opLifecycle/opSplitter.d.ts +1 -1
- package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
- package/dist/opLifecycle/opSplitter.js +5 -6
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +4 -2
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +37 -25
- package/dist/opLifecycle/outbox.js.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.d.ts +4 -2
- package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.js +30 -20
- package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/pendingStateManager.d.ts +1 -1
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +11 -3
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/summary/index.d.ts +2 -2
- package/dist/summary/index.d.ts.map +1 -1
- package/dist/summary/index.js +4 -1
- package/dist/summary/index.js.map +1 -1
- package/dist/summary/orderedClientElection.d.ts +1 -0
- package/dist/summary/orderedClientElection.d.ts.map +1 -1
- package/dist/summary/orderedClientElection.js +19 -0
- package/dist/summary/orderedClientElection.js.map +1 -1
- package/dist/summary/runningSummarizer.d.ts +4 -3
- package/dist/summary/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/runningSummarizer.js +65 -66
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summarizer.d.ts.map +1 -1
- package/dist/summary/summarizer.js +1 -5
- package/dist/summary/summarizer.js.map +1 -1
- package/dist/summary/summarizerHeuristics.d.ts +1 -0
- package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
- package/dist/summary/summarizerHeuristics.js +3 -0
- package/dist/summary/summarizerHeuristics.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.js +1 -1
- package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +128 -2
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js +4 -3
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/dist/summary/summarizerTypes.d.ts +14 -2
- package/dist/summary/summarizerTypes.d.ts.map +1 -1
- package/dist/summary/summarizerTypes.js.map +1 -1
- package/dist/summary/summaryFormat.d.ts +3 -0
- package/dist/summary/summaryFormat.d.ts.map +1 -1
- package/dist/summary/summaryFormat.js +3 -1
- package/dist/summary/summaryFormat.js.map +1 -1
- package/dist/summary/summaryGenerator.d.ts +28 -2
- package/dist/summary/summaryGenerator.d.ts.map +1 -1
- package/dist/summary/summaryGenerator.js +19 -16
- package/dist/summary/summaryGenerator.js.map +1 -1
- package/dist/summary/summaryManager.d.ts.map +1 -1
- package/dist/summary/summaryManager.js +2 -0
- package/dist/summary/summaryManager.js.map +1 -1
- package/lib/blobManager.d.ts +6 -14
- package/lib/blobManager.d.ts.map +1 -1
- package/lib/blobManager.js +50 -37
- package/lib/blobManager.js.map +1 -1
- package/lib/containerRuntime.d.ts +47 -4
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +187 -52
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStoreContext.d.ts +2 -1
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +3 -0
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/dataStores.d.ts +5 -5
- package/lib/dataStores.d.ts.map +1 -1
- package/lib/dataStores.js +3 -6
- package/lib/dataStores.js.map +1 -1
- package/lib/gc/garbageCollection.d.ts.map +1 -1
- package/lib/gc/garbageCollection.js +5 -5
- package/lib/gc/garbageCollection.js.map +1 -1
- package/lib/gc/gcConfigs.d.ts.map +1 -1
- package/lib/gc/gcConfigs.js +1 -3
- package/lib/gc/gcConfigs.js.map +1 -1
- package/lib/gc/gcDefinitions.js +1 -1
- package/lib/gc/gcDefinitions.js.map +1 -1
- package/lib/gc/gcHelpers.d.ts.map +1 -1
- package/lib/gc/gcHelpers.js +6 -6
- package/lib/gc/gcHelpers.js.map +1 -1
- package/lib/id-compressor/appendOnlySortedMap.d.ts +146 -0
- package/lib/id-compressor/appendOnlySortedMap.d.ts.map +1 -0
- package/lib/id-compressor/appendOnlySortedMap.js +355 -0
- package/lib/id-compressor/appendOnlySortedMap.js.map +1 -0
- package/lib/id-compressor/idCompressor.d.ts +279 -0
- package/lib/id-compressor/idCompressor.d.ts.map +1 -0
- package/lib/id-compressor/idCompressor.js +1248 -0
- package/lib/id-compressor/idCompressor.js.map +1 -0
- package/lib/id-compressor/idRange.d.ts +11 -0
- package/lib/id-compressor/idRange.d.ts.map +1 -0
- package/lib/id-compressor/idRange.js +25 -0
- package/lib/id-compressor/idRange.js.map +1 -0
- package/lib/id-compressor/index.d.ts +14 -0
- package/lib/id-compressor/index.d.ts.map +1 -0
- package/lib/id-compressor/index.js +14 -0
- package/lib/id-compressor/index.js.map +1 -0
- package/lib/id-compressor/numericUuid.d.ts +59 -0
- package/lib/id-compressor/numericUuid.d.ts.map +1 -0
- package/lib/id-compressor/numericUuid.js +315 -0
- package/lib/id-compressor/numericUuid.js.map +1 -0
- package/lib/id-compressor/sessionIdNormalizer.d.ts +138 -0
- package/lib/id-compressor/sessionIdNormalizer.d.ts.map +1 -0
- package/lib/id-compressor/sessionIdNormalizer.js +484 -0
- package/lib/id-compressor/sessionIdNormalizer.js.map +1 -0
- package/lib/id-compressor/utils.d.ts +57 -0
- package/lib/id-compressor/utils.d.ts.map +1 -0
- package/lib/id-compressor/utils.js +79 -0
- package/lib/id-compressor/utils.js.map +1 -0
- package/lib/id-compressor/uuidUtilities.d.ts +30 -0
- package/lib/id-compressor/uuidUtilities.d.ts.map +1 -0
- package/lib/id-compressor/uuidUtilities.js +98 -0
- package/lib/id-compressor/uuidUtilities.js.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -0
- package/lib/index.js.map +1 -1
- package/lib/opLifecycle/batchManager.d.ts +9 -2
- package/lib/opLifecycle/batchManager.d.ts.map +1 -1
- package/lib/opLifecycle/batchManager.js +19 -1
- package/lib/opLifecycle/batchManager.js.map +1 -1
- package/lib/opLifecycle/index.d.ts +2 -1
- package/lib/opLifecycle/index.d.ts.map +1 -1
- package/lib/opLifecycle/index.js +1 -0
- package/lib/opLifecycle/index.js.map +1 -1
- package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opDecompressor.js +2 -1
- package/lib/opLifecycle/opDecompressor.js.map +1 -1
- package/lib/opLifecycle/opGroupingManager.d.ts +14 -0
- package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -0
- package/lib/opLifecycle/opGroupingManager.js +57 -0
- package/lib/opLifecycle/opGroupingManager.js.map +1 -0
- package/lib/opLifecycle/opSplitter.d.ts +1 -1
- package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
- package/lib/opLifecycle/opSplitter.js +5 -6
- package/lib/opLifecycle/opSplitter.js.map +1 -1
- package/lib/opLifecycle/outbox.d.ts +4 -2
- package/lib/opLifecycle/outbox.d.ts.map +1 -1
- package/lib/opLifecycle/outbox.js +38 -26
- package/lib/opLifecycle/outbox.js.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.ts +4 -2
- package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.js +30 -20
- package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/pendingStateManager.d.ts +1 -1
- package/lib/pendingStateManager.d.ts.map +1 -1
- package/lib/pendingStateManager.js +11 -3
- package/lib/pendingStateManager.js.map +1 -1
- package/lib/summary/index.d.ts +2 -2
- package/lib/summary/index.d.ts.map +1 -1
- package/lib/summary/index.js +2 -1
- package/lib/summary/index.js.map +1 -1
- package/lib/summary/orderedClientElection.d.ts +1 -0
- package/lib/summary/orderedClientElection.d.ts.map +1 -1
- package/lib/summary/orderedClientElection.js +19 -0
- package/lib/summary/orderedClientElection.js.map +1 -1
- package/lib/summary/runningSummarizer.d.ts +4 -3
- package/lib/summary/runningSummarizer.d.ts.map +1 -1
- package/lib/summary/runningSummarizer.js +65 -66
- package/lib/summary/runningSummarizer.js.map +1 -1
- package/lib/summary/summarizer.d.ts.map +1 -1
- package/lib/summary/summarizer.js +1 -5
- package/lib/summary/summarizer.js.map +1 -1
- package/lib/summary/summarizerHeuristics.d.ts +1 -0
- package/lib/summary/summarizerHeuristics.d.ts.map +1 -1
- package/lib/summary/summarizerHeuristics.js +3 -0
- package/lib/summary/summarizerHeuristics.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.js +1 -1
- package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +128 -2
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js +3 -3
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/lib/summary/summarizerTypes.d.ts +14 -2
- package/lib/summary/summarizerTypes.d.ts.map +1 -1
- package/lib/summary/summarizerTypes.js.map +1 -1
- package/lib/summary/summaryFormat.d.ts +3 -0
- package/lib/summary/summaryFormat.d.ts.map +1 -1
- package/lib/summary/summaryFormat.js +2 -0
- package/lib/summary/summaryFormat.js.map +1 -1
- package/lib/summary/summaryGenerator.d.ts +28 -2
- package/lib/summary/summaryGenerator.d.ts.map +1 -1
- package/lib/summary/summaryGenerator.js +17 -15
- package/lib/summary/summaryGenerator.js.map +1 -1
- package/lib/summary/summaryManager.d.ts.map +1 -1
- package/lib/summary/summaryManager.js +2 -0
- package/lib/summary/summaryManager.js.map +1 -1
- package/package.json +29 -17
- package/src/blobManager.ts +64 -41
- package/src/containerRuntime.ts +294 -65
- package/src/dataStoreContext.ts +6 -0
- package/src/dataStores.ts +4 -7
- package/src/gc/garbageCollection.ts +7 -6
- package/src/gc/gcConfigs.ts +1 -3
- package/src/gc/gcDefinitions.ts +1 -1
- package/src/gc/gcHelpers.ts +9 -6
- package/src/id-compressor/README.md +3 -0
- package/src/id-compressor/appendOnlySortedMap.ts +427 -0
- package/src/id-compressor/idCompressor.ts +1854 -0
- package/src/id-compressor/idRange.ts +35 -0
- package/src/id-compressor/index.ts +35 -0
- package/src/id-compressor/numericUuid.ts +383 -0
- package/src/id-compressor/sessionIdNormalizer.ts +609 -0
- package/src/id-compressor/utils.ts +114 -0
- package/src/id-compressor/uuidUtilities.ts +123 -0
- package/src/index.ts +1 -0
- package/src/opLifecycle/README.md +119 -0
- package/src/opLifecycle/batchManager.ts +35 -2
- package/src/opLifecycle/index.ts +2 -1
- package/src/opLifecycle/opDecompressor.ts +1 -0
- package/src/opLifecycle/opGroupingManager.ts +82 -0
- package/src/opLifecycle/opSplitter.ts +1 -5
- package/src/opLifecycle/outbox.ts +64 -26
- package/src/opLifecycle/remoteMessageProcessor.ts +38 -22
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +21 -7
- package/src/summary/index.ts +2 -1
- package/src/summary/orderedClientElection.ts +17 -1
- package/src/summary/runningSummarizer.ts +78 -77
- package/src/summary/summarizer.ts +0 -8
- package/src/summary/summarizerHeuristics.ts +4 -0
- package/src/summary/summarizerNode/summarizerNode.ts +1 -1
- package/src/summary/summarizerNode/summarizerNodeWithGc.ts +3 -3
- package/src/summary/summarizerTypes.ts +20 -3
- package/src/summary/summaryFormat.ts +4 -0
- package/src/summary/summaryGenerator.ts +22 -16
- package/src/summary/summaryManager.ts +2 -0
|
@@ -78,6 +78,14 @@ export interface ISummarizerRuntime extends IConnectableRuntime {
|
|
|
78
78
|
readonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>;
|
|
79
79
|
disposeFn?(): void;
|
|
80
80
|
closeFn(): void;
|
|
81
|
+
on?(
|
|
82
|
+
event: "op",
|
|
83
|
+
listener: (op: ISequencedDocumentMessage, runtimeMessage?: boolean) => void,
|
|
84
|
+
): this;
|
|
85
|
+
off?(
|
|
86
|
+
event: "op",
|
|
87
|
+
listener: (op: ISequencedDocumentMessage, runtimeMessage?: boolean) => void,
|
|
88
|
+
): this;
|
|
81
89
|
}
|
|
82
90
|
|
|
83
91
|
/** Options affecting summarize behavior. */
|
|
@@ -294,8 +302,13 @@ export type SummarizerStopReason =
|
|
|
294
302
|
| "notElectedClient"
|
|
295
303
|
/** Summarizer client was disconnected */
|
|
296
304
|
| "summarizerClientDisconnected"
|
|
297
|
-
|
|
298
|
-
| "summarizerException"
|
|
305
|
+
/** running summarizer threw an exception */
|
|
306
|
+
| "summarizerException"
|
|
307
|
+
/**
|
|
308
|
+
* The previous summary state on the summarizer is not the most recently acked summary. this also happens when the
|
|
309
|
+
* first submitSummary attempt fails for any reason and there's a 2nd summary attempt without an ack
|
|
310
|
+
*/
|
|
311
|
+
| "latestSummaryStateStale";
|
|
299
312
|
|
|
300
313
|
export interface ISummarizerEvents extends IEvent {
|
|
301
314
|
/**
|
|
@@ -398,6 +411,8 @@ export interface ISummarizeHeuristicData {
|
|
|
398
411
|
|
|
399
412
|
/** Mark that the last sent summary attempt has received an ack */
|
|
400
413
|
markLastAttemptAsSuccessful(): void;
|
|
414
|
+
|
|
415
|
+
opsSinceLastSummary: number;
|
|
401
416
|
}
|
|
402
417
|
|
|
403
418
|
/** Responsible for running heuristics determining when to summarize. */
|
|
@@ -491,7 +506,9 @@ type SummaryGeneratorOptionalTelemetryProperties =
|
|
|
491
506
|
/** Actual sequence number of the summary op proposal. */
|
|
492
507
|
| "summarySequenceNumber"
|
|
493
508
|
/** Optional Retry-After time in seconds. If specified, the client should wait this many seconds before retrying. */
|
|
494
|
-
| "nackRetryAfter"
|
|
509
|
+
| "nackRetryAfter"
|
|
510
|
+
/** The stage at which the submit summary method failed at. This can help determine what type of failure we have */
|
|
511
|
+
| "stage";
|
|
495
512
|
|
|
496
513
|
export type SummaryGeneratorTelemetry = Pick<
|
|
497
514
|
ITelemetryProperties,
|
|
@@ -91,6 +91,8 @@ export interface IContainerRuntimeMetadata extends ICreateContainerMetadata, IGC
|
|
|
91
91
|
readonly summaryNumber?: number;
|
|
92
92
|
/** GUID to identify a document in telemetry */
|
|
93
93
|
readonly telemetryDocumentId?: string;
|
|
94
|
+
/** True if the runtime IdCompressor is enabled */
|
|
95
|
+
readonly idCompressorEnabled?: boolean;
|
|
94
96
|
}
|
|
95
97
|
|
|
96
98
|
export interface ICreateContainerMetadata {
|
|
@@ -150,6 +152,7 @@ export const metadataBlobName = ".metadata";
|
|
|
150
152
|
export const chunksBlobName = ".chunks";
|
|
151
153
|
export const electedSummarizerBlobName = ".electedSummarizer";
|
|
152
154
|
export const blobsTreeName = ".blobs";
|
|
155
|
+
export const idCompressorBlobName = ".idCompressor";
|
|
153
156
|
|
|
154
157
|
export function rootHasIsolatedChannels(metadata?: IContainerRuntimeMetadata): boolean {
|
|
155
158
|
return !!metadata && !metadata.disableIsolatedChannels;
|
|
@@ -169,6 +172,7 @@ export const nonDataStorePaths = [
|
|
|
169
172
|
".serviceProtocol",
|
|
170
173
|
blobsTreeName,
|
|
171
174
|
gcTreeKey,
|
|
175
|
+
idCompressorBlobName,
|
|
172
176
|
];
|
|
173
177
|
|
|
174
178
|
export const dataStoreAttributesBlobName = ".component";
|
|
@@ -120,6 +120,10 @@ const summarizeErrors = {
|
|
|
120
120
|
disconnect: "Summary cancelled due to summarizer or main client disconnect",
|
|
121
121
|
} as const;
|
|
122
122
|
|
|
123
|
+
// Helper functions to report failures and return.
|
|
124
|
+
export const getFailMessage = (errorCode: keyof typeof summarizeErrors) =>
|
|
125
|
+
`${errorCode}: ${summarizeErrors[errorCode]}`;
|
|
126
|
+
|
|
123
127
|
export class SummarizeResultBuilder {
|
|
124
128
|
public readonly summarySubmitted = new Deferred<SummarizeResultPart<SubmitSummaryResult>>();
|
|
125
129
|
public readonly summaryOpBroadcasted = new Deferred<
|
|
@@ -171,7 +175,6 @@ export class SummaryGenerator {
|
|
|
171
175
|
private readonly submitSummaryCallback: (
|
|
172
176
|
options: ISubmitSummaryOptions,
|
|
173
177
|
) => Promise<SubmitSummaryResult>,
|
|
174
|
-
private readonly raiseSummarizingError: (errorMessage: string) => void,
|
|
175
178
|
private readonly successfulSummaryCallback: () => void,
|
|
176
179
|
private readonly summaryWatcher: Pick<IClientSummaryWatcher, "watchSummary">,
|
|
177
180
|
private readonly logger: ITelemetryLogger,
|
|
@@ -235,16 +238,12 @@ export class SummaryGenerator {
|
|
|
235
238
|
{ start: true, end: true, cancel: "generic" },
|
|
236
239
|
);
|
|
237
240
|
|
|
238
|
-
// Helper functions to report failures and return.
|
|
239
|
-
const getFailMessage = (errorCode: keyof typeof summarizeErrors) =>
|
|
240
|
-
`${errorCode}: ${summarizeErrors[errorCode]}`;
|
|
241
241
|
const fail = (
|
|
242
242
|
errorCode: keyof typeof summarizeErrors,
|
|
243
243
|
error?: any,
|
|
244
244
|
properties?: SummaryGeneratorTelemetry,
|
|
245
245
|
nackSummaryResult?: INackSummaryResult,
|
|
246
246
|
) => {
|
|
247
|
-
this.raiseSummarizingError(summarizeErrors[errorCode]);
|
|
248
247
|
// UploadSummary may fail with 429 and retryAfter - respect that
|
|
249
248
|
// Summary Nack also can have retryAfter, it's parsed below and comes as a property.
|
|
250
249
|
const retryAfterSeconds = getRetryDelaySecondsFromError(error);
|
|
@@ -257,17 +256,17 @@ export class SummaryGenerator {
|
|
|
257
256
|
? "generic"
|
|
258
257
|
: "error";
|
|
259
258
|
|
|
260
|
-
const
|
|
259
|
+
const reason = getFailMessage(errorCode);
|
|
261
260
|
summarizeEvent.cancel(
|
|
262
261
|
{
|
|
263
262
|
...properties,
|
|
264
|
-
reason
|
|
263
|
+
reason,
|
|
265
264
|
category,
|
|
266
265
|
retryAfterSeconds,
|
|
267
266
|
},
|
|
268
|
-
error ??
|
|
267
|
+
error ?? reason,
|
|
269
268
|
); // disconnect & summaryAckTimeout do not have proper error.
|
|
270
|
-
resultsBuilder.fail(
|
|
269
|
+
resultsBuilder.fail(reason, error, nackSummaryResult, retryAfterSeconds);
|
|
271
270
|
};
|
|
272
271
|
|
|
273
272
|
// Wait to generate and send summary
|
|
@@ -283,18 +282,20 @@ export class SummaryGenerator {
|
|
|
283
282
|
cancellationToken,
|
|
284
283
|
});
|
|
285
284
|
|
|
285
|
+
this.heuristicData.recordAttempt(summaryData.referenceSequenceNumber);
|
|
286
|
+
|
|
286
287
|
// Cumulatively add telemetry properties based on how far generateSummary went.
|
|
287
288
|
const referenceSequenceNumber = summaryData.referenceSequenceNumber;
|
|
288
|
-
const opsSinceLastSummary =
|
|
289
|
-
referenceSequenceNumber -
|
|
290
|
-
this.heuristicData.lastSuccessfulSummary.refSequenceNumber;
|
|
291
289
|
summarizeTelemetryProps = {
|
|
292
290
|
...summarizeTelemetryProps,
|
|
293
291
|
referenceSequenceNumber,
|
|
294
292
|
minimumSequenceNumber: summaryData.minimumSequenceNumber,
|
|
295
293
|
opsSinceLastAttempt:
|
|
296
294
|
referenceSequenceNumber - this.heuristicData.lastAttempt.refSequenceNumber,
|
|
297
|
-
opsSinceLastSummary
|
|
295
|
+
opsSinceLastSummary:
|
|
296
|
+
referenceSequenceNumber -
|
|
297
|
+
this.heuristicData.lastSuccessfulSummary.refSequenceNumber,
|
|
298
|
+
stage: summaryData.stage,
|
|
298
299
|
};
|
|
299
300
|
summarizeTelemetryProps = this.addSummaryDataToTelemetryProps(
|
|
300
301
|
summaryData,
|
|
@@ -318,12 +319,15 @@ export class SummaryGenerator {
|
|
|
318
319
|
if (!fullTree && !summaryData.forcedFullTree) {
|
|
319
320
|
const { summarizedDataStoreCount, gcStateUpdatedDataStoreCount = 0 } =
|
|
320
321
|
summaryData.summaryStats;
|
|
321
|
-
if (
|
|
322
|
+
if (
|
|
323
|
+
summarizedDataStoreCount >
|
|
324
|
+
gcStateUpdatedDataStoreCount + this.heuristicData.opsSinceLastSummary
|
|
325
|
+
) {
|
|
322
326
|
logger.sendErrorEvent({
|
|
323
327
|
eventName: "IncrementalSummaryViolation",
|
|
324
328
|
summarizedDataStoreCount,
|
|
325
329
|
gcStateUpdatedDataStoreCount,
|
|
326
|
-
opsSinceLastSummary,
|
|
330
|
+
opsSinceLastSummary: this.heuristicData.opsSinceLastSummary,
|
|
327
331
|
});
|
|
328
332
|
}
|
|
329
333
|
}
|
|
@@ -334,7 +338,9 @@ export class SummaryGenerator {
|
|
|
334
338
|
} catch (error) {
|
|
335
339
|
return fail("submitSummaryFailure", error);
|
|
336
340
|
} finally {
|
|
337
|
-
|
|
341
|
+
if (summaryData === undefined) {
|
|
342
|
+
this.heuristicData.recordAttempt();
|
|
343
|
+
}
|
|
338
344
|
this.summarizeTimer.clear();
|
|
339
345
|
}
|
|
340
346
|
|
|
@@ -356,6 +356,8 @@ export class SummaryManager implements IDisposable {
|
|
|
356
356
|
startThrottlerMaxDelayMs: this.startThrottler.maxDelayMs,
|
|
357
357
|
opsSinceLastAck: this.summaryCollection.opsSinceLastAck,
|
|
358
358
|
opsToBypassInitialDelay: this.opsToBypassInitialDelay,
|
|
359
|
+
electedParentId: this.clientElection.electedParentId,
|
|
360
|
+
electedClientId: this.clientElection.electedClientId,
|
|
359
361
|
});
|
|
360
362
|
|
|
361
363
|
// This delay helps ensure that last summarizer that might be left from previous client
|