@fluidframework/container-runtime 2.23.0 → 2.31.0
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 +593 -537
- package/api-report/container-runtime.legacy.alpha.api.md +0 -246
- package/dist/blobManager/blobManager.d.ts +11 -9
- package/dist/blobManager/blobManager.d.ts.map +1 -1
- package/dist/blobManager/blobManager.js +38 -39
- package/dist/blobManager/blobManager.js.map +1 -1
- package/dist/blobManager/blobManagerSnapSum.d.ts +2 -4
- package/dist/blobManager/blobManagerSnapSum.d.ts.map +1 -1
- package/dist/blobManager/blobManagerSnapSum.js +6 -6
- package/dist/blobManager/blobManagerSnapSum.js.map +1 -1
- package/dist/channelCollection.d.ts +1 -7
- package/dist/channelCollection.d.ts.map +1 -1
- package/dist/channelCollection.js +2 -27
- package/dist/channelCollection.js.map +1 -1
- package/dist/connectionTelemetry.d.ts +0 -43
- package/dist/connectionTelemetry.d.ts.map +1 -1
- package/dist/connectionTelemetry.js.map +1 -1
- package/dist/containerRuntime.d.ts +40 -145
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +149 -364
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStoreContext.d.ts +6 -14
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +14 -26
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +2 -20
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcConfigs.d.ts.map +1 -1
- package/dist/gc/gcConfigs.js +0 -2
- package/dist/gc/gcConfigs.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +8 -24
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js +1 -3
- package/dist/gc/gcDefinitions.js.map +1 -1
- package/dist/gc/gcHelpers.d.ts.map +1 -1
- package/dist/gc/gcHelpers.js +1 -4
- package/dist/gc/gcHelpers.js.map +1 -1
- package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/dist/gc/gcSummaryStateTracker.js +0 -1
- package/dist/gc/gcSummaryStateTracker.js.map +1 -1
- package/dist/gc/gcTelemetry.d.ts.map +1 -1
- package/dist/gc/gcTelemetry.js +6 -18
- package/dist/gc/gcTelemetry.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +0 -29
- package/dist/messageTypes.d.ts.map +1 -1
- package/dist/messageTypes.js.map +1 -1
- package/dist/opLifecycle/batchManager.d.ts.map +1 -1
- package/dist/opLifecycle/batchManager.js +16 -5
- package/dist/opLifecycle/batchManager.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +12 -3
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +41 -21
- package/dist/opLifecycle/outbox.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 -0
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +12 -2
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/runCounter.d.ts +11 -0
- package/dist/runCounter.d.ts.map +1 -0
- package/dist/runCounter.js +43 -0
- package/dist/runCounter.js.map +1 -0
- package/dist/runtimeLayerCompatState.d.ts +51 -0
- package/dist/runtimeLayerCompatState.d.ts.map +1 -0
- package/dist/runtimeLayerCompatState.js +123 -0
- package/dist/runtimeLayerCompatState.js.map +1 -0
- package/dist/signalTelemetryProcessing.d.ts +33 -0
- package/dist/signalTelemetryProcessing.d.ts.map +1 -0
- package/dist/signalTelemetryProcessing.js +149 -0
- package/dist/signalTelemetryProcessing.js.map +1 -0
- package/dist/summary/documentSchema.d.ts +7 -31
- package/dist/summary/documentSchema.d.ts.map +1 -1
- package/dist/summary/documentSchema.js +2 -18
- package/dist/summary/documentSchema.js.map +1 -1
- package/dist/summary/index.d.ts +2 -1
- package/dist/summary/index.d.ts.map +1 -1
- package/dist/summary/index.js +7 -1
- package/dist/summary/index.js.map +1 -1
- package/dist/summary/orderedClientElection.d.ts +1 -3
- package/dist/summary/orderedClientElection.d.ts.map +1 -1
- package/dist/summary/orderedClientElection.js.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.d.ts +1 -3
- package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.js +2 -7
- package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/dist/summary/runningSummarizer.d.ts +1 -2
- package/dist/summary/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/runningSummarizer.js +4 -23
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summarizer.d.ts +2 -5
- package/dist/summary/summarizer.d.ts.map +1 -1
- package/dist/summary/summarizer.js +3 -11
- package/dist/summary/summarizer.js.map +1 -1
- package/dist/summary/summarizerClientElection.d.ts.map +1 -1
- package/dist/summary/summarizerClientElection.js +0 -1
- package/dist/summary/summarizerClientElection.js.map +1 -1
- package/dist/summary/summarizerHeuristics.d.ts +1 -1
- package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
- package/dist/summary/summarizerHeuristics.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.d.ts +2 -2
- package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.js +4 -4
- package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +1 -18
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.js +0 -27
- package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +2 -2
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js +1 -2
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/dist/summary/summarizerTypes.d.ts +109 -22
- package/dist/summary/summarizerTypes.d.ts.map +1 -1
- package/dist/summary/summarizerTypes.js.map +1 -1
- package/dist/summary/summaryFormat.d.ts +3 -9
- package/dist/summary/summaryFormat.d.ts.map +1 -1
- package/dist/summary/summaryFormat.js.map +1 -1
- package/dist/summary/summaryGenerator.d.ts.map +1 -1
- package/dist/summary/summaryGenerator.js +3 -9
- package/dist/summary/summaryGenerator.js.map +1 -1
- package/dist/summary/summaryHelpers.d.ts +19 -0
- package/dist/summary/summaryHelpers.d.ts.map +1 -0
- package/dist/summary/summaryHelpers.js +90 -0
- package/dist/summary/summaryHelpers.js.map +1 -0
- package/dist/summary/summaryManager.d.ts.map +1 -1
- package/dist/summary/summaryManager.js +0 -2
- package/dist/summary/summaryManager.js.map +1 -1
- package/lib/blobManager/blobManager.d.ts +11 -9
- package/lib/blobManager/blobManager.d.ts.map +1 -1
- package/lib/blobManager/blobManager.js +37 -37
- package/lib/blobManager/blobManager.js.map +1 -1
- package/lib/blobManager/blobManagerSnapSum.d.ts +2 -4
- package/lib/blobManager/blobManagerSnapSum.d.ts.map +1 -1
- package/lib/blobManager/blobManagerSnapSum.js +6 -6
- package/lib/blobManager/blobManagerSnapSum.js.map +1 -1
- package/lib/channelCollection.d.ts +1 -7
- package/lib/channelCollection.d.ts.map +1 -1
- package/lib/channelCollection.js +3 -30
- package/lib/channelCollection.js.map +1 -1
- package/lib/connectionTelemetry.d.ts +0 -43
- package/lib/connectionTelemetry.d.ts.map +1 -1
- package/lib/connectionTelemetry.js.map +1 -1
- package/lib/containerRuntime.d.ts +40 -145
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +151 -372
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStoreContext.d.ts +6 -14
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +14 -26
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/gc/garbageCollection.d.ts.map +1 -1
- package/lib/gc/garbageCollection.js +3 -23
- package/lib/gc/garbageCollection.js.map +1 -1
- package/lib/gc/gcConfigs.d.ts.map +1 -1
- package/lib/gc/gcConfigs.js +0 -2
- package/lib/gc/gcConfigs.js.map +1 -1
- package/lib/gc/gcDefinitions.d.ts +8 -24
- package/lib/gc/gcDefinitions.d.ts.map +1 -1
- package/lib/gc/gcDefinitions.js +1 -3
- package/lib/gc/gcDefinitions.js.map +1 -1
- package/lib/gc/gcHelpers.d.ts.map +1 -1
- package/lib/gc/gcHelpers.js +1 -4
- package/lib/gc/gcHelpers.js.map +1 -1
- package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/lib/gc/gcSummaryStateTracker.js +0 -1
- package/lib/gc/gcSummaryStateTracker.js.map +1 -1
- package/lib/gc/gcTelemetry.d.ts.map +1 -1
- package/lib/gc/gcTelemetry.js +7 -21
- package/lib/gc/gcTelemetry.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/lib/legacy.d.ts +0 -29
- package/lib/messageTypes.d.ts.map +1 -1
- package/lib/messageTypes.js.map +1 -1
- package/lib/opLifecycle/batchManager.d.ts.map +1 -1
- package/lib/opLifecycle/batchManager.js +16 -5
- package/lib/opLifecycle/batchManager.js.map +1 -1
- package/lib/opLifecycle/outbox.d.ts +12 -3
- package/lib/opLifecycle/outbox.d.ts.map +1 -1
- package/lib/opLifecycle/outbox.js +43 -23
- package/lib/opLifecycle/outbox.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 -0
- package/lib/pendingStateManager.d.ts.map +1 -1
- package/lib/pendingStateManager.js +12 -2
- package/lib/pendingStateManager.js.map +1 -1
- package/lib/runCounter.d.ts +11 -0
- package/lib/runCounter.d.ts.map +1 -0
- package/lib/runCounter.js +39 -0
- package/lib/runCounter.js.map +1 -0
- package/lib/runtimeLayerCompatState.d.ts +51 -0
- package/lib/runtimeLayerCompatState.d.ts.map +1 -0
- package/lib/runtimeLayerCompatState.js +118 -0
- package/lib/runtimeLayerCompatState.js.map +1 -0
- package/lib/signalTelemetryProcessing.d.ts +33 -0
- package/lib/signalTelemetryProcessing.d.ts.map +1 -0
- package/lib/signalTelemetryProcessing.js +145 -0
- package/lib/signalTelemetryProcessing.js.map +1 -0
- package/lib/summary/documentSchema.d.ts +7 -31
- package/lib/summary/documentSchema.d.ts.map +1 -1
- package/lib/summary/documentSchema.js +2 -18
- package/lib/summary/documentSchema.js.map +1 -1
- package/lib/summary/index.d.ts +2 -1
- package/lib/summary/index.d.ts.map +1 -1
- package/lib/summary/index.js +1 -0
- package/lib/summary/index.js.map +1 -1
- package/lib/summary/orderedClientElection.d.ts +1 -3
- package/lib/summary/orderedClientElection.d.ts.map +1 -1
- package/lib/summary/orderedClientElection.js.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.d.ts +1 -3
- package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.js +2 -7
- package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/lib/summary/runningSummarizer.d.ts +1 -2
- package/lib/summary/runningSummarizer.d.ts.map +1 -1
- package/lib/summary/runningSummarizer.js +4 -23
- package/lib/summary/runningSummarizer.js.map +1 -1
- package/lib/summary/summarizer.d.ts +2 -5
- package/lib/summary/summarizer.d.ts.map +1 -1
- package/lib/summary/summarizer.js +3 -11
- package/lib/summary/summarizer.js.map +1 -1
- package/lib/summary/summarizerClientElection.d.ts.map +1 -1
- package/lib/summary/summarizerClientElection.js +0 -1
- package/lib/summary/summarizerClientElection.js.map +1 -1
- package/lib/summary/summarizerHeuristics.d.ts +1 -1
- package/lib/summary/summarizerHeuristics.d.ts.map +1 -1
- package/lib/summary/summarizerHeuristics.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.d.ts +2 -2
- package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.js +5 -5
- package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts +1 -18
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.js +1 -25
- package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +2 -2
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js +1 -2
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/lib/summary/summarizerTypes.d.ts +109 -22
- package/lib/summary/summarizerTypes.d.ts.map +1 -1
- package/lib/summary/summarizerTypes.js.map +1 -1
- package/lib/summary/summaryFormat.d.ts +3 -9
- package/lib/summary/summaryFormat.d.ts.map +1 -1
- package/lib/summary/summaryFormat.js.map +1 -1
- package/lib/summary/summaryGenerator.d.ts.map +1 -1
- package/lib/summary/summaryGenerator.js +3 -9
- package/lib/summary/summaryGenerator.js.map +1 -1
- package/lib/summary/summaryHelpers.d.ts +19 -0
- package/lib/summary/summaryHelpers.d.ts.map +1 -0
- package/lib/summary/summaryHelpers.js +84 -0
- package/lib/summary/summaryHelpers.js.map +1 -0
- package/lib/summary/summaryManager.d.ts.map +1 -1
- package/lib/summary/summaryManager.js +0 -2
- package/lib/summary/summaryManager.js.map +1 -1
- package/lib/tsdoc-metadata.json +1 -1
- package/package.json +20 -23
- package/src/blobManager/blobManager.ts +70 -62
- package/src/blobManager/blobManagerSnapSum.ts +7 -9
- package/src/channelCollection.ts +4 -32
- package/src/connectionTelemetry.ts +0 -51
- package/src/containerRuntime.ts +259 -622
- package/src/dataStoreContext.ts +24 -33
- package/src/gc/{garbageCollection.md → README.md} +17 -19
- package/src/gc/garbageCollection.ts +9 -26
- package/src/gc/gcConfigs.ts +3 -6
- package/src/gc/gcDefinitions.ts +10 -28
- package/src/gc/gcHelpers.ts +0 -5
- package/src/gc/gcSummaryStateTracker.ts +1 -2
- package/src/gc/gcTelemetry.ts +8 -15
- package/src/index.ts +6 -6
- package/src/messageTypes.ts +0 -2
- package/src/opLifecycle/batchManager.ts +20 -6
- package/src/opLifecycle/outbox.ts +64 -24
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +18 -2
- package/src/runCounter.ts +25 -0
- package/src/runtimeLayerCompatState.ts +143 -0
- package/src/signalTelemetryProcessing.ts +233 -0
- package/src/summary/documentSchema.ts +7 -38
- package/src/summary/index.ts +12 -0
- package/src/summary/orderedClientElection.ts +1 -3
- package/src/summary/runWhileConnectedCoordinator.ts +3 -8
- package/src/summary/runningSummarizer.ts +12 -20
- package/src/summary/summarizer.ts +6 -18
- package/src/summary/summarizerClientElection.ts +0 -2
- package/src/summary/summarizerHeuristics.ts +1 -2
- package/src/summary/summarizerNode/summarizerNode.ts +6 -5
- package/src/summary/summarizerNode/summarizerNodeUtils.ts +1 -27
- package/src/summary/summarizerNode/summarizerNodeWithGc.ts +2 -3
- package/src/summary/summarizerTypes.ts +119 -23
- package/src/summary/summaryFormat.ts +4 -13
- package/src/summary/summaryGenerator.ts +1 -8
- package/src/summary/summaryHelpers.ts +118 -0
- package/src/summary/summaryManager.ts +0 -2
- package/tsconfig.json +1 -0
- package/dist/layerCompatState.d.ts +0 -19
- package/dist/layerCompatState.d.ts.map +0 -1
- package/dist/layerCompatState.js +0 -64
- package/dist/layerCompatState.js.map +0 -1
- package/lib/layerCompatState.d.ts +0 -19
- package/lib/layerCompatState.d.ts.map +0 -1
- package/lib/layerCompatState.js +0 -60
- package/lib/layerCompatState.js.map +0 -1
- package/prettier.config.cjs +0 -8
- package/src/layerCompatState.ts +0 -75
|
@@ -32,36 +32,12 @@ export enum ContainerMessageType {
|
|
|
32
32
|
Rejoin = "rejoin"
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
// @alpha @deprecated
|
|
36
|
-
export const currentDocumentVersionSchema = 1;
|
|
37
|
-
|
|
38
35
|
// @alpha (undocumented)
|
|
39
36
|
export const DefaultSummaryConfiguration: ISummaryConfiguration;
|
|
40
37
|
|
|
41
|
-
// @alpha @deprecated
|
|
42
|
-
export const DeletedResponseHeaderKey = "wasDeleted";
|
|
43
|
-
|
|
44
38
|
// @alpha (undocumented)
|
|
45
39
|
export const disabledCompressionConfig: ICompressionRuntimeOptions;
|
|
46
40
|
|
|
47
|
-
// @alpha @deprecated
|
|
48
|
-
export type DocumentSchemaValueType = string | string[] | true | number | undefined;
|
|
49
|
-
|
|
50
|
-
// @alpha @sealed @deprecated
|
|
51
|
-
export class DocumentsSchemaController {
|
|
52
|
-
constructor(existing: boolean, snapshotSequenceNumber: number, documentMetadataSchema: IDocumentSchema | undefined, features: IDocumentSchemaFeatures, onSchemaChange: (schema: IDocumentSchemaCurrent) => void);
|
|
53
|
-
maybeSendSchemaMessage(): IDocumentSchemaChangeMessage | undefined;
|
|
54
|
-
// (undocumented)
|
|
55
|
-
onDisconnect(): void;
|
|
56
|
-
processDocumentSchemaMessages(contents: IDocumentSchemaChangeMessage[], local: boolean, sequenceNumber: number): boolean;
|
|
57
|
-
// @deprecated
|
|
58
|
-
processDocumentSchemaOp(content: IDocumentSchemaChangeMessage, local: boolean, sequenceNumber: number): boolean;
|
|
59
|
-
// (undocumented)
|
|
60
|
-
sessionSchema: IDocumentSchemaCurrent;
|
|
61
|
-
// (undocumented)
|
|
62
|
-
summarizeDocumentSchema(refSeq: number): IDocumentSchemaCurrent | undefined;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
41
|
// @alpha (undocumented)
|
|
66
42
|
export type EnqueueSummarizeResult = (ISummarizeResults & {
|
|
67
43
|
readonly alreadyEnqueued?: undefined;
|
|
@@ -73,28 +49,6 @@ export type EnqueueSummarizeResult = (ISummarizeResults & {
|
|
|
73
49
|
readonly overridden?: undefined;
|
|
74
50
|
};
|
|
75
51
|
|
|
76
|
-
// @alpha @deprecated (undocumented)
|
|
77
|
-
export type GCFeatureMatrix = {
|
|
78
|
-
gcGeneration?: number;
|
|
79
|
-
tombstoneGeneration?: undefined;
|
|
80
|
-
} | {
|
|
81
|
-
tombstoneGeneration: number;
|
|
82
|
-
};
|
|
83
|
-
|
|
84
|
-
// @alpha @deprecated
|
|
85
|
-
export const GCNodeType: {
|
|
86
|
-
readonly DataStore: "DataStore";
|
|
87
|
-
readonly SubDataStore: "SubDataStore";
|
|
88
|
-
readonly Blob: "Blob";
|
|
89
|
-
readonly Other: "Other";
|
|
90
|
-
};
|
|
91
|
-
|
|
92
|
-
// @alpha @deprecated (undocumented)
|
|
93
|
-
export type GCNodeType = (typeof GCNodeType)[keyof typeof GCNodeType];
|
|
94
|
-
|
|
95
|
-
// @alpha @deprecated (undocumented)
|
|
96
|
-
export type GCVersion = number;
|
|
97
|
-
|
|
98
52
|
// @alpha
|
|
99
53
|
export interface IAckedSummary {
|
|
100
54
|
// (undocumented)
|
|
@@ -121,14 +75,6 @@ export interface IBaseSummarizeResult {
|
|
|
121
75
|
readonly stage: "base";
|
|
122
76
|
}
|
|
123
77
|
|
|
124
|
-
// @alpha @deprecated
|
|
125
|
-
export interface IBlobManagerLoadInfo {
|
|
126
|
-
// (undocumented)
|
|
127
|
-
ids?: string[];
|
|
128
|
-
// (undocumented)
|
|
129
|
-
redirectTable?: [string, string][];
|
|
130
|
-
}
|
|
131
|
-
|
|
132
78
|
// @alpha (undocumented)
|
|
133
79
|
export interface IBroadcastSummaryResult {
|
|
134
80
|
// (undocumented)
|
|
@@ -137,18 +83,6 @@ export interface IBroadcastSummaryResult {
|
|
|
137
83
|
readonly summarizeOp: ISummaryOpMessage;
|
|
138
84
|
}
|
|
139
85
|
|
|
140
|
-
// @alpha @deprecated
|
|
141
|
-
export interface ICancellableSummarizerController extends ISummaryCancellationToken {
|
|
142
|
-
// (undocumented)
|
|
143
|
-
stop(reason: SummarizerStopReason): void;
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
// @alpha @deprecated
|
|
147
|
-
export interface ICancellationToken<T> {
|
|
148
|
-
readonly cancelled: boolean;
|
|
149
|
-
readonly waitCancelled: Promise<T>;
|
|
150
|
-
}
|
|
151
|
-
|
|
152
86
|
// @alpha
|
|
153
87
|
export interface IClientSummaryWatcher extends IDisposable {
|
|
154
88
|
// (undocumented)
|
|
@@ -163,32 +97,6 @@ export interface ICompressionRuntimeOptions {
|
|
|
163
97
|
readonly minimumBatchSizeInBytes: number;
|
|
164
98
|
}
|
|
165
99
|
|
|
166
|
-
// @alpha @deprecated (undocumented)
|
|
167
|
-
export interface IConnectableRuntime {
|
|
168
|
-
// (undocumented)
|
|
169
|
-
readonly clientId: string | undefined;
|
|
170
|
-
// (undocumented)
|
|
171
|
-
readonly connected: boolean;
|
|
172
|
-
// (undocumented)
|
|
173
|
-
readonly disposed: boolean;
|
|
174
|
-
// (undocumented)
|
|
175
|
-
once(event: "connected" | "disconnected" | "dispose", listener: () => void): this;
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
// @alpha @deprecated (undocumented)
|
|
179
|
-
export interface IContainerRuntimeMetadata extends ICreateContainerMetadata, IGCMetadata {
|
|
180
|
-
readonly disableIsolatedChannels?: true;
|
|
181
|
-
// (undocumented)
|
|
182
|
-
readonly documentSchema?: IDocumentSchema;
|
|
183
|
-
readonly lastMessage?: ISummaryMetadataMessage;
|
|
184
|
-
// @deprecated (undocumented)
|
|
185
|
-
readonly message?: ISummaryMetadataMessage;
|
|
186
|
-
// (undocumented)
|
|
187
|
-
readonly summaryFormatVersion: 1;
|
|
188
|
-
readonly summaryNumber?: number;
|
|
189
|
-
readonly telemetryDocumentId?: string;
|
|
190
|
-
}
|
|
191
|
-
|
|
192
100
|
// @alpha
|
|
193
101
|
export interface IContainerRuntimeOptions {
|
|
194
102
|
readonly chunkSizeInBytes?: number;
|
|
@@ -205,50 +113,9 @@ export interface IContainerRuntimeOptions {
|
|
|
205
113
|
readonly summaryOptions?: ISummaryRuntimeOptions;
|
|
206
114
|
}
|
|
207
115
|
|
|
208
|
-
// @alpha @deprecated (undocumented)
|
|
209
|
-
export interface ICreateContainerMetadata {
|
|
210
|
-
createContainerRuntimeVersion?: string;
|
|
211
|
-
createContainerTimestamp?: number;
|
|
212
|
-
}
|
|
213
|
-
|
|
214
116
|
// @alpha
|
|
215
117
|
export type IdCompressorMode = "on" | "delayed" | undefined;
|
|
216
118
|
|
|
217
|
-
// @alpha @deprecated
|
|
218
|
-
export interface IDocumentSchema {
|
|
219
|
-
// (undocumented)
|
|
220
|
-
refSeq: number;
|
|
221
|
-
// (undocumented)
|
|
222
|
-
runtime: Record<string, DocumentSchemaValueType>;
|
|
223
|
-
// (undocumented)
|
|
224
|
-
version: number;
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
// @alpha @deprecated
|
|
228
|
-
export type IDocumentSchemaChangeMessage = IDocumentSchema;
|
|
229
|
-
|
|
230
|
-
// @alpha @deprecated
|
|
231
|
-
export type IDocumentSchemaCurrent = {
|
|
232
|
-
version: 1;
|
|
233
|
-
refSeq: number;
|
|
234
|
-
runtime: {
|
|
235
|
-
[P in keyof IDocumentSchemaFeatures]?: IDocumentSchemaFeatures[P] extends boolean ? true : IDocumentSchemaFeatures[P];
|
|
236
|
-
};
|
|
237
|
-
};
|
|
238
|
-
|
|
239
|
-
// @alpha @deprecated
|
|
240
|
-
export interface IDocumentSchemaFeatures {
|
|
241
|
-
// (undocumented)
|
|
242
|
-
compressionLz4: boolean;
|
|
243
|
-
disallowedVersions: string[];
|
|
244
|
-
// (undocumented)
|
|
245
|
-
explicitSchemaControl: boolean;
|
|
246
|
-
// (undocumented)
|
|
247
|
-
idCompressorMode: IdCompressorMode;
|
|
248
|
-
// (undocumented)
|
|
249
|
-
opGroupingEnabled: boolean;
|
|
250
|
-
}
|
|
251
|
-
|
|
252
119
|
// @alpha
|
|
253
120
|
export interface IEnqueueSummarizeOptions extends IOnDemandSummarizeOptions {
|
|
254
121
|
readonly afterSequenceNumber?: number;
|
|
@@ -282,16 +149,6 @@ export interface IFluidDataStoreAttributes2 extends OmitAttributesVersions<IFlui
|
|
|
282
149
|
readonly summaryFormatVersion: 2;
|
|
283
150
|
}
|
|
284
151
|
|
|
285
|
-
// @alpha @deprecated
|
|
286
|
-
export interface IGCMetadata {
|
|
287
|
-
readonly gcFeature?: GCVersion;
|
|
288
|
-
readonly gcFeatureMatrix?: GCFeatureMatrix;
|
|
289
|
-
readonly sessionExpiryTimeoutMs?: number;
|
|
290
|
-
// @deprecated
|
|
291
|
-
readonly sweepEnabled?: boolean;
|
|
292
|
-
readonly tombstoneTimeoutMs?: number;
|
|
293
|
-
}
|
|
294
|
-
|
|
295
152
|
// @alpha (undocumented)
|
|
296
153
|
export interface IGCRuntimeOptions {
|
|
297
154
|
[key: string]: any;
|
|
@@ -301,10 +158,6 @@ export interface IGCRuntimeOptions {
|
|
|
301
158
|
sweepGracePeriodMs?: number;
|
|
302
159
|
}
|
|
303
160
|
|
|
304
|
-
// @alpha @deprecated
|
|
305
|
-
export interface IGCStats extends IMarkPhaseStats, ISweepPhaseStats {
|
|
306
|
-
}
|
|
307
|
-
|
|
308
161
|
// @alpha
|
|
309
162
|
export interface IGeneratedSummaryStats extends ISummaryStats {
|
|
310
163
|
readonly dataStoreCount: number;
|
|
@@ -324,19 +177,6 @@ export interface IGenerateSummaryTreeResult extends Omit<IBaseSummarizeResult, "
|
|
|
324
177
|
readonly summaryTree: ISummaryTree;
|
|
325
178
|
}
|
|
326
179
|
|
|
327
|
-
// @alpha @deprecated
|
|
328
|
-
export interface IMarkPhaseStats {
|
|
329
|
-
attachmentBlobCount: number;
|
|
330
|
-
dataStoreCount: number;
|
|
331
|
-
nodeCount: number;
|
|
332
|
-
unrefAttachmentBlobCount: number;
|
|
333
|
-
unrefDataStoreCount: number;
|
|
334
|
-
unrefNodeCount: number;
|
|
335
|
-
updatedAttachmentBlobCount: number;
|
|
336
|
-
updatedDataStoreCount: number;
|
|
337
|
-
updatedNodeCount: number;
|
|
338
|
-
}
|
|
339
|
-
|
|
340
180
|
// @alpha (undocumented)
|
|
341
181
|
export interface INackSummaryResult {
|
|
342
182
|
// (undocumented)
|
|
@@ -354,27 +194,12 @@ export interface IOnDemandSummarizeOptions extends ISummarizeOptions {
|
|
|
354
194
|
readonly retryOnFailure?: boolean;
|
|
355
195
|
}
|
|
356
196
|
|
|
357
|
-
// @alpha @deprecated
|
|
358
|
-
export interface IRefreshSummaryAckOptions {
|
|
359
|
-
readonly ackHandle: string;
|
|
360
|
-
readonly proposalHandle: string | undefined;
|
|
361
|
-
readonly summaryLogger: ITelemetryLoggerExt;
|
|
362
|
-
readonly summaryRefSeq: number;
|
|
363
|
-
}
|
|
364
|
-
|
|
365
197
|
// @alpha
|
|
366
198
|
export interface IRetriableFailureError extends Error {
|
|
367
199
|
// (undocumented)
|
|
368
200
|
readonly retryAfterSeconds?: number;
|
|
369
201
|
}
|
|
370
202
|
|
|
371
|
-
// @alpha @deprecated
|
|
372
|
-
export interface ISerializedElection {
|
|
373
|
-
readonly electedClientId: string | undefined;
|
|
374
|
-
readonly electedParentId: string | undefined;
|
|
375
|
-
readonly electionSequenceNumber: number;
|
|
376
|
-
}
|
|
377
|
-
|
|
378
203
|
// @alpha
|
|
379
204
|
export interface ISubmitSummaryOpResult extends Omit<IUploadSummaryResult, "stage" | "error"> {
|
|
380
205
|
readonly clientSequenceNumber: number;
|
|
@@ -383,14 +208,6 @@ export interface ISubmitSummaryOpResult extends Omit<IUploadSummaryResult, "stag
|
|
|
383
208
|
readonly submitOpDuration: number;
|
|
384
209
|
}
|
|
385
210
|
|
|
386
|
-
// @alpha @deprecated (undocumented)
|
|
387
|
-
export interface ISubmitSummaryOptions extends ISummarizeOptions {
|
|
388
|
-
readonly cancellationToken: ISummaryCancellationToken;
|
|
389
|
-
readonly finalAttempt?: boolean;
|
|
390
|
-
readonly latestSummaryRefSeqNum: number;
|
|
391
|
-
readonly summaryLogger: ITelemetryLoggerExt;
|
|
392
|
-
}
|
|
393
|
-
|
|
394
211
|
// @alpha
|
|
395
212
|
export interface ISummarizeOptions {
|
|
396
213
|
readonly fullTree?: boolean;
|
|
@@ -416,29 +233,6 @@ export interface ISummarizeResults {
|
|
|
416
233
|
readonly summarySubmitted: Promise<SummarizeResultPart<SubmitSummaryResult, SubmitSummaryFailureData>>;
|
|
417
234
|
}
|
|
418
235
|
|
|
419
|
-
// @alpha @deprecated (undocumented)
|
|
420
|
-
export interface ISummarizerInternalsProvider {
|
|
421
|
-
refreshLatestSummaryAck(options: IRefreshSummaryAckOptions): Promise<void>;
|
|
422
|
-
submitSummary(options: ISubmitSummaryOptions): Promise<SubmitSummaryResult>;
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
// @alpha @deprecated (undocumented)
|
|
426
|
-
export interface ISummarizerRuntime extends IConnectableRuntime {
|
|
427
|
-
// (undocumented)
|
|
428
|
-
readonly baseLogger: ITelemetryBaseLogger;
|
|
429
|
-
// (undocumented)
|
|
430
|
-
closeFn(): void;
|
|
431
|
-
// (undocumented)
|
|
432
|
-
readonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>;
|
|
433
|
-
// (undocumented)
|
|
434
|
-
disposeFn(): void;
|
|
435
|
-
// (undocumented)
|
|
436
|
-
off(event: "op", listener: (op: ISequencedDocumentMessage, runtimeMessage?: boolean) => void): this;
|
|
437
|
-
// (undocumented)
|
|
438
|
-
on(event: "op", listener: (op: ISequencedDocumentMessage, runtimeMessage?: boolean) => void): this;
|
|
439
|
-
readonly summarizerClientId: string | undefined;
|
|
440
|
-
}
|
|
441
|
-
|
|
442
236
|
// @alpha
|
|
443
237
|
export interface ISummary {
|
|
444
238
|
// (undocumented)
|
|
@@ -466,9 +260,6 @@ export interface ISummaryBaseConfiguration {
|
|
|
466
260
|
maxOpsSinceLastSummary: number;
|
|
467
261
|
}
|
|
468
262
|
|
|
469
|
-
// @alpha @deprecated
|
|
470
|
-
export type ISummaryCancellationToken = ICancellationToken<SummarizerStopReason>;
|
|
471
|
-
|
|
472
263
|
// @alpha (undocumented)
|
|
473
264
|
export interface ISummaryCollectionOpEvents extends IEvent {
|
|
474
265
|
// (undocumented)
|
|
@@ -504,9 +295,6 @@ export interface ISummaryConfigurationHeuristics extends ISummaryBaseConfigurati
|
|
|
504
295
|
state: "enabled";
|
|
505
296
|
}
|
|
506
297
|
|
|
507
|
-
// @alpha @deprecated
|
|
508
|
-
export type ISummaryMetadataMessage = Pick<ISequencedDocumentMessage, "clientId" | "clientSequenceNumber" | "minimumSequenceNumber" | "referenceSequenceNumber" | "sequenceNumber" | "timestamp" | "type">;
|
|
509
|
-
|
|
510
298
|
// @alpha
|
|
511
299
|
export interface ISummaryNackMessage extends ISequencedDocumentMessage {
|
|
512
300
|
// (undocumented)
|
|
@@ -530,16 +318,6 @@ export interface ISummaryRuntimeOptions {
|
|
|
530
318
|
summaryConfigOverrides?: ISummaryConfiguration;
|
|
531
319
|
}
|
|
532
320
|
|
|
533
|
-
// @alpha @deprecated
|
|
534
|
-
export interface ISweepPhaseStats {
|
|
535
|
-
deletedAttachmentBlobCount: number;
|
|
536
|
-
deletedDataStoreCount: number;
|
|
537
|
-
deletedNodeCount: number;
|
|
538
|
-
lifetimeAttachmentBlobCount: number;
|
|
539
|
-
lifetimeDataStoreCount: number;
|
|
540
|
-
lifetimeNodeCount: number;
|
|
541
|
-
}
|
|
542
|
-
|
|
543
321
|
// @alpha
|
|
544
322
|
export interface IUploadSummaryResult extends Omit<IGenerateSummaryTreeResult, "stage"> {
|
|
545
323
|
readonly handle: string;
|
|
@@ -584,30 +362,6 @@ export interface SubmitSummaryFailureData {
|
|
|
584
362
|
// @alpha
|
|
585
363
|
export type SubmitSummaryResult = IBaseSummarizeResult | IGenerateSummaryTreeResult | IUploadSummaryResult | ISubmitSummaryOpResult;
|
|
586
364
|
|
|
587
|
-
// @alpha @deprecated
|
|
588
|
-
export class Summarizer extends TypedEventEmitter<ISummarizerEvents> implements ISummarizer {
|
|
589
|
-
constructor(
|
|
590
|
-
runtime: ISummarizerRuntime, configurationGetter: () => ISummaryConfiguration,
|
|
591
|
-
internalsProvider: ISummarizerInternalsProvider, handleContext: IFluidHandleContext, summaryCollection: SummaryCollection, runCoordinatorCreateFn: (runtime: IConnectableRuntime) => Promise<ICancellableSummarizerController>);
|
|
592
|
-
// (undocumented)
|
|
593
|
-
close(): void;
|
|
594
|
-
dispose(): void;
|
|
595
|
-
// (undocumented)
|
|
596
|
-
enqueueSummarize(options: IEnqueueSummarizeOptions): EnqueueSummarizeResult;
|
|
597
|
-
// (undocumented)
|
|
598
|
-
get ISummarizer(): this;
|
|
599
|
-
// (undocumented)
|
|
600
|
-
recordSummaryAttempt?(summaryRefSeqNum?: number): void;
|
|
601
|
-
// (undocumented)
|
|
602
|
-
run(onBehalfOf: string): Promise<SummarizerStopReason>;
|
|
603
|
-
stop(reason: SummarizerStopReason): void;
|
|
604
|
-
static stopReasonCanRunLastSummary(stopReason: SummarizerStopReason): boolean;
|
|
605
|
-
// (undocumented)
|
|
606
|
-
summarizeOnDemand(options: IOnDemandSummarizeOptions): ISummarizeResults;
|
|
607
|
-
// (undocumented)
|
|
608
|
-
readonly summaryCollection: SummaryCollection;
|
|
609
|
-
}
|
|
610
|
-
|
|
611
365
|
// @alpha (undocumented)
|
|
612
366
|
export type SummarizeResultPart<TSuccess, TFailure = undefined> = {
|
|
613
367
|
success: true;
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import { TypedEventEmitter } from "@fluid-internal/client-utils";
|
|
6
6
|
import { IContainerRuntime, IContainerRuntimeEvents } from "@fluidframework/container-runtime-definitions/internal";
|
|
7
|
-
import { IFluidHandleContext,
|
|
7
|
+
import type { IEvent, IEventProvider, IFluidHandleContext, IFluidHandleInternal } from "@fluidframework/core-interfaces/internal";
|
|
8
8
|
import { IDocumentStorageService, ICreateBlobResponse } from "@fluidframework/driver-definitions/internal";
|
|
9
9
|
import { IGarbageCollectionData, ISummaryTreeWithStats, ITelemetryContext, type ISequencedMessageEnvelope } from "@fluidframework/runtime-definitions/internal";
|
|
10
10
|
import { FluidHandleBase } from "@fluidframework/runtime-utils/internal";
|
|
@@ -30,7 +30,7 @@ export declare class BlobHandle extends FluidHandleBase<ArrayBufferLike> {
|
|
|
30
30
|
}
|
|
31
31
|
export type IBlobManagerRuntime = Pick<IContainerRuntime, "attachState" | "connected" | "baseLogger" | "clientDetails" | "disposed"> & TypedEventEmitter<IContainerRuntimeEvents>;
|
|
32
32
|
export interface IPendingBlobs {
|
|
33
|
-
[
|
|
33
|
+
[localId: string]: {
|
|
34
34
|
blob: string;
|
|
35
35
|
storageId?: string;
|
|
36
36
|
uploadTime?: number;
|
|
@@ -38,14 +38,17 @@ export interface IPendingBlobs {
|
|
|
38
38
|
acked?: boolean;
|
|
39
39
|
};
|
|
40
40
|
}
|
|
41
|
-
export interface IBlobManagerEvents {
|
|
41
|
+
export interface IBlobManagerEvents extends IEvent {
|
|
42
42
|
(event: "noPendingBlobs", listener: () => void): any;
|
|
43
43
|
}
|
|
44
44
|
export declare const blobManagerBasePath: "_blobs";
|
|
45
|
-
export declare class BlobManager
|
|
45
|
+
export declare class BlobManager {
|
|
46
46
|
private readonly mc;
|
|
47
|
+
private readonly publicEvents;
|
|
48
|
+
get events(): IEventProvider<IBlobManagerEvents>;
|
|
49
|
+
private readonly internalEvents;
|
|
47
50
|
/**
|
|
48
|
-
* Map of local IDs to storage IDs. Contains identity entries (
|
|
51
|
+
* Map of local IDs to storage IDs. Contains identity entries (storageId → storageId) for storage IDs. All requested IDs should
|
|
49
52
|
* be a key in this map. Blobs created while the container is detached are stored in IDetachedBlobStorage which
|
|
50
53
|
* gives local IDs; the storage IDs are filled in at attach time.
|
|
51
54
|
* Note: It contains mappings from all clients, i.e., from remote clients as well. local ID comes from the client
|
|
@@ -65,7 +68,7 @@ export declare class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
65
68
|
private readonly sendBlobAttachOp;
|
|
66
69
|
private stopAttaching;
|
|
67
70
|
private readonly routeContext;
|
|
68
|
-
private readonly
|
|
71
|
+
private readonly storage;
|
|
69
72
|
private readonly blobRequested;
|
|
70
73
|
private readonly isBlobDeleted;
|
|
71
74
|
private readonly runtime;
|
|
@@ -74,8 +77,8 @@ export declare class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
74
77
|
readonly stashedBlobsUploadP: Promise<(void | ICreateBlobResponse)[]>;
|
|
75
78
|
constructor(props: {
|
|
76
79
|
readonly routeContext: IFluidHandleContext;
|
|
77
|
-
|
|
78
|
-
readonly
|
|
80
|
+
blobManagerLoadInfo: IBlobManagerLoadInfo;
|
|
81
|
+
readonly storage: IDocumentStorageService;
|
|
79
82
|
/**
|
|
80
83
|
* Submit a BlobAttach op. When a blob is uploaded, there is a short grace period before which the blob is
|
|
81
84
|
* deleted. The BlobAttach op notifies the server that blob is in use. The server will then not delete the
|
|
@@ -170,5 +173,4 @@ export declare class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
170
173
|
* Returns whether a given path is for attachment blobs that are in the format - "/blobManagerBasePath/...".
|
|
171
174
|
*/
|
|
172
175
|
export declare const isBlobPath: (path: string) => path is `/_blobs/${string}`;
|
|
173
|
-
export declare const areBlobPathParts: (pathParts: string[]) => pathParts is ["", "_blobs", string];
|
|
174
176
|
//# sourceMappingURL=blobManager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blobManager.d.ts","sourceRoot":"","sources":["../../src/blobManager/blobManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,iBAAiB,EAGjB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EACN,iBAAiB,EACjB,uBAAuB,EACvB,MAAM,wDAAwD,CAAC;AAChE,OAAO,EACN,mBAAmB,EACnB,
|
|
1
|
+
{"version":3,"file":"blobManager.d.ts","sourceRoot":"","sources":["../../src/blobManager/blobManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.
|
|
7
|
+
exports.isBlobPath = exports.BlobManager = exports.blobManagerBasePath = exports.BlobHandle = void 0;
|
|
8
8
|
const client_utils_1 = require("@fluid-internal/client-utils");
|
|
9
9
|
const container_definitions_1 = require("@fluidframework/container-definitions");
|
|
10
10
|
const internal_1 = require("@fluidframework/core-utils/internal");
|
|
@@ -51,9 +51,13 @@ const stashedPendingBlobOverrides = {
|
|
|
51
51
|
uploadTime: undefined,
|
|
52
52
|
};
|
|
53
53
|
exports.blobManagerBasePath = "_blobs";
|
|
54
|
-
class BlobManager
|
|
54
|
+
class BlobManager {
|
|
55
|
+
get events() {
|
|
56
|
+
return this.publicEvents;
|
|
57
|
+
}
|
|
55
58
|
constructor(props) {
|
|
56
|
-
|
|
59
|
+
this.publicEvents = new client_utils_1.TypedEventEmitter();
|
|
60
|
+
this.internalEvents = new client_utils_1.TypedEventEmitter();
|
|
57
61
|
/**
|
|
58
62
|
* Blobs which we have not yet seen a BlobAttach op round-trip and not yet attached to a DDS.
|
|
59
63
|
*/
|
|
@@ -66,9 +70,9 @@ class BlobManager extends client_utils_1.TypedEventEmitter {
|
|
|
66
70
|
this.opsInFlight = new Map();
|
|
67
71
|
this.stopAttaching = false;
|
|
68
72
|
this.pendingStashedBlobs = new Map();
|
|
69
|
-
const { routeContext,
|
|
73
|
+
const { routeContext, blobManagerLoadInfo, storage, sendBlobAttachOp, blobRequested, isBlobDeleted, runtime, stashedBlobs, localBlobIdGenerator, } = props;
|
|
70
74
|
this.routeContext = routeContext;
|
|
71
|
-
this.
|
|
75
|
+
this.storage = storage;
|
|
72
76
|
this.blobRequested = blobRequested;
|
|
73
77
|
this.isBlobDeleted = isBlobDeleted;
|
|
74
78
|
this.runtime = runtime;
|
|
@@ -77,7 +81,7 @@ class BlobManager extends client_utils_1.TypedEventEmitter {
|
|
|
77
81
|
logger: this.runtime.baseLogger,
|
|
78
82
|
namespace: "BlobManager",
|
|
79
83
|
});
|
|
80
|
-
this.redirectTable = (0, blobManagerSnapSum_js_1.toRedirectTable)(
|
|
84
|
+
this.redirectTable = (0, blobManagerSnapSum_js_1.toRedirectTable)(blobManagerLoadInfo, this.mc.logger, this.runtime.attachState);
|
|
81
85
|
// Begin uploading stashed blobs from previous container instance
|
|
82
86
|
for (const [localId, entry] of Object.entries(stashedBlobs ?? {})) {
|
|
83
87
|
const { acked, storageId, minTTLInSeconds, uploadTime } = entry;
|
|
@@ -108,7 +112,7 @@ class BlobManager extends client_utils_1.TypedEventEmitter {
|
|
|
108
112
|
uploadP: this.pendingStashedBlobs.get(localId),
|
|
109
113
|
});
|
|
110
114
|
}
|
|
111
|
-
this.stashedBlobsUploadP =
|
|
115
|
+
this.stashedBlobsUploadP = internal_4.PerformanceEvent.timedExecAsync(this.mc.logger, { eventName: "BlobUploadProcessStashedChanges", count: this.pendingStashedBlobs.size }, async () => Promise.all(this.pendingStashedBlobs.values()), { start: true, end: true }).finally(() => {
|
|
112
116
|
this.pendingStashedBlobs.clear();
|
|
113
117
|
});
|
|
114
118
|
this.sendBlobAttachOp = (localId, blobId) => {
|
|
@@ -137,11 +141,11 @@ class BlobManager extends client_utils_1.TypedEventEmitter {
|
|
|
137
141
|
}
|
|
138
142
|
}
|
|
139
143
|
pendingEntry.opsent = true;
|
|
140
|
-
|
|
144
|
+
sendBlobAttachOp(localId, blobId);
|
|
141
145
|
};
|
|
142
146
|
}
|
|
143
147
|
get allBlobsAttached() {
|
|
144
|
-
for (const
|
|
148
|
+
for (const entry of this.pendingBlobs.values()) {
|
|
145
149
|
if (entry.attached === false) {
|
|
146
150
|
return false;
|
|
147
151
|
}
|
|
@@ -186,9 +190,7 @@ class BlobManager extends client_utils_1.TypedEventEmitter {
|
|
|
186
190
|
storageId = attachedStorageId;
|
|
187
191
|
}
|
|
188
192
|
return internal_4.PerformanceEvent.timedExecAsync(this.mc.logger, { eventName: "AttachmentReadBlob", id: storageId }, async (event) => {
|
|
189
|
-
return this.
|
|
190
|
-
.readBlob(storageId)
|
|
191
|
-
.catch((error) => {
|
|
193
|
+
return this.storage.readBlob(storageId).catch((error) => {
|
|
192
194
|
if (this.runtime.disposed) {
|
|
193
195
|
// If the runtime is disposed, this is not an error we care to track, it's expected behavior.
|
|
194
196
|
event.cancel({ category: "generic" });
|
|
@@ -197,24 +199,24 @@ class BlobManager extends client_utils_1.TypedEventEmitter {
|
|
|
197
199
|
});
|
|
198
200
|
}, { end: true, cancel: "error" });
|
|
199
201
|
}
|
|
200
|
-
getBlobHandle(
|
|
201
|
-
(0, internal_1.assert)(this.redirectTable.has(
|
|
202
|
-
const pending = this.pendingBlobs.get(
|
|
202
|
+
getBlobHandle(localId) {
|
|
203
|
+
(0, internal_1.assert)(this.redirectTable.has(localId) || this.pendingBlobs.has(localId), 0x384 /* requesting handle for unknown blob */);
|
|
204
|
+
const pending = this.pendingBlobs.get(localId);
|
|
203
205
|
// Create a callback function for once the blob has been attached
|
|
204
206
|
const callback = pending
|
|
205
207
|
? () => {
|
|
206
208
|
pending.attached = true;
|
|
207
209
|
// Notify listeners (e.g. serialization process) that blob has been attached
|
|
208
|
-
this.emit("blobAttached", pending);
|
|
209
|
-
this.deletePendingBlobMaybe(
|
|
210
|
+
this.internalEvents.emit("blobAttached", pending);
|
|
211
|
+
this.deletePendingBlobMaybe(localId);
|
|
210
212
|
}
|
|
211
213
|
: undefined;
|
|
212
|
-
return new BlobHandle(getGCNodePathFromBlobId(
|
|
214
|
+
return new BlobHandle(getGCNodePathFromBlobId(localId), this.routeContext, async () => this.getBlob(localId), callback);
|
|
213
215
|
}
|
|
214
216
|
async createBlobDetached(blob) {
|
|
215
217
|
// Blobs created while the container is detached are stored in IDetachedBlobStorage.
|
|
216
218
|
// The 'IDocumentStorageService.createBlob()' call below will respond with a localId.
|
|
217
|
-
const response = await this.
|
|
219
|
+
const response = await this.storage.createBlob(blob);
|
|
218
220
|
this.setRedirection(response.id, undefined);
|
|
219
221
|
return this.getBlobHandle(response.id);
|
|
220
222
|
}
|
|
@@ -257,7 +259,7 @@ class BlobManager extends client_utils_1.TypedEventEmitter {
|
|
|
257
259
|
async uploadBlob(localId, blob) {
|
|
258
260
|
return (0, internal_2.runWithRetry)(async () => {
|
|
259
261
|
try {
|
|
260
|
-
return await this.
|
|
262
|
+
return await this.storage.createBlob(blob);
|
|
261
263
|
}
|
|
262
264
|
catch (error) {
|
|
263
265
|
const entry = this.pendingBlobs.get(localId);
|
|
@@ -291,17 +293,17 @@ class BlobManager extends client_utils_1.TypedEventEmitter {
|
|
|
291
293
|
setRedirection(fromId, toId) {
|
|
292
294
|
this.redirectTable.set(fromId, toId);
|
|
293
295
|
}
|
|
294
|
-
deletePendingBlobMaybe(
|
|
295
|
-
if (this.pendingBlobs.has(
|
|
296
|
-
const entry = this.pendingBlobs.get(
|
|
296
|
+
deletePendingBlobMaybe(localId) {
|
|
297
|
+
if (this.pendingBlobs.has(localId)) {
|
|
298
|
+
const entry = this.pendingBlobs.get(localId);
|
|
297
299
|
if (entry?.attached && entry?.acked) {
|
|
298
|
-
this.deletePendingBlob(
|
|
300
|
+
this.deletePendingBlob(localId);
|
|
299
301
|
}
|
|
300
302
|
}
|
|
301
303
|
}
|
|
302
304
|
deletePendingBlob(id) {
|
|
303
305
|
if (this.pendingBlobs.delete(id) && !this.hasPendingBlobs) {
|
|
304
|
-
this.emit("noPendingBlobs");
|
|
306
|
+
this.publicEvents.emit("noPendingBlobs");
|
|
305
307
|
}
|
|
306
308
|
}
|
|
307
309
|
onUploadResolve(localId, response) {
|
|
@@ -556,7 +558,7 @@ class BlobManager extends client_utils_1.TypedEventEmitter {
|
|
|
556
558
|
// This while is used to stash blobs created while attaching and getting blobs
|
|
557
559
|
while (localBlobs.size < this.pendingBlobs.size) {
|
|
558
560
|
const attachBlobsP = [];
|
|
559
|
-
for (const [
|
|
561
|
+
for (const [localId, entry] of this.pendingBlobs) {
|
|
560
562
|
if (!localBlobs.has(entry)) {
|
|
561
563
|
localBlobs.add(entry);
|
|
562
564
|
// In order to follow natural blob creation flow we need to:
|
|
@@ -564,12 +566,12 @@ class BlobManager extends client_utils_1.TypedEventEmitter {
|
|
|
564
566
|
// 2 resolve the blob handle
|
|
565
567
|
// 3 wait for op referencing the blob
|
|
566
568
|
if (!entry.opsent) {
|
|
567
|
-
this.sendBlobAttachOp(
|
|
569
|
+
this.sendBlobAttachOp(localId, entry.storageId);
|
|
568
570
|
}
|
|
569
571
|
// Resolving the blob handle to let hosts continue with their operations (it will resolve
|
|
570
572
|
// original createBlob call) and let them attach the blob. This is a lie we told since the upload
|
|
571
573
|
// hasn't finished yet, but it's fine since we will retry on rehydration.
|
|
572
|
-
entry.handleP.resolve(this.getBlobHandle(
|
|
574
|
+
entry.handleP.resolve(this.getBlobHandle(localId));
|
|
573
575
|
// Array of promises that will resolve when blobs get attached.
|
|
574
576
|
attachBlobsP.push(new Promise((resolve, reject) => {
|
|
575
577
|
stopBlobAttachingSignal?.addEventListener("abort", () => {
|
|
@@ -578,7 +580,7 @@ class BlobManager extends client_utils_1.TypedEventEmitter {
|
|
|
578
580
|
}, { once: true });
|
|
579
581
|
const onBlobAttached = (attachedEntry) => {
|
|
580
582
|
if (attachedEntry === entry) {
|
|
581
|
-
this.off("blobAttached", onBlobAttached);
|
|
583
|
+
this.internalEvents.off("blobAttached", onBlobAttached);
|
|
582
584
|
resolve();
|
|
583
585
|
}
|
|
584
586
|
};
|
|
@@ -586,27 +588,25 @@ class BlobManager extends client_utils_1.TypedEventEmitter {
|
|
|
586
588
|
resolve();
|
|
587
589
|
}
|
|
588
590
|
else {
|
|
589
|
-
this.on("blobAttached", onBlobAttached);
|
|
591
|
+
this.internalEvents.on("blobAttached", onBlobAttached);
|
|
590
592
|
}
|
|
591
593
|
}));
|
|
592
594
|
}
|
|
593
595
|
}
|
|
594
596
|
// Wait for all blobs to be attached. This is important, otherwise serialized container
|
|
595
597
|
// could send the blobAttach op without any op that references the blob, making it useless.
|
|
596
|
-
await Promise.allSettled(attachBlobsP)
|
|
597
|
-
return undefined;
|
|
598
|
-
});
|
|
598
|
+
await Promise.allSettled(attachBlobsP);
|
|
599
599
|
}
|
|
600
|
-
for (const [
|
|
600
|
+
for (const [localId, entry] of this.pendingBlobs) {
|
|
601
601
|
if (stopBlobAttachingSignal?.aborted && !entry.attached) {
|
|
602
602
|
this.mc.logger.sendTelemetryEvent({
|
|
603
603
|
eventName: "UnableToStashBlob",
|
|
604
|
-
id,
|
|
604
|
+
id: localId,
|
|
605
605
|
});
|
|
606
606
|
continue;
|
|
607
607
|
}
|
|
608
608
|
(0, internal_1.assert)(entry.attached === true, 0x790 /* stashed blob should be attached */);
|
|
609
|
-
blobs[
|
|
609
|
+
blobs[localId] = {
|
|
610
610
|
blob: (0, client_utils_1.bufferToString)(entry.blob, "base64"),
|
|
611
611
|
storageId: entry.storageId,
|
|
612
612
|
acked: entry.acked,
|
|
@@ -630,14 +630,13 @@ const getGCNodePathFromBlobId = (blobId) => `/${exports.blobManagerBasePath}/${b
|
|
|
630
630
|
*/
|
|
631
631
|
const getBlobIdFromGCNodePath = (nodePath) => {
|
|
632
632
|
const pathParts = nodePath.split("/");
|
|
633
|
-
(0, internal_1.assert)(
|
|
633
|
+
(0, internal_1.assert)(areBlobPathParts(pathParts), 0x5bd /* Invalid blob node path */);
|
|
634
634
|
return pathParts[2];
|
|
635
635
|
};
|
|
636
636
|
/**
|
|
637
637
|
* Returns whether a given path is for attachment blobs that are in the format - "/blobManagerBasePath/...".
|
|
638
638
|
*/
|
|
639
|
-
const isBlobPath = (path) =>
|
|
639
|
+
const isBlobPath = (path) => areBlobPathParts(path.split("/"));
|
|
640
640
|
exports.isBlobPath = isBlobPath;
|
|
641
641
|
const areBlobPathParts = (pathParts) => pathParts.length === 3 && pathParts[1] === exports.blobManagerBasePath;
|
|
642
|
-
exports.areBlobPathParts = areBlobPathParts;
|
|
643
642
|
//# sourceMappingURL=blobManager.js.map
|