@fluidframework/container-runtime 2.0.0-dev-rc.4.0.0.261659 → 2.0.0-dev-rc.5.0.0.265721
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 +46 -0
- package/api-report/container-runtime.api.md +60 -29
- package/dist/batchTracker.js.map +1 -1
- package/dist/blobManager.d.ts +9 -9
- package/dist/blobManager.d.ts.map +1 -1
- package/dist/blobManager.js +3 -5
- package/dist/blobManager.js.map +1 -1
- package/dist/channelCollection.d.ts +8 -6
- package/dist/channelCollection.d.ts.map +1 -1
- package/dist/channelCollection.js +22 -11
- package/dist/channelCollection.js.map +1 -1
- package/dist/connectionTelemetry.d.ts +1 -1
- package/dist/connectionTelemetry.d.ts.map +1 -1
- package/dist/connectionTelemetry.js.map +1 -1
- package/dist/containerHandleContext.d.ts +2 -1
- package/dist/containerHandleContext.d.ts.map +1 -1
- package/dist/containerHandleContext.js.map +1 -1
- package/dist/containerRuntime.d.ts +14 -24
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +125 -140
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStore.d.ts.map +1 -1
- package/dist/dataStore.js.map +1 -1
- package/dist/dataStoreContext.d.ts +13 -10
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +21 -8
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStoreContexts.js.map +1 -1
- package/dist/dataStoreRegistry.js.map +1 -1
- package/dist/{deltaManagerSummarizerProxy.d.ts → deltaManagerProxies.d.ts} +28 -3
- package/dist/deltaManagerProxies.d.ts.map +1 -0
- package/dist/{deltaManagerSummarizerProxy.js → deltaManagerProxies.js} +38 -2
- package/dist/deltaManagerProxies.js.map +1 -0
- package/dist/deltaScheduler.d.ts +1 -1
- package/dist/deltaScheduler.d.ts.map +1 -1
- package/dist/deltaScheduler.js.map +1 -1
- package/dist/gc/garbageCollection.d.ts +1 -2
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +1 -1
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcConfigs.d.ts.map +1 -1
- package/dist/gc/gcConfigs.js +14 -19
- package/dist/gc/gcConfigs.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +4 -22
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js +3 -3
- package/dist/gc/gcDefinitions.js.map +1 -1
- package/dist/gc/gcHelpers.d.ts +1 -2
- package/dist/gc/gcHelpers.d.ts.map +1 -1
- package/dist/gc/gcHelpers.js.map +1 -1
- package/dist/gc/gcReferenceGraphAlgorithm.js.map +1 -1
- package/dist/gc/gcSummaryDefinitions.d.ts +1 -1
- package/dist/gc/gcSummaryDefinitions.d.ts.map +1 -1
- package/dist/gc/gcSummaryDefinitions.js.map +1 -1
- package/dist/gc/gcSummaryStateTracker.d.ts +1 -1
- package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/dist/gc/gcSummaryStateTracker.js.map +1 -1
- package/dist/gc/gcTelemetry.d.ts +1 -1
- package/dist/gc/gcTelemetry.d.ts.map +1 -1
- package/dist/gc/gcTelemetry.js +2 -2
- package/dist/gc/gcTelemetry.js.map +1 -1
- package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
- package/dist/gc/index.d.ts +1 -1
- package/dist/gc/index.d.ts.map +1 -1
- package/dist/gc/index.js +2 -2
- package/dist/gc/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +6 -1
- package/dist/messageTypes.d.ts +5 -2
- package/dist/messageTypes.d.ts.map +1 -1
- package/dist/messageTypes.js.map +1 -1
- package/dist/opLifecycle/batchManager.d.ts +4 -0
- package/dist/opLifecycle/batchManager.d.ts.map +1 -1
- package/dist/opLifecycle/batchManager.js.map +1 -1
- package/dist/opLifecycle/opCompressor.js.map +1 -1
- package/dist/opLifecycle/opDecompressor.js.map +1 -1
- package/dist/opLifecycle/opGroupingManager.js.map +1 -1
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +1 -0
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +7 -20
- package/dist/opLifecycle/outbox.js.map +1 -1
- 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 +6 -0
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +10 -1
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/scheduleManager.d.ts +1 -1
- package/dist/scheduleManager.d.ts.map +1 -1
- package/dist/scheduleManager.js.map +1 -1
- package/dist/storageServiceWithAttachBlobs.js.map +1 -1
- package/dist/summary/documentSchema.js +2 -2
- package/dist/summary/documentSchema.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.map +1 -1
- package/dist/summary/orderedClientElection.d.ts +4 -2
- package/dist/summary/orderedClientElection.d.ts.map +1 -1
- package/dist/summary/orderedClientElection.js +35 -13
- package/dist/summary/orderedClientElection.js.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/dist/summary/runningSummarizer.d.ts +0 -5
- package/dist/summary/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/runningSummarizer.js +28 -113
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summarizer.d.ts +1 -1
- package/dist/summary/summarizer.d.ts.map +1 -1
- package/dist/summary/summarizer.js +4 -1
- package/dist/summary/summarizer.js.map +1 -1
- package/dist/summary/summarizerClientElection.js.map +1 -1
- package/dist/summary/summarizerHeuristics.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.d.ts +1 -2
- package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +1 -2
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/dist/summary/summarizerTypes.d.ts +16 -28
- package/dist/summary/summarizerTypes.d.ts.map +1 -1
- package/dist/summary/summarizerTypes.js.map +1 -1
- package/dist/summary/summaryCollection.d.ts +1 -1
- package/dist/summary/summaryCollection.d.ts.map +1 -1
- package/dist/summary/summaryCollection.js +2 -2
- package/dist/summary/summaryCollection.js.map +1 -1
- package/dist/summary/summaryFormat.d.ts +26 -6
- package/dist/summary/summaryFormat.d.ts.map +1 -1
- package/dist/summary/summaryFormat.js.map +1 -1
- package/dist/summary/summaryGenerator.d.ts +7 -8
- package/dist/summary/summaryGenerator.d.ts.map +1 -1
- package/dist/summary/summaryGenerator.js +30 -25
- package/dist/summary/summaryGenerator.js.map +1 -1
- package/dist/summary/summaryManager.js +5 -5
- package/dist/summary/summaryManager.js.map +1 -1
- package/dist/throttler.js.map +1 -1
- package/lib/batchTracker.js.map +1 -1
- package/lib/blobManager.d.ts +9 -9
- package/lib/blobManager.d.ts.map +1 -1
- package/lib/blobManager.js +4 -6
- package/lib/blobManager.js.map +1 -1
- package/lib/channelCollection.d.ts +8 -6
- package/lib/channelCollection.d.ts.map +1 -1
- package/lib/channelCollection.js +23 -12
- package/lib/channelCollection.js.map +1 -1
- package/lib/connectionTelemetry.d.ts +1 -1
- package/lib/connectionTelemetry.d.ts.map +1 -1
- package/lib/connectionTelemetry.js.map +1 -1
- package/lib/containerHandleContext.d.ts +2 -1
- package/lib/containerHandleContext.d.ts.map +1 -1
- package/lib/containerHandleContext.js.map +1 -1
- package/lib/containerRuntime.d.ts +14 -24
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +125 -140
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStore.d.ts.map +1 -1
- package/lib/dataStore.js.map +1 -1
- package/lib/dataStoreContext.d.ts +13 -10
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +23 -10
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/dataStoreContexts.js.map +1 -1
- package/lib/dataStoreRegistry.js.map +1 -1
- package/lib/{deltaManagerSummarizerProxy.d.ts → deltaManagerProxies.d.ts} +28 -3
- package/lib/deltaManagerProxies.d.ts.map +1 -0
- package/lib/{deltaManagerSummarizerProxy.js → deltaManagerProxies.js} +36 -1
- package/lib/deltaManagerProxies.js.map +1 -0
- package/lib/deltaScheduler.d.ts +1 -1
- package/lib/deltaScheduler.d.ts.map +1 -1
- package/lib/deltaScheduler.js.map +1 -1
- package/lib/gc/garbageCollection.d.ts +1 -2
- package/lib/gc/garbageCollection.d.ts.map +1 -1
- package/lib/gc/garbageCollection.js +1 -1
- package/lib/gc/garbageCollection.js.map +1 -1
- package/lib/gc/gcConfigs.d.ts.map +1 -1
- package/lib/gc/gcConfigs.js +15 -20
- package/lib/gc/gcConfigs.js.map +1 -1
- package/lib/gc/gcDefinitions.d.ts +4 -22
- package/lib/gc/gcDefinitions.d.ts.map +1 -1
- package/lib/gc/gcDefinitions.js +2 -2
- package/lib/gc/gcDefinitions.js.map +1 -1
- package/lib/gc/gcHelpers.d.ts +1 -2
- package/lib/gc/gcHelpers.d.ts.map +1 -1
- package/lib/gc/gcHelpers.js.map +1 -1
- package/lib/gc/gcReferenceGraphAlgorithm.js.map +1 -1
- package/lib/gc/gcSummaryDefinitions.d.ts +1 -1
- package/lib/gc/gcSummaryDefinitions.d.ts.map +1 -1
- package/lib/gc/gcSummaryDefinitions.js.map +1 -1
- package/lib/gc/gcSummaryStateTracker.d.ts +1 -1
- package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/lib/gc/gcSummaryStateTracker.js.map +1 -1
- package/lib/gc/gcTelemetry.d.ts +1 -1
- package/lib/gc/gcTelemetry.d.ts.map +1 -1
- package/lib/gc/gcTelemetry.js +2 -2
- package/lib/gc/gcTelemetry.js.map +1 -1
- package/lib/gc/gcUnreferencedStateTracker.js.map +1 -1
- package/lib/gc/index.d.ts +1 -1
- package/lib/gc/index.d.ts.map +1 -1
- package/lib/gc/index.js +1 -1
- package/lib/gc/index.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/legacy.d.ts +6 -1
- package/lib/messageTypes.d.ts +5 -2
- package/lib/messageTypes.d.ts.map +1 -1
- package/lib/messageTypes.js.map +1 -1
- package/lib/opLifecycle/batchManager.d.ts +4 -0
- package/lib/opLifecycle/batchManager.d.ts.map +1 -1
- package/lib/opLifecycle/batchManager.js.map +1 -1
- package/lib/opLifecycle/opCompressor.js.map +1 -1
- package/lib/opLifecycle/opDecompressor.js.map +1 -1
- package/lib/opLifecycle/opGroupingManager.js.map +1 -1
- package/lib/opLifecycle/opSplitter.js.map +1 -1
- package/lib/opLifecycle/outbox.d.ts +1 -0
- package/lib/opLifecycle/outbox.d.ts.map +1 -1
- package/lib/opLifecycle/outbox.js +7 -20
- package/lib/opLifecycle/outbox.js.map +1 -1
- 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 +6 -0
- package/lib/pendingStateManager.d.ts.map +1 -1
- package/lib/pendingStateManager.js +10 -1
- package/lib/pendingStateManager.js.map +1 -1
- package/lib/scheduleManager.d.ts +1 -1
- package/lib/scheduleManager.d.ts.map +1 -1
- package/lib/scheduleManager.js.map +1 -1
- package/lib/storageServiceWithAttachBlobs.js.map +1 -1
- package/lib/summary/documentSchema.js +2 -2
- package/lib/summary/documentSchema.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.map +1 -1
- package/lib/summary/orderedClientElection.d.ts +4 -2
- package/lib/summary/orderedClientElection.d.ts.map +1 -1
- package/lib/summary/orderedClientElection.js +35 -13
- package/lib/summary/orderedClientElection.js.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/lib/summary/runningSummarizer.d.ts +0 -5
- package/lib/summary/runningSummarizer.d.ts.map +1 -1
- package/lib/summary/runningSummarizer.js +21 -106
- package/lib/summary/runningSummarizer.js.map +1 -1
- package/lib/summary/summarizer.d.ts +1 -1
- package/lib/summary/summarizer.d.ts.map +1 -1
- package/lib/summary/summarizer.js +4 -1
- package/lib/summary/summarizer.js.map +1 -1
- package/lib/summary/summarizerClientElection.js.map +1 -1
- package/lib/summary/summarizerHeuristics.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.d.ts +1 -2
- package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +1 -2
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/lib/summary/summarizerTypes.d.ts +16 -28
- package/lib/summary/summarizerTypes.d.ts.map +1 -1
- package/lib/summary/summarizerTypes.js.map +1 -1
- package/lib/summary/summaryCollection.d.ts +1 -1
- package/lib/summary/summaryCollection.d.ts.map +1 -1
- package/lib/summary/summaryCollection.js +2 -2
- package/lib/summary/summaryCollection.js.map +1 -1
- package/lib/summary/summaryFormat.d.ts +26 -6
- package/lib/summary/summaryFormat.d.ts.map +1 -1
- package/lib/summary/summaryFormat.js +1 -1
- package/lib/summary/summaryFormat.js.map +1 -1
- package/lib/summary/summaryGenerator.d.ts +7 -8
- package/lib/summary/summaryGenerator.d.ts.map +1 -1
- package/lib/summary/summaryGenerator.js +24 -19
- package/lib/summary/summaryGenerator.js.map +1 -1
- package/lib/summary/summaryManager.js +1 -1
- package/lib/summary/summaryManager.js.map +1 -1
- package/lib/throttler.js.map +1 -1
- package/lib/tsdoc-metadata.json +1 -1
- package/package.json +65 -26
- package/src/blobManager.ts +14 -13
- package/src/channelCollection.ts +34 -20
- package/src/connectionTelemetry.ts +1 -1
- package/src/containerHandleContext.ts +2 -1
- package/src/containerRuntime.ts +161 -170
- package/src/dataStore.ts +3 -2
- package/src/dataStoreContext.ts +62 -23
- package/src/{deltaManagerSummarizerProxy.ts → deltaManagerProxies.ts} +55 -3
- package/src/deltaScheduler.ts +1 -1
- package/src/gc/garbageCollection.md +0 -8
- package/src/gc/garbageCollection.ts +2 -1
- package/src/gc/gcConfigs.ts +12 -19
- package/src/gc/gcDefinitions.ts +5 -23
- package/src/gc/gcHelpers.ts +1 -1
- package/src/gc/gcSummaryDefinitions.ts +1 -1
- package/src/gc/gcSummaryStateTracker.ts +1 -1
- package/src/gc/gcTelemetry.ts +1 -1
- package/src/gc/index.ts +1 -1
- package/src/index.ts +6 -1
- package/src/messageTypes.ts +4 -2
- package/src/opLifecycle/batchManager.ts +5 -0
- package/src/opLifecycle/outbox.ts +7 -30
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +11 -1
- package/src/scheduleManager.ts +1 -1
- package/src/summary/documentSchema.ts +1 -1
- package/src/summary/index.ts +5 -1
- package/src/summary/orderedClientElection.ts +83 -12
- package/src/summary/runningSummarizer.ts +30 -114
- package/src/summary/summarizer.ts +5 -2
- package/src/summary/summarizerNode/summarizerNode.ts +0 -2
- package/src/summary/summarizerNode/summarizerNodeWithGc.ts +1 -3
- package/src/summary/summarizerTypes.ts +22 -29
- package/src/summary/summaryCollection.ts +1 -1
- package/src/summary/summaryFormat.ts +35 -6
- package/src/summary/summaryGenerator.ts +50 -27
- package/src/summary/summaryManager.ts +1 -1
- package/dist/deltaManagerSummarizerProxy.d.ts.map +0 -1
- package/dist/deltaManagerSummarizerProxy.js.map +0 -1
- package/lib/deltaManagerSummarizerProxy.d.ts.map +0 -1
- package/lib/deltaManagerSummarizerProxy.js.map +0 -1
|
@@ -3,15 +3,19 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { IDeltaManager } from "@fluidframework/container-definitions";
|
|
7
|
-
import {
|
|
8
|
-
|
|
6
|
+
import { IDeltaManager, ContainerWarning } from "@fluidframework/container-definitions/internal";
|
|
7
|
+
import {
|
|
8
|
+
IEvent,
|
|
9
|
+
IEventProvider,
|
|
10
|
+
ITelemetryBaseProperties,
|
|
11
|
+
ITelemetryBaseLogger,
|
|
12
|
+
} from "@fluidframework/core-interfaces";
|
|
9
13
|
import {
|
|
10
14
|
IDocumentMessage,
|
|
11
15
|
ISequencedDocumentMessage,
|
|
12
16
|
ISummaryTree,
|
|
13
17
|
} from "@fluidframework/protocol-definitions";
|
|
14
|
-
import { ISummaryStats } from "@fluidframework/runtime-definitions";
|
|
18
|
+
import { ISummaryStats } from "@fluidframework/runtime-definitions/internal";
|
|
15
19
|
import {
|
|
16
20
|
ITelemetryLoggerExt,
|
|
17
21
|
ITelemetryLoggerPropertyBag,
|
|
@@ -91,7 +95,7 @@ export interface IConnectableRuntime {
|
|
|
91
95
|
* @alpha
|
|
92
96
|
*/
|
|
93
97
|
export interface ISummarizerRuntime extends IConnectableRuntime {
|
|
94
|
-
readonly
|
|
98
|
+
readonly baseLogger: ITelemetryBaseLogger;
|
|
95
99
|
/** clientId of parent (non-summarizing) container that owns summarizer container */
|
|
96
100
|
readonly summarizerClientId: string | undefined;
|
|
97
101
|
readonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>;
|
|
@@ -114,13 +118,6 @@ export interface ISummarizerRuntime extends IConnectableRuntime {
|
|
|
114
118
|
export interface ISummarizeOptions {
|
|
115
119
|
/** True to generate the full tree with no handle reuse optimizations; defaults to false */
|
|
116
120
|
readonly fullTree?: boolean;
|
|
117
|
-
/**
|
|
118
|
-
* True to ask the server what the latest summary is first; defaults to false
|
|
119
|
-
*
|
|
120
|
-
* @deprecated Summarize will not refresh latest snapshot state anymore. Instead it updates the cache and closes.
|
|
121
|
-
* It's expected a new summarizer client will be created, likely by the same parent.
|
|
122
|
-
*/
|
|
123
|
-
readonly refreshLatestAck?: boolean;
|
|
124
121
|
}
|
|
125
122
|
|
|
126
123
|
/**
|
|
@@ -184,14 +181,22 @@ export interface IGeneratedSummaryStats extends ISummaryStats {
|
|
|
184
181
|
readonly summaryNumber: number;
|
|
185
182
|
}
|
|
186
183
|
|
|
184
|
+
/**
|
|
185
|
+
* Type for summarization failures that are retriable.
|
|
186
|
+
* @alpha
|
|
187
|
+
*/
|
|
188
|
+
export interface IRetriableFailureError extends Error {
|
|
189
|
+
readonly retryAfterSeconds?: number;
|
|
190
|
+
}
|
|
191
|
+
|
|
187
192
|
/**
|
|
188
193
|
* Base results for all submitSummary attempts.
|
|
189
194
|
* @alpha
|
|
190
195
|
*/
|
|
191
196
|
export interface IBaseSummarizeResult {
|
|
192
197
|
readonly stage: "base";
|
|
193
|
-
/**
|
|
194
|
-
readonly error:
|
|
198
|
+
/** Retriable error object related to failed summarize attempt. */
|
|
199
|
+
readonly error: IRetriableFailureError | undefined;
|
|
195
200
|
/** Reference sequence number as of the generate summary attempt. */
|
|
196
201
|
readonly referenceSequenceNumber: number;
|
|
197
202
|
readonly minimumSequenceNumber: number;
|
|
@@ -266,19 +271,11 @@ export type SubmitSummaryResult =
|
|
|
266
271
|
*/
|
|
267
272
|
export type SummaryStage = SubmitSummaryResult["stage"] | "unknown";
|
|
268
273
|
|
|
269
|
-
/**
|
|
270
|
-
* Type for summarization failures that are retriable.
|
|
271
|
-
* @alpha
|
|
272
|
-
*/
|
|
273
|
-
export interface IRetriableFailureResult {
|
|
274
|
-
readonly retryAfterSeconds?: number;
|
|
275
|
-
}
|
|
276
|
-
|
|
277
274
|
/**
|
|
278
275
|
* The data in summarizer result when submit summary stage fails.
|
|
279
276
|
* @alpha
|
|
280
277
|
*/
|
|
281
|
-
export interface SubmitSummaryFailureData
|
|
278
|
+
export interface SubmitSummaryFailureData {
|
|
282
279
|
stage: SummaryStage;
|
|
283
280
|
}
|
|
284
281
|
|
|
@@ -301,7 +298,7 @@ export interface IAckSummaryResult {
|
|
|
301
298
|
/**
|
|
302
299
|
* @alpha
|
|
303
300
|
*/
|
|
304
|
-
export interface INackSummaryResult
|
|
301
|
+
export interface INackSummaryResult {
|
|
305
302
|
readonly summaryNackOp: ISummaryNackMessage;
|
|
306
303
|
readonly ackNackDuration: number;
|
|
307
304
|
}
|
|
@@ -318,7 +315,7 @@ export type SummarizeResultPart<TSuccess, TFailure = undefined> =
|
|
|
318
315
|
success: false;
|
|
319
316
|
data: TFailure | undefined;
|
|
320
317
|
message: string;
|
|
321
|
-
error:
|
|
318
|
+
error: IRetriableFailureError;
|
|
322
319
|
};
|
|
323
320
|
|
|
324
321
|
/**
|
|
@@ -536,10 +533,6 @@ type ISummarizeTelemetryRequiredProperties =
|
|
|
536
533
|
type ISummarizeTelemetryOptionalProperties =
|
|
537
534
|
/** Number of attempts within the last time window, used for calculating the throttle delay. */
|
|
538
535
|
| "summaryAttempts"
|
|
539
|
-
/** Number of attempts within the current phase (currently capped at 2 ) */
|
|
540
|
-
| "summaryAttemptsPerPhase"
|
|
541
|
-
/** One-based count of phases we've attempted (used to index into an array of ISummarizeOptions */
|
|
542
|
-
| "summaryAttemptPhase"
|
|
543
536
|
/** Summarization may be attempted multiple times. This tells whether this is the final summarization attempt */
|
|
544
537
|
| "finalAttempt"
|
|
545
538
|
| keyof ISummarizeOptions;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { TypedEventEmitter } from "@fluid-internal/client-utils";
|
|
7
|
-
import { IDeltaManager } from "@fluidframework/container-definitions";
|
|
7
|
+
import { IDeltaManager } from "@fluidframework/container-definitions/internal";
|
|
8
8
|
import { IDisposable, IEvent } from "@fluidframework/core-interfaces";
|
|
9
9
|
import { assert, Deferred } from "@fluidframework/core-utils/internal";
|
|
10
10
|
import {
|
|
@@ -14,15 +14,27 @@ import {
|
|
|
14
14
|
ISnapshotTree,
|
|
15
15
|
SummaryType,
|
|
16
16
|
} from "@fluidframework/protocol-definitions";
|
|
17
|
-
import {
|
|
18
|
-
|
|
17
|
+
import {
|
|
18
|
+
ISummaryTreeWithStats,
|
|
19
|
+
channelsTreeName,
|
|
20
|
+
gcTreeKey,
|
|
21
|
+
} from "@fluidframework/runtime-definitions/internal";
|
|
19
22
|
|
|
20
23
|
import { IGCMetadata } from "../gc/index.js";
|
|
21
24
|
|
|
22
25
|
import { IDocumentSchema } from "./documentSchema.js";
|
|
23
26
|
|
|
24
|
-
|
|
25
|
-
interface
|
|
27
|
+
/**
|
|
28
|
+
* @deprecated - This interface will no longer be exported in the future(AB#8004).
|
|
29
|
+
* @alpha
|
|
30
|
+
*/
|
|
31
|
+
export type OmitAttributesVersions<T> = Omit<T, "snapshotFormatVersion" | "summaryFormatVersion">;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* @deprecated - This interface will no longer be exported in the future(AB#8004).
|
|
35
|
+
* @alpha
|
|
36
|
+
*/
|
|
37
|
+
export interface IFluidDataStoreAttributes0 {
|
|
26
38
|
readonly snapshotFormatVersion?: undefined;
|
|
27
39
|
readonly summaryFormatVersion?: undefined;
|
|
28
40
|
pkg: string;
|
|
@@ -33,11 +45,23 @@ interface IFluidDataStoreAttributes0 {
|
|
|
33
45
|
*/
|
|
34
46
|
readonly isRootDataStore?: boolean;
|
|
35
47
|
}
|
|
36
|
-
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* @deprecated - This interface will no longer be exported in the future(AB#8004).
|
|
51
|
+
* @alpha
|
|
52
|
+
*/
|
|
53
|
+
export interface IFluidDataStoreAttributes1
|
|
54
|
+
extends OmitAttributesVersions<IFluidDataStoreAttributes0> {
|
|
37
55
|
readonly snapshotFormatVersion: "0.1";
|
|
38
56
|
readonly summaryFormatVersion?: undefined;
|
|
39
57
|
}
|
|
40
|
-
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* @deprecated - This interface will no longer be exported in the future(AB#8004).
|
|
61
|
+
* @alpha
|
|
62
|
+
*/
|
|
63
|
+
export interface IFluidDataStoreAttributes2
|
|
64
|
+
extends OmitAttributesVersions<IFluidDataStoreAttributes1> {
|
|
41
65
|
/** Switch from snapshotFormatVersion to summaryFormatVersion */
|
|
42
66
|
readonly snapshotFormatVersion?: undefined;
|
|
43
67
|
readonly summaryFormatVersion: 2;
|
|
@@ -53,6 +77,11 @@ interface IFluidDataStoreAttributes2 extends OmitAttributesVersions<IFluidDataSt
|
|
|
53
77
|
* Added IFluidDataStoreAttributes similar to IChannelAttributes which will tell the attributes of a
|
|
54
78
|
* store like the package, snapshotFormatVersion to take different decisions based on a particular
|
|
55
79
|
* snapshotFormatVersion.
|
|
80
|
+
*
|
|
81
|
+
* @deprecated - This interface will no longer be exported in the future(AB#8004).
|
|
82
|
+
*
|
|
83
|
+
* @alpha
|
|
84
|
+
*
|
|
56
85
|
*/
|
|
57
86
|
export type ReadFluidDataStoreAttributes =
|
|
58
87
|
| IFluidDataStoreAttributes0
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
IPromiseTimerResult,
|
|
12
12
|
Timer,
|
|
13
13
|
} from "@fluidframework/core-utils/internal";
|
|
14
|
-
import { DriverErrorTypes } from "@fluidframework/driver-definitions";
|
|
14
|
+
import { DriverErrorTypes } from "@fluidframework/driver-definitions/internal";
|
|
15
15
|
import { getRetryDelaySecondsFromError } from "@fluidframework/driver-utils/internal";
|
|
16
16
|
import { MessageType } from "@fluidframework/protocol-definitions";
|
|
17
17
|
import {
|
|
@@ -35,6 +35,7 @@ import {
|
|
|
35
35
|
SubmitSummaryResult,
|
|
36
36
|
SummarizeResultPart,
|
|
37
37
|
SummaryGeneratorTelemetry,
|
|
38
|
+
type IRetriableFailureError,
|
|
38
39
|
} from "./summarizerTypes.js";
|
|
39
40
|
import { IClientSummaryWatcher } from "./summaryCollection.js";
|
|
40
41
|
|
|
@@ -127,8 +128,10 @@ const summarizeErrors = {
|
|
|
127
128
|
disconnect: "Summary cancelled due to summarizer or main client disconnect",
|
|
128
129
|
} as const;
|
|
129
130
|
|
|
131
|
+
export type SummarizeErrorCode = keyof typeof summarizeErrors;
|
|
132
|
+
|
|
130
133
|
// Helper functions to report failures and return.
|
|
131
|
-
export const getFailMessage = (errorCode:
|
|
134
|
+
export const getFailMessage = (errorCode: SummarizeErrorCode) =>
|
|
132
135
|
`${errorCode}: ${summarizeErrors[errorCode]}`;
|
|
133
136
|
|
|
134
137
|
export class SummarizeResultBuilder {
|
|
@@ -150,7 +153,7 @@ export class SummarizeResultBuilder {
|
|
|
150
153
|
*/
|
|
151
154
|
public fail(
|
|
152
155
|
message: string,
|
|
153
|
-
error:
|
|
156
|
+
error: IRetriableFailureError,
|
|
154
157
|
submitFailureResult?: SubmitSummaryFailureData,
|
|
155
158
|
nackSummaryResult?: INackSummaryResult,
|
|
156
159
|
) {
|
|
@@ -184,8 +187,7 @@ export class SummarizeResultBuilder {
|
|
|
184
187
|
/**
|
|
185
188
|
* Errors type for errors hit during summary that may be retriable.
|
|
186
189
|
*/
|
|
187
|
-
export class RetriableSummaryError extends LoggingError {
|
|
188
|
-
public readonly canRetry = this.retryAfterSeconds !== undefined;
|
|
190
|
+
export class RetriableSummaryError extends LoggingError implements IRetriableFailureError {
|
|
189
191
|
constructor(
|
|
190
192
|
message: string,
|
|
191
193
|
public readonly retryAfterSeconds?: number,
|
|
@@ -221,9 +223,8 @@ export class SummaryGenerator {
|
|
|
221
223
|
/**
|
|
222
224
|
* Generates summary and listens for broadcast and ack/nack.
|
|
223
225
|
* Returns true for ack, false for nack, and undefined for failure or timeout.
|
|
224
|
-
* @param
|
|
225
|
-
* @param
|
|
226
|
-
* fullTree to generate tree without any summary handles even if unchanged
|
|
226
|
+
* @param summaryOptions - options controlling how the summary is generated or submitted.
|
|
227
|
+
* @param resultsBuilder - optional, result builder to use to build pass or fail result.
|
|
227
228
|
*/
|
|
228
229
|
public summarize(
|
|
229
230
|
summaryOptions: ISubmitSummaryOptions,
|
|
@@ -273,8 +274,8 @@ export class SummaryGenerator {
|
|
|
273
274
|
* be provided. For op broadcast failures, only errors / properties should be provided.
|
|
274
275
|
*/
|
|
275
276
|
const fail = (
|
|
276
|
-
errorCode:
|
|
277
|
-
error
|
|
277
|
+
errorCode: SummarizeErrorCode,
|
|
278
|
+
error: IRetriableFailureError,
|
|
278
279
|
properties?: SummaryGeneratorTelemetry,
|
|
279
280
|
submitFailureResult?: SubmitSummaryFailureData,
|
|
280
281
|
nackSummaryResult?: INackSummaryResult,
|
|
@@ -294,11 +295,9 @@ export class SummaryGenerator {
|
|
|
294
295
|
...properties,
|
|
295
296
|
reason,
|
|
296
297
|
category,
|
|
297
|
-
retryAfterSeconds:
|
|
298
|
-
submitFailureResult?.retryAfterSeconds ??
|
|
299
|
-
nackSummaryResult?.retryAfterSeconds,
|
|
298
|
+
retryAfterSeconds: error.retryAfterSeconds,
|
|
300
299
|
},
|
|
301
|
-
error
|
|
300
|
+
error,
|
|
302
301
|
); // disconnect & summaryAckTimeout do not have proper error.
|
|
303
302
|
|
|
304
303
|
resultsBuilder.fail(reason, error, submitFailureResult, nackSummaryResult);
|
|
@@ -330,9 +329,11 @@ export class SummaryGenerator {
|
|
|
330
329
|
);
|
|
331
330
|
|
|
332
331
|
if (summaryData.stage !== "submit") {
|
|
333
|
-
|
|
332
|
+
const errorCode: SummarizeErrorCode = "submitSummaryFailure";
|
|
333
|
+
const retriableError =
|
|
334
|
+
summaryData.error ?? new RetriableSummaryError(getFailMessage(errorCode));
|
|
335
|
+
return fail(errorCode, retriableError, summarizeTelemetryProps, {
|
|
334
336
|
stage: summaryData.stage,
|
|
335
|
-
retryAfterSeconds: getRetryDelaySecondsFromError(summaryData.error),
|
|
336
337
|
});
|
|
337
338
|
}
|
|
338
339
|
|
|
@@ -368,11 +369,14 @@ export class SummaryGenerator {
|
|
|
368
369
|
} catch (error) {
|
|
369
370
|
return fail(
|
|
370
371
|
"submitSummaryFailure",
|
|
371
|
-
wrapError(
|
|
372
|
+
wrapError(
|
|
373
|
+
error,
|
|
374
|
+
(message) =>
|
|
375
|
+
new RetriableSummaryError(message, getRetryDelaySecondsFromError(error)),
|
|
376
|
+
),
|
|
372
377
|
undefined /* properties */,
|
|
373
378
|
{
|
|
374
379
|
stage: "unknown",
|
|
375
|
-
retryAfterSeconds: getRetryDelaySecondsFromError(error),
|
|
376
380
|
},
|
|
377
381
|
);
|
|
378
382
|
} finally {
|
|
@@ -393,10 +397,17 @@ export class SummaryGenerator {
|
|
|
393
397
|
cancellationToken,
|
|
394
398
|
);
|
|
395
399
|
if (waitBroadcastResult.result === "cancelled") {
|
|
396
|
-
|
|
400
|
+
const errorCode: SummarizeErrorCode = "disconnect";
|
|
401
|
+
return fail(errorCode, new RetriableSummaryError(getFailMessage(errorCode)));
|
|
397
402
|
}
|
|
398
403
|
if (waitBroadcastResult.result !== "done") {
|
|
399
|
-
|
|
404
|
+
// The summary op may not have been received within the timeout due to a transient error. So,
|
|
405
|
+
// fail with a retriable error to re-attempt the summary if possible.
|
|
406
|
+
const errorCode: SummarizeErrorCode = "summaryOpWaitTimeout";
|
|
407
|
+
return fail(
|
|
408
|
+
errorCode,
|
|
409
|
+
new RetriableSummaryError(getFailMessage(errorCode), 0 /* retryAfterSeconds */),
|
|
410
|
+
);
|
|
400
411
|
}
|
|
401
412
|
const summarizeOp = waitBroadcastResult.value;
|
|
402
413
|
|
|
@@ -422,10 +433,17 @@ export class SummaryGenerator {
|
|
|
422
433
|
cancellationToken,
|
|
423
434
|
);
|
|
424
435
|
if (waitAckNackResult.result === "cancelled") {
|
|
425
|
-
|
|
436
|
+
const errorCode: SummarizeErrorCode = "disconnect";
|
|
437
|
+
return fail(errorCode, new RetriableSummaryError(getFailMessage(errorCode)));
|
|
426
438
|
}
|
|
427
439
|
if (waitAckNackResult.result !== "done") {
|
|
428
|
-
|
|
440
|
+
const errorCode: SummarizeErrorCode = "summaryAckWaitTimeout";
|
|
441
|
+
// The summary ack may not have been received within the timeout due to a transient error. So,
|
|
442
|
+
// fail with a retriable error to re-attempt the summary if possible.
|
|
443
|
+
return fail(
|
|
444
|
+
errorCode,
|
|
445
|
+
new RetriableSummaryError(getFailMessage(errorCode), 0 /* retryAfterSeconds */),
|
|
446
|
+
);
|
|
429
447
|
}
|
|
430
448
|
const ackNackOp = waitAckNackResult.value;
|
|
431
449
|
this.pendingAckTimer.clear();
|
|
@@ -469,11 +487,16 @@ export class SummaryGenerator {
|
|
|
469
487
|
const errorMessage = summaryNack?.message;
|
|
470
488
|
const retryAfterSeconds = summaryNack?.retryAfter;
|
|
471
489
|
|
|
490
|
+
const errorCode: SummarizeErrorCode = "summaryNack";
|
|
491
|
+
|
|
472
492
|
// pre-0.58 error message prefix: summaryNack
|
|
473
|
-
const error = new
|
|
493
|
+
const error = new RetriableSummaryError(
|
|
494
|
+
getFailMessage(errorCode),
|
|
474
495
|
retryAfterSeconds,
|
|
475
|
-
|
|
476
|
-
|
|
496
|
+
{
|
|
497
|
+
errorMessage,
|
|
498
|
+
},
|
|
499
|
+
);
|
|
477
500
|
|
|
478
501
|
assert(
|
|
479
502
|
getRetryDelaySecondsFromError(error) === retryAfterSeconds,
|
|
@@ -481,11 +504,11 @@ export class SummaryGenerator {
|
|
|
481
504
|
);
|
|
482
505
|
// This will only set resultsBuilder.receivedSummaryAckOrNack, as other promises are already set.
|
|
483
506
|
return fail(
|
|
484
|
-
|
|
507
|
+
errorCode,
|
|
485
508
|
error,
|
|
486
509
|
{ ...summarizeTelemetryProps, nackRetryAfter: retryAfterSeconds },
|
|
487
510
|
undefined /* submitFailureResult */,
|
|
488
|
-
{ summaryNackOp: ackNackOp, ackNackDuration
|
|
511
|
+
{ summaryNackOp: ackNackOp, ackNackDuration },
|
|
489
512
|
);
|
|
490
513
|
}
|
|
491
514
|
} finally {
|
|
@@ -11,7 +11,7 @@ import {
|
|
|
11
11
|
ITelemetryBaseLogger,
|
|
12
12
|
} from "@fluidframework/core-interfaces";
|
|
13
13
|
import { assert } from "@fluidframework/core-utils/internal";
|
|
14
|
-
import { DriverErrorTypes } from "@fluidframework/driver-definitions";
|
|
14
|
+
import { DriverErrorTypes } from "@fluidframework/driver-definitions/internal";
|
|
15
15
|
import {
|
|
16
16
|
ITelemetryLoggerExt,
|
|
17
17
|
PerformanceEvent,
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deltaManagerSummarizerProxy.d.ts","sourceRoot":"","sources":["../src/deltaManagerSummarizerProxy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAEX,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,MAAM,uCAAuC,CAAC;AAG/C,OAAO,EACN,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,yBAAyB,EACzB,cAAc,EACd,MAAM,sCAAsC,CAAC;AAI9C;;;;;GAKG;AACH,8BAAsB,qBACrB,SAAQ,iBAAiB,CAAC,mBAAmB,CAC7C,YAAW,aAAa,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;IAmEpE,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;IAjE5F,IAAW,YAAY,IAAI,YAAY,CAEtC;IAED,IAAW,OAAO,IAAI,WAAW,CAAC,yBAAyB,CAAC,CAE3D;IAED,IAAW,QAAQ,IAAI,WAAW,CAAC,gBAAgB,EAAE,CAAC,CAErD;IAED,IAAW,aAAa,IAAI,WAAW,CAAC,cAAc,CAAC,CAEtD;IAED,IAAW,qBAAqB,IAAI,MAAM,CAEzC;IAED,IAAW,kBAAkB,IAAI,MAAM,CAEtC;IAED,IAAW,WAAW,0CAErB;IAED,IAAW,kBAAkB,WAE5B;IAED,IAAW,qBAAqB,IAAI,MAAM,CAEzC;IAED,IAAW,2BAA2B,YAErC;IAED,IAAW,aAAa,IAAI,cAAc,CAEzC;IAED,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,cAAc,IAAI,MAAM,CAElC;IAED,IAAW,oBAAoB,IAAI,oBAAoB,GAAG,SAAS,CAElE;IAED,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED,IAAW,YAAY,IAAI,YAAY,CAEtC;gBAGmB,YAAY,EAAE,aAAa,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;IAgBrF,OAAO,IAAI,IAAI;IAUf,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI;IAI5D,KAAK,IAAI,IAAI;IAIpB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAE5B;IACF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAEzB;IACF,OAAO,CAAC,QAAQ,CAAC,IAAI,CAEnB;IACF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAErB;IACF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAExB;IACF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAE3B;IACF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAKzB;CACF;AAED;;;;GAIG;AACH,qBAAa,2BAA4B,SAAQ,qBAAqB;IAwBpE,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;IAvB5F,IAAW,MAAM,IAAI,OAAO,CAI3B;IAED,IAAW,YAAY,IAAI,YAAY,CAYtC;IAED,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;gBAGzB,YAAY,EAAE,aAAa,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;CAK5F"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deltaManagerSummarizerProxy.js","sourceRoot":"","sources":["../src/deltaManagerSummarizerProxy.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport type {\n\tIConnectionDetails,\n\tIDeltaManager,\n\tIDeltaManagerEvents,\n\tIDeltaQueue,\n\tIDeltaSender,\n\tReadOnlyInfo,\n} from \"@fluidframework/container-definitions\";\nimport type { IErrorBase } from \"@fluidframework/core-interfaces\";\nimport type { IAnyDriverError } from \"@fluidframework/driver-definitions\";\nimport {\n\tIClientConfiguration,\n\tIClientDetails,\n\tIDocumentMessage,\n\tISequencedDocumentMessage,\n\tISignalMessage,\n} from \"@fluidframework/protocol-definitions\";\n\nimport { summarizerClientType } from \"./summary/index.js\";\n\n/**\n * Base class for DeltaManager proxy that proxy's access to the real DeltaManager.\n *\n * This class allows us to build proxy functionality without actually having to implement all the methods\n * of the DeltaManager.\n */\nexport abstract class BaseDeltaManagerProxy\n\textends TypedEventEmitter<IDeltaManagerEvents>\n\timplements IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>\n{\n\tpublic get IDeltaSender(): IDeltaSender {\n\t\treturn this;\n\t}\n\n\tpublic get inbound(): IDeltaQueue<ISequencedDocumentMessage> {\n\t\treturn this.deltaManager.inbound;\n\t}\n\n\tpublic get outbound(): IDeltaQueue<IDocumentMessage[]> {\n\t\treturn this.deltaManager.outbound;\n\t}\n\n\tpublic get inboundSignal(): IDeltaQueue<ISignalMessage> {\n\t\treturn this.deltaManager.inboundSignal;\n\t}\n\n\tpublic get minimumSequenceNumber(): number {\n\t\treturn this.deltaManager.minimumSequenceNumber;\n\t}\n\n\tpublic get lastSequenceNumber(): number {\n\t\treturn this.deltaManager.lastSequenceNumber;\n\t}\n\n\tpublic get lastMessage() {\n\t\treturn this.deltaManager.lastMessage;\n\t}\n\n\tpublic get lastKnownSeqNumber() {\n\t\treturn this.deltaManager.lastKnownSeqNumber;\n\t}\n\n\tpublic get initialSequenceNumber(): number {\n\t\treturn this.deltaManager.initialSequenceNumber;\n\t}\n\n\tpublic get hasCheckpointSequenceNumber() {\n\t\treturn this.deltaManager.hasCheckpointSequenceNumber;\n\t}\n\n\tpublic get clientDetails(): IClientDetails {\n\t\treturn this.deltaManager.clientDetails;\n\t}\n\n\tpublic get version(): string {\n\t\treturn this.deltaManager.version;\n\t}\n\n\tpublic get maxMessageSize(): number {\n\t\treturn this.deltaManager.maxMessageSize;\n\t}\n\n\tpublic get serviceConfiguration(): IClientConfiguration | undefined {\n\t\treturn this.deltaManager.serviceConfiguration;\n\t}\n\n\tpublic get active(): boolean {\n\t\treturn this.deltaManager.active;\n\t}\n\n\tpublic get readOnlyInfo(): ReadOnlyInfo {\n\t\treturn this.deltaManager.readOnlyInfo;\n\t}\n\n\tconstructor(\n\t\tprotected readonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>,\n\t) {\n\t\tsuper();\n\n\t\t// We are expecting this class to have many listeners, so we suppress noisy \"MaxListenersExceededWarning\" logging.\n\t\tsuper.setMaxListeners(0);\n\n\t\tthis.deltaManager.on(\"prepareSend\", this.onPrepareSend);\n\t\tthis.deltaManager.on(\"submitOp\", this.onSubmitOp);\n\t\tthis.deltaManager.on(\"op\", this.onOp);\n\t\tthis.deltaManager.on(\"pong\", this.onPong);\n\t\tthis.deltaManager.on(\"connect\", this.onConnect);\n\t\tthis.deltaManager.on(\"disconnect\", this.onDisconnect);\n\t\tthis.deltaManager.on(\"readonly\", this.onReadonly);\n\t}\n\n\tpublic dispose(): void {\n\t\tthis.deltaManager.off(\"prepareSend\", this.onPrepareSend);\n\t\tthis.deltaManager.off(\"submitOp\", this.onSubmitOp);\n\t\tthis.deltaManager.off(\"op\", this.onOp);\n\t\tthis.deltaManager.off(\"pong\", this.onPong);\n\t\tthis.deltaManager.off(\"connect\", this.onConnect);\n\t\tthis.deltaManager.off(\"disconnect\", this.onDisconnect);\n\t\tthis.deltaManager.off(\"readonly\", this.onReadonly);\n\t}\n\n\tpublic submitSignal(content: string, targetClientId?: string): void {\n\t\treturn this.deltaManager.submitSignal(content, targetClientId);\n\t}\n\n\tpublic flush(): void {\n\t\treturn this.deltaManager.flush();\n\t}\n\n\tprivate readonly onPrepareSend = (messageBuffer: any[]): void => {\n\t\tthis.emit(\"prepareSend\", messageBuffer);\n\t};\n\tprivate readonly onSubmitOp = (message: IDocumentMessage): void => {\n\t\tthis.emit(\"submitOp\", message);\n\t};\n\tprivate readonly onOp = (message: ISequencedDocumentMessage, processingTime: number): void => {\n\t\tthis.emit(\"op\", message, processingTime);\n\t};\n\tprivate readonly onPong = (latency: number): void => {\n\t\tthis.emit(\"pong\", latency);\n\t};\n\tprivate readonly onConnect = (details: IConnectionDetails, opsBehind?: number): void => {\n\t\tthis.emit(\"connect\", details, opsBehind);\n\t};\n\tprivate readonly onDisconnect = (reason: string, error?: IAnyDriverError): void => {\n\t\tthis.emit(\"disconnect\", reason, error);\n\t};\n\tprivate readonly onReadonly = (\n\t\treadonly: boolean,\n\t\treadonlyConnectionReason?: { reason: string; error?: IErrorBase },\n\t): void => {\n\t\tthis.emit(\"readonly\", readonly, readonlyConnectionReason);\n\t};\n}\n\n/**\n * Proxy to the real IDeltaManager for restricting certain access to layers below container runtime in summarizer clients:\n * - Summarizer client should be read-only to layers below the container runtime to restrict local changes.\n * - Summarizer client should not be active to layers below the container runtime to restrict local changes.\n */\nexport class DeltaManagerSummarizerProxy extends BaseDeltaManagerProxy {\n\tpublic get active(): boolean {\n\t\t// Summarize clients should not be active. There shouldn't be any local changes (writes) in the summarizer\n\t\t// except for the SummarizeOp which is generated by the runtime.\n\t\treturn !this.isSummarizerClient && this.deltaManager.active;\n\t}\n\n\tpublic get readOnlyInfo(): ReadOnlyInfo {\n\t\t// Summarizer clients should be read-only as far as the runtime and layers below are concerned. There shouldn't\n\t\t// be any local changes (writes) in the summarizer except for the summarize op which is generated by the runtime.\n\t\tif (this.isSummarizerClient) {\n\t\t\treturn {\n\t\t\t\treadonly: true,\n\t\t\t\tforced: false,\n\t\t\t\tpermissions: undefined,\n\t\t\t\tstorageOnly: false,\n\t\t\t};\n\t\t}\n\t\treturn this.deltaManager.readOnlyInfo;\n\t}\n\n\tprivate readonly isSummarizerClient: boolean;\n\n\tconstructor(\n\t\tprotected readonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>,\n\t) {\n\t\tsuper(deltaManager);\n\t\tthis.isSummarizerClient = this.deltaManager.clientDetails.type === summarizerClientType;\n\t}\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deltaManagerSummarizerProxy.d.ts","sourceRoot":"","sources":["../src/deltaManagerSummarizerProxy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAEX,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,MAAM,uCAAuC,CAAC;AAG/C,OAAO,EACN,oBAAoB,EACpB,cAAc,EACd,gBAAgB,EAChB,yBAAyB,EACzB,cAAc,EACd,MAAM,sCAAsC,CAAC;AAI9C;;;;;GAKG;AACH,8BAAsB,qBACrB,SAAQ,iBAAiB,CAAC,mBAAmB,CAC7C,YAAW,aAAa,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;IAmEpE,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;IAjE5F,IAAW,YAAY,IAAI,YAAY,CAEtC;IAED,IAAW,OAAO,IAAI,WAAW,CAAC,yBAAyB,CAAC,CAE3D;IAED,IAAW,QAAQ,IAAI,WAAW,CAAC,gBAAgB,EAAE,CAAC,CAErD;IAED,IAAW,aAAa,IAAI,WAAW,CAAC,cAAc,CAAC,CAEtD;IAED,IAAW,qBAAqB,IAAI,MAAM,CAEzC;IAED,IAAW,kBAAkB,IAAI,MAAM,CAEtC;IAED,IAAW,WAAW,0CAErB;IAED,IAAW,kBAAkB,WAE5B;IAED,IAAW,qBAAqB,IAAI,MAAM,CAEzC;IAED,IAAW,2BAA2B,YAErC;IAED,IAAW,aAAa,IAAI,cAAc,CAEzC;IAED,IAAW,OAAO,IAAI,MAAM,CAE3B;IAED,IAAW,cAAc,IAAI,MAAM,CAElC;IAED,IAAW,oBAAoB,IAAI,oBAAoB,GAAG,SAAS,CAElE;IAED,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED,IAAW,YAAY,IAAI,YAAY,CAEtC;gBAGmB,YAAY,EAAE,aAAa,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;IAgBrF,OAAO,IAAI,IAAI;IAUf,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI;IAI5D,KAAK,IAAI,IAAI;IAIpB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAE5B;IACF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAEzB;IACF,OAAO,CAAC,QAAQ,CAAC,IAAI,CAEnB;IACF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAErB;IACF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAExB;IACF,OAAO,CAAC,QAAQ,CAAC,YAAY,CAE3B;IACF,OAAO,CAAC,QAAQ,CAAC,UAAU,CAKzB;CACF;AAED;;;;GAIG;AACH,qBAAa,2BAA4B,SAAQ,qBAAqB;IAwBpE,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,aAAa,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;IAvB5F,IAAW,MAAM,IAAI,OAAO,CAI3B;IAED,IAAW,YAAY,IAAI,YAAY,CAYtC;IAED,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;gBAGzB,YAAY,EAAE,aAAa,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;CAK5F"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"deltaManagerSummarizerProxy.js","sourceRoot":"","sources":["../src/deltaManagerSummarizerProxy.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport type {\n\tIConnectionDetails,\n\tIDeltaManager,\n\tIDeltaManagerEvents,\n\tIDeltaQueue,\n\tIDeltaSender,\n\tReadOnlyInfo,\n} from \"@fluidframework/container-definitions\";\nimport type { IErrorBase } from \"@fluidframework/core-interfaces\";\nimport type { IAnyDriverError } from \"@fluidframework/driver-definitions\";\nimport {\n\tIClientConfiguration,\n\tIClientDetails,\n\tIDocumentMessage,\n\tISequencedDocumentMessage,\n\tISignalMessage,\n} from \"@fluidframework/protocol-definitions\";\n\nimport { summarizerClientType } from \"./summary/index.js\";\n\n/**\n * Base class for DeltaManager proxy that proxy's access to the real DeltaManager.\n *\n * This class allows us to build proxy functionality without actually having to implement all the methods\n * of the DeltaManager.\n */\nexport abstract class BaseDeltaManagerProxy\n\textends TypedEventEmitter<IDeltaManagerEvents>\n\timplements IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>\n{\n\tpublic get IDeltaSender(): IDeltaSender {\n\t\treturn this;\n\t}\n\n\tpublic get inbound(): IDeltaQueue<ISequencedDocumentMessage> {\n\t\treturn this.deltaManager.inbound;\n\t}\n\n\tpublic get outbound(): IDeltaQueue<IDocumentMessage[]> {\n\t\treturn this.deltaManager.outbound;\n\t}\n\n\tpublic get inboundSignal(): IDeltaQueue<ISignalMessage> {\n\t\treturn this.deltaManager.inboundSignal;\n\t}\n\n\tpublic get minimumSequenceNumber(): number {\n\t\treturn this.deltaManager.minimumSequenceNumber;\n\t}\n\n\tpublic get lastSequenceNumber(): number {\n\t\treturn this.deltaManager.lastSequenceNumber;\n\t}\n\n\tpublic get lastMessage() {\n\t\treturn this.deltaManager.lastMessage;\n\t}\n\n\tpublic get lastKnownSeqNumber() {\n\t\treturn this.deltaManager.lastKnownSeqNumber;\n\t}\n\n\tpublic get initialSequenceNumber(): number {\n\t\treturn this.deltaManager.initialSequenceNumber;\n\t}\n\n\tpublic get hasCheckpointSequenceNumber() {\n\t\treturn this.deltaManager.hasCheckpointSequenceNumber;\n\t}\n\n\tpublic get clientDetails(): IClientDetails {\n\t\treturn this.deltaManager.clientDetails;\n\t}\n\n\tpublic get version(): string {\n\t\treturn this.deltaManager.version;\n\t}\n\n\tpublic get maxMessageSize(): number {\n\t\treturn this.deltaManager.maxMessageSize;\n\t}\n\n\tpublic get serviceConfiguration(): IClientConfiguration | undefined {\n\t\treturn this.deltaManager.serviceConfiguration;\n\t}\n\n\tpublic get active(): boolean {\n\t\treturn this.deltaManager.active;\n\t}\n\n\tpublic get readOnlyInfo(): ReadOnlyInfo {\n\t\treturn this.deltaManager.readOnlyInfo;\n\t}\n\n\tconstructor(\n\t\tprotected readonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>,\n\t) {\n\t\tsuper();\n\n\t\t// We are expecting this class to have many listeners, so we suppress noisy \"MaxListenersExceededWarning\" logging.\n\t\tsuper.setMaxListeners(0);\n\n\t\tthis.deltaManager.on(\"prepareSend\", this.onPrepareSend);\n\t\tthis.deltaManager.on(\"submitOp\", this.onSubmitOp);\n\t\tthis.deltaManager.on(\"op\", this.onOp);\n\t\tthis.deltaManager.on(\"pong\", this.onPong);\n\t\tthis.deltaManager.on(\"connect\", this.onConnect);\n\t\tthis.deltaManager.on(\"disconnect\", this.onDisconnect);\n\t\tthis.deltaManager.on(\"readonly\", this.onReadonly);\n\t}\n\n\tpublic dispose(): void {\n\t\tthis.deltaManager.off(\"prepareSend\", this.onPrepareSend);\n\t\tthis.deltaManager.off(\"submitOp\", this.onSubmitOp);\n\t\tthis.deltaManager.off(\"op\", this.onOp);\n\t\tthis.deltaManager.off(\"pong\", this.onPong);\n\t\tthis.deltaManager.off(\"connect\", this.onConnect);\n\t\tthis.deltaManager.off(\"disconnect\", this.onDisconnect);\n\t\tthis.deltaManager.off(\"readonly\", this.onReadonly);\n\t}\n\n\tpublic submitSignal(content: string, targetClientId?: string): void {\n\t\treturn this.deltaManager.submitSignal(content, targetClientId);\n\t}\n\n\tpublic flush(): void {\n\t\treturn this.deltaManager.flush();\n\t}\n\n\tprivate readonly onPrepareSend = (messageBuffer: any[]): void => {\n\t\tthis.emit(\"prepareSend\", messageBuffer);\n\t};\n\tprivate readonly onSubmitOp = (message: IDocumentMessage): void => {\n\t\tthis.emit(\"submitOp\", message);\n\t};\n\tprivate readonly onOp = (message: ISequencedDocumentMessage, processingTime: number): void => {\n\t\tthis.emit(\"op\", message, processingTime);\n\t};\n\tprivate readonly onPong = (latency: number): void => {\n\t\tthis.emit(\"pong\", latency);\n\t};\n\tprivate readonly onConnect = (details: IConnectionDetails, opsBehind?: number): void => {\n\t\tthis.emit(\"connect\", details, opsBehind);\n\t};\n\tprivate readonly onDisconnect = (reason: string, error?: IAnyDriverError): void => {\n\t\tthis.emit(\"disconnect\", reason, error);\n\t};\n\tprivate readonly onReadonly = (\n\t\treadonly: boolean,\n\t\treadonlyConnectionReason?: { reason: string; error?: IErrorBase },\n\t): void => {\n\t\tthis.emit(\"readonly\", readonly, readonlyConnectionReason);\n\t};\n}\n\n/**\n * Proxy to the real IDeltaManager for restricting certain access to layers below container runtime in summarizer clients:\n * - Summarizer client should be read-only to layers below the container runtime to restrict local changes.\n * - Summarizer client should not be active to layers below the container runtime to restrict local changes.\n */\nexport class DeltaManagerSummarizerProxy extends BaseDeltaManagerProxy {\n\tpublic get active(): boolean {\n\t\t// Summarize clients should not be active. There shouldn't be any local changes (writes) in the summarizer\n\t\t// except for the SummarizeOp which is generated by the runtime.\n\t\treturn !this.isSummarizerClient && this.deltaManager.active;\n\t}\n\n\tpublic get readOnlyInfo(): ReadOnlyInfo {\n\t\t// Summarizer clients should be read-only as far as the runtime and layers below are concerned. There shouldn't\n\t\t// be any local changes (writes) in the summarizer except for the summarize op which is generated by the runtime.\n\t\tif (this.isSummarizerClient) {\n\t\t\treturn {\n\t\t\t\treadonly: true,\n\t\t\t\tforced: false,\n\t\t\t\tpermissions: undefined,\n\t\t\t\tstorageOnly: false,\n\t\t\t};\n\t\t}\n\t\treturn this.deltaManager.readOnlyInfo;\n\t}\n\n\tprivate readonly isSummarizerClient: boolean;\n\n\tconstructor(\n\t\tprotected readonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>,\n\t) {\n\t\tsuper(deltaManager);\n\t\tthis.isSummarizerClient = this.deltaManager.clientDetails.type === summarizerClientType;\n\t}\n}\n"]}
|