@fluidframework/container-runtime 2.0.0-dev-rc.5.0.0.268409 → 2.0.0-dev-rc.5.0.0.270401
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/api-report/container-runtime.alpha.api.md +3 -8
- package/api-report/container-runtime.beta.api.md +2 -2
- package/api-report/container-runtime.public.api.md +2 -2
- package/container-runtime.test-files.tar +0 -0
- package/dist/batchTracker.js +5 -1
- package/dist/batchTracker.js.map +1 -1
- package/dist/blobManager.d.ts +1 -18
- package/dist/blobManager.d.ts.map +1 -1
- package/dist/blobManager.js +39 -48
- package/dist/blobManager.js.map +1 -1
- package/dist/channelCollection.d.ts +2 -11
- package/dist/channelCollection.d.ts.map +1 -1
- package/dist/channelCollection.js +33 -48
- package/dist/channelCollection.js.map +1 -1
- package/dist/connectionTelemetry.d.ts +1 -2
- package/dist/connectionTelemetry.d.ts.map +1 -1
- package/dist/connectionTelemetry.js +32 -14
- package/dist/connectionTelemetry.js.map +1 -1
- package/dist/containerHandleContext.js +4 -0
- package/dist/containerHandleContext.js.map +1 -1
- package/dist/containerRuntime.d.ts +7 -18
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +145 -43
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStore.js +9 -1
- package/dist/dataStore.js.map +1 -1
- package/dist/dataStoreContext.d.ts +2 -16
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +142 -120
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStoreContexts.js +29 -28
- package/dist/dataStoreContexts.js.map +1 -1
- package/dist/dataStoreRegistry.js +1 -0
- package/dist/dataStoreRegistry.js.map +1 -1
- package/dist/deltaManagerProxies.d.ts +4 -4
- package/dist/deltaManagerProxies.d.ts.map +1 -1
- package/dist/deltaManagerProxies.js +33 -28
- package/dist/deltaManagerProxies.js.map +1 -1
- package/dist/deltaScheduler.d.ts +1 -2
- package/dist/deltaScheduler.d.ts.map +1 -1
- package/dist/deltaScheduler.js +13 -9
- package/dist/deltaScheduler.js.map +1 -1
- package/dist/error.js +2 -1
- package/dist/error.js.map +1 -1
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +37 -17
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +0 -4
- 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/gcSummaryStateTracker.js +19 -14
- package/dist/gc/gcSummaryStateTracker.js.map +1 -1
- package/dist/gc/gcTelemetry.js +12 -5
- package/dist/gc/gcTelemetry.js.map +1 -1
- package/dist/gc/gcUnreferencedStateTracker.js +12 -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 +1 -2
- package/dist/gc/index.js.map +1 -1
- package/dist/messageTypes.d.ts +1 -1
- package/dist/messageTypes.d.ts.map +1 -1
- package/dist/messageTypes.js.map +1 -1
- package/dist/opLifecycle/batchManager.js +5 -3
- package/dist/opLifecycle/batchManager.js.map +1 -1
- package/dist/opLifecycle/opCompressor.js +1 -0
- package/dist/opLifecycle/opCompressor.js.map +1 -1
- package/dist/opLifecycle/opDecompressor.d.ts +1 -1
- package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opDecompressor.js +6 -4
- package/dist/opLifecycle/opDecompressor.js.map +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/dist/opLifecycle/opGroupingManager.js +3 -1
- package/dist/opLifecycle/opGroupingManager.js.map +1 -1
- package/dist/opLifecycle/opSplitter.d.ts +1 -1
- package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
- package/dist/opLifecycle/opSplitter.js +6 -0
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.js +15 -10
- package/dist/opLifecycle/outbox.js.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.d.ts +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.js +3 -0
- package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/dist/opProperties.d.ts +1 -1
- package/dist/opProperties.d.ts.map +1 -1
- package/dist/opProperties.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.map +1 -1
- package/dist/pendingStateManager.js +34 -18
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/scheduleManager.d.ts +1 -2
- package/dist/scheduleManager.d.ts.map +1 -1
- package/dist/scheduleManager.js +15 -4
- package/dist/scheduleManager.js.map +1 -1
- package/dist/storageServiceWithAttachBlobs.js +1 -0
- package/dist/storageServiceWithAttachBlobs.js.map +1 -1
- package/dist/summary/documentSchema.js +17 -1
- package/dist/summary/documentSchema.js.map +1 -1
- package/dist/summary/orderedClientElection.js +19 -11
- package/dist/summary/orderedClientElection.js.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.js +4 -2
- package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/dist/summary/runningSummarizer.d.ts +1 -1
- package/dist/summary/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/runningSummarizer.js +56 -38
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summarizer.js +17 -8
- package/dist/summary/summarizer.js.map +1 -1
- package/dist/summary/summarizerClientElection.js +18 -7
- package/dist/summary/summarizerClientElection.js.map +1 -1
- package/dist/summary/summarizerHeuristics.js +30 -25
- 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 +12 -3
- package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.js +2 -0
- package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js +20 -6
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/dist/summary/summarizerTypes.d.ts +2 -2
- package/dist/summary/summarizerTypes.d.ts.map +1 -1
- package/dist/summary/summarizerTypes.js.map +1 -1
- package/dist/summary/summaryCollection.d.ts +1 -2
- package/dist/summary/summaryCollection.d.ts.map +1 -1
- package/dist/summary/summaryCollection.js +23 -11
- package/dist/summary/summaryCollection.js.map +1 -1
- package/dist/summary/summaryFormat.d.ts +1 -2
- package/dist/summary/summaryFormat.d.ts.map +1 -1
- package/dist/summary/summaryFormat.js.map +1 -1
- package/dist/summary/summaryGenerator.js +12 -5
- package/dist/summary/summaryGenerator.js.map +1 -1
- package/dist/summary/summaryManager.js +58 -48
- package/dist/summary/summaryManager.js.map +1 -1
- package/dist/throttler.js +4 -1
- package/dist/throttler.js.map +1 -1
- package/lib/batchTracker.js +5 -1
- package/lib/batchTracker.js.map +1 -1
- package/lib/blobManager.d.ts +1 -18
- package/lib/blobManager.d.ts.map +1 -1
- package/lib/blobManager.js +39 -48
- package/lib/blobManager.js.map +1 -1
- package/lib/channelCollection.d.ts +2 -11
- package/lib/channelCollection.d.ts.map +1 -1
- package/lib/channelCollection.js +34 -49
- package/lib/channelCollection.js.map +1 -1
- package/lib/connectionTelemetry.d.ts +1 -2
- package/lib/connectionTelemetry.d.ts.map +1 -1
- package/lib/connectionTelemetry.js +33 -15
- package/lib/connectionTelemetry.js.map +1 -1
- package/lib/containerHandleContext.js +4 -0
- package/lib/containerHandleContext.js.map +1 -1
- package/lib/containerRuntime.d.ts +7 -18
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +145 -43
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStore.js +9 -1
- package/lib/dataStore.js.map +1 -1
- package/lib/dataStoreContext.d.ts +2 -16
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +144 -122
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/dataStoreContexts.js +29 -28
- package/lib/dataStoreContexts.js.map +1 -1
- package/lib/dataStoreRegistry.js +1 -0
- package/lib/dataStoreRegistry.js.map +1 -1
- package/lib/deltaManagerProxies.d.ts +4 -4
- package/lib/deltaManagerProxies.d.ts.map +1 -1
- package/lib/deltaManagerProxies.js +33 -28
- package/lib/deltaManagerProxies.js.map +1 -1
- package/lib/deltaScheduler.d.ts +1 -2
- package/lib/deltaScheduler.d.ts.map +1 -1
- package/lib/deltaScheduler.js +13 -9
- package/lib/deltaScheduler.js.map +1 -1
- package/lib/error.js +2 -1
- package/lib/error.js.map +1 -1
- package/lib/gc/garbageCollection.d.ts.map +1 -1
- package/lib/gc/garbageCollection.js +37 -17
- package/lib/gc/garbageCollection.js.map +1 -1
- package/lib/gc/gcDefinitions.d.ts +0 -4
- package/lib/gc/gcDefinitions.d.ts.map +1 -1
- package/lib/gc/gcDefinitions.js +0 -2
- package/lib/gc/gcDefinitions.js.map +1 -1
- package/lib/gc/gcSummaryStateTracker.js +19 -14
- package/lib/gc/gcSummaryStateTracker.js.map +1 -1
- package/lib/gc/gcTelemetry.js +12 -5
- package/lib/gc/gcTelemetry.js.map +1 -1
- package/lib/gc/gcUnreferencedStateTracker.js +12 -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/messageTypes.d.ts +1 -1
- package/lib/messageTypes.d.ts.map +1 -1
- package/lib/messageTypes.js.map +1 -1
- package/lib/opLifecycle/batchManager.js +5 -3
- package/lib/opLifecycle/batchManager.js.map +1 -1
- package/lib/opLifecycle/opCompressor.js +1 -0
- package/lib/opLifecycle/opCompressor.js.map +1 -1
- package/lib/opLifecycle/opDecompressor.d.ts +1 -1
- package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opDecompressor.js +6 -4
- package/lib/opLifecycle/opDecompressor.js.map +1 -1
- package/lib/opLifecycle/opGroupingManager.d.ts +1 -1
- package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/lib/opLifecycle/opGroupingManager.js +3 -1
- package/lib/opLifecycle/opGroupingManager.js.map +1 -1
- package/lib/opLifecycle/opSplitter.d.ts +1 -1
- package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
- package/lib/opLifecycle/opSplitter.js +6 -0
- package/lib/opLifecycle/opSplitter.js.map +1 -1
- package/lib/opLifecycle/outbox.js +15 -10
- package/lib/opLifecycle/outbox.js.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.ts +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.js +4 -1
- package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/lib/opProperties.d.ts +1 -1
- package/lib/opProperties.d.ts.map +1 -1
- package/lib/opProperties.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.map +1 -1
- package/lib/pendingStateManager.js +34 -18
- package/lib/pendingStateManager.js.map +1 -1
- package/lib/scheduleManager.d.ts +1 -2
- package/lib/scheduleManager.d.ts.map +1 -1
- package/lib/scheduleManager.js +15 -4
- package/lib/scheduleManager.js.map +1 -1
- package/lib/storageServiceWithAttachBlobs.js +1 -0
- package/lib/storageServiceWithAttachBlobs.js.map +1 -1
- package/lib/summary/documentSchema.js +17 -1
- package/lib/summary/documentSchema.js.map +1 -1
- package/lib/summary/orderedClientElection.js +19 -11
- package/lib/summary/orderedClientElection.js.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.js +4 -2
- package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/lib/summary/runningSummarizer.d.ts +1 -1
- package/lib/summary/runningSummarizer.d.ts.map +1 -1
- package/lib/summary/runningSummarizer.js +57 -39
- package/lib/summary/runningSummarizer.js.map +1 -1
- package/lib/summary/summarizer.js +17 -8
- package/lib/summary/summarizer.js.map +1 -1
- package/lib/summary/summarizerClientElection.js +18 -7
- package/lib/summary/summarizerClientElection.js.map +1 -1
- package/lib/summary/summarizerHeuristics.js +30 -25
- 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 +12 -3
- package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.js +2 -0
- package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js +20 -6
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/lib/summary/summarizerTypes.d.ts +2 -2
- package/lib/summary/summarizerTypes.d.ts.map +1 -1
- package/lib/summary/summarizerTypes.js.map +1 -1
- package/lib/summary/summaryCollection.d.ts +1 -2
- package/lib/summary/summaryCollection.d.ts.map +1 -1
- package/lib/summary/summaryCollection.js +23 -11
- package/lib/summary/summaryCollection.js.map +1 -1
- package/lib/summary/summaryFormat.d.ts +1 -2
- package/lib/summary/summaryFormat.d.ts.map +1 -1
- package/lib/summary/summaryFormat.js.map +1 -1
- package/lib/summary/summaryGenerator.js +12 -5
- package/lib/summary/summaryGenerator.js.map +1 -1
- package/lib/summary/summaryManager.js +58 -48
- package/lib/summary/summaryManager.js.map +1 -1
- package/lib/throttler.js +4 -1
- package/lib/throttler.js.map +1 -1
- package/package.json +17 -17
- package/src/batchTracker.ts +1 -1
- package/src/blobManager.ts +1 -39
- package/src/channelCollection.ts +19 -72
- package/src/connectionTelemetry.ts +5 -2
- package/src/containerRuntime.ts +9 -32
- package/src/dataStoreContext.ts +4 -38
- package/src/deltaManagerProxies.ts +3 -5
- package/src/deltaScheduler.ts +4 -2
- package/src/gc/garbageCollection.ts +0 -2
- package/src/gc/gcDefinitions.ts +0 -4
- package/src/gc/index.ts +0 -1
- package/src/messageTypes.ts +1 -1
- package/src/opLifecycle/opDecompressor.ts +1 -1
- package/src/opLifecycle/opGroupingManager.ts +1 -1
- package/src/opLifecycle/opSplitter.ts +1 -1
- package/src/opLifecycle/remoteMessageProcessor.ts +4 -2
- package/src/opProperties.ts +4 -2
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +16 -5
- package/src/scheduleManager.ts +4 -2
- package/src/summary/runningSummarizer.ts +5 -2
- package/src/summary/summarizerNode/summarizerNode.ts +5 -2
- package/src/summary/summarizerTypes.ts +5 -2
- package/src/summary/summaryCollection.ts +1 -1
- package/src/summary/summaryFormat.ts +2 -1
- package/tsconfig.json +2 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/container-runtime",
|
|
3
|
-
"version": "2.0.0-dev-rc.5.0.0.
|
|
3
|
+
"version": "2.0.0-dev-rc.5.0.0.270401",
|
|
4
4
|
"description": "Fluid container runtime",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -127,18 +127,18 @@
|
|
|
127
127
|
"temp-directory": "nyc/.nyc_output"
|
|
128
128
|
},
|
|
129
129
|
"dependencies": {
|
|
130
|
-
"@fluid-internal/client-utils": "2.0.0-dev-rc.5.0.0.
|
|
131
|
-
"@fluidframework/container-definitions": "2.0.0-dev-rc.5.0.0.
|
|
132
|
-
"@fluidframework/container-runtime-definitions": "2.0.0-dev-rc.5.0.0.
|
|
133
|
-
"@fluidframework/core-interfaces": "2.0.0-dev-rc.5.0.0.
|
|
134
|
-
"@fluidframework/core-utils": "2.0.0-dev-rc.5.0.0.
|
|
135
|
-
"@fluidframework/datastore": "2.0.0-dev-rc.5.0.0.
|
|
136
|
-
"@fluidframework/driver-definitions": "2.0.0-dev-rc.5.0.0.
|
|
137
|
-
"@fluidframework/driver-utils": "2.0.0-dev-rc.5.0.0.
|
|
138
|
-
"@fluidframework/id-compressor": "2.0.0-dev-rc.5.0.0.
|
|
139
|
-
"@fluidframework/runtime-definitions": "2.0.0-dev-rc.5.0.0.
|
|
140
|
-
"@fluidframework/runtime-utils": "2.0.0-dev-rc.5.0.0.
|
|
141
|
-
"@fluidframework/telemetry-utils": "2.0.0-dev-rc.5.0.0.
|
|
130
|
+
"@fluid-internal/client-utils": "2.0.0-dev-rc.5.0.0.270401",
|
|
131
|
+
"@fluidframework/container-definitions": "2.0.0-dev-rc.5.0.0.270401",
|
|
132
|
+
"@fluidframework/container-runtime-definitions": "2.0.0-dev-rc.5.0.0.270401",
|
|
133
|
+
"@fluidframework/core-interfaces": "2.0.0-dev-rc.5.0.0.270401",
|
|
134
|
+
"@fluidframework/core-utils": "2.0.0-dev-rc.5.0.0.270401",
|
|
135
|
+
"@fluidframework/datastore": "2.0.0-dev-rc.5.0.0.270401",
|
|
136
|
+
"@fluidframework/driver-definitions": "2.0.0-dev-rc.5.0.0.270401",
|
|
137
|
+
"@fluidframework/driver-utils": "2.0.0-dev-rc.5.0.0.270401",
|
|
138
|
+
"@fluidframework/id-compressor": "2.0.0-dev-rc.5.0.0.270401",
|
|
139
|
+
"@fluidframework/runtime-definitions": "2.0.0-dev-rc.5.0.0.270401",
|
|
140
|
+
"@fluidframework/runtime-utils": "2.0.0-dev-rc.5.0.0.270401",
|
|
141
|
+
"@fluidframework/telemetry-utils": "2.0.0-dev-rc.5.0.0.270401",
|
|
142
142
|
"@tylerbu/sorted-btree-es6": "^1.8.0",
|
|
143
143
|
"double-ended-queue": "^2.1.0-0",
|
|
144
144
|
"lz4js": "^0.2.0",
|
|
@@ -147,16 +147,16 @@
|
|
|
147
147
|
"devDependencies": {
|
|
148
148
|
"@arethetypeswrong/cli": "^0.15.2",
|
|
149
149
|
"@biomejs/biome": "^1.7.3",
|
|
150
|
-
"@fluid-internal/mocha-test-setup": "2.0.0-dev-rc.5.0.0.
|
|
151
|
-
"@fluid-private/stochastic-test-utils": "2.0.0-dev-rc.5.0.0.
|
|
152
|
-
"@fluid-private/test-pairwise-generator": "2.0.0-dev-rc.5.0.0.
|
|
150
|
+
"@fluid-internal/mocha-test-setup": "2.0.0-dev-rc.5.0.0.270401",
|
|
151
|
+
"@fluid-private/stochastic-test-utils": "2.0.0-dev-rc.5.0.0.270401",
|
|
152
|
+
"@fluid-private/test-pairwise-generator": "2.0.0-dev-rc.5.0.0.270401",
|
|
153
153
|
"@fluid-tools/benchmark": "^0.48.0",
|
|
154
154
|
"@fluid-tools/build-cli": "^0.39.0-264124",
|
|
155
155
|
"@fluidframework/build-common": "^2.0.3",
|
|
156
156
|
"@fluidframework/build-tools": "^0.39.0-264124",
|
|
157
157
|
"@fluidframework/container-runtime-previous": "npm:@fluidframework/container-runtime@2.0.0-rc.4.0.0",
|
|
158
158
|
"@fluidframework/eslint-config-fluid": "^5.3.0",
|
|
159
|
-
"@fluidframework/test-runtime-utils": "2.0.0-dev-rc.5.0.0.
|
|
159
|
+
"@fluidframework/test-runtime-utils": "2.0.0-dev-rc.5.0.0.270401",
|
|
160
160
|
"@microsoft/api-extractor": "^7.45.1",
|
|
161
161
|
"@types/double-ended-queue": "^2.1.0",
|
|
162
162
|
"@types/mocha": "^9.1.1",
|
package/src/batchTracker.ts
CHANGED
|
@@ -7,7 +7,7 @@ import type { EventEmitter } from "@fluid-internal/client-utils";
|
|
|
7
7
|
import { performance } from "@fluid-internal/client-utils";
|
|
8
8
|
import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
|
|
9
9
|
import { assert } from "@fluidframework/core-utils/internal";
|
|
10
|
-
import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions";
|
|
10
|
+
import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
|
|
11
11
|
import { ITelemetryLoggerExt, createChildLogger } from "@fluidframework/telemetry-utils/internal";
|
|
12
12
|
|
|
13
13
|
export class BatchTracker {
|
package/src/blobManager.ts
CHANGED
|
@@ -14,11 +14,11 @@ import {
|
|
|
14
14
|
type IFluidHandleInternal,
|
|
15
15
|
} from "@fluidframework/core-interfaces/internal";
|
|
16
16
|
import { assert, Deferred } from "@fluidframework/core-utils/internal";
|
|
17
|
-
import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions";
|
|
18
17
|
import {
|
|
19
18
|
IDocumentStorageService,
|
|
20
19
|
ICreateBlobResponse,
|
|
21
20
|
ISnapshotTree,
|
|
21
|
+
ISequencedDocumentMessage,
|
|
22
22
|
} from "@fluidframework/driver-definitions/internal";
|
|
23
23
|
import { canRetryOnError, runWithRetry } from "@fluidframework/driver-utils/internal";
|
|
24
24
|
import {
|
|
@@ -166,14 +166,6 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
166
166
|
*/
|
|
167
167
|
private readonly opsInFlight: Map<string, string[]> = new Map();
|
|
168
168
|
|
|
169
|
-
/**
|
|
170
|
-
* This stores IDs of tombstoned blobs.
|
|
171
|
-
*
|
|
172
|
-
* A Tombstoned object has been unreferenced long enough that GC knows it won't be referenced again.
|
|
173
|
-
* Tombstoned objects are eventually deleted by GC.
|
|
174
|
-
*/
|
|
175
|
-
private readonly tombstonedBlobs: Set<string> = new Set();
|
|
176
|
-
|
|
177
169
|
private readonly sendBlobAttachOp: (localId: string, storageId?: string) => void;
|
|
178
170
|
private stopAttaching: boolean = false;
|
|
179
171
|
|
|
@@ -827,36 +819,6 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
827
819
|
}
|
|
828
820
|
}
|
|
829
821
|
|
|
830
|
-
/**
|
|
831
|
-
* This is called to update blobs whose routes are tombstones.
|
|
832
|
-
*
|
|
833
|
-
* A Tombstoned object has been unreferenced long enough that GC knows it won't be referenced again.
|
|
834
|
-
* Tombstoned objects are eventually deleted by GC.
|
|
835
|
-
*
|
|
836
|
-
* @param tombstonedRoutes - The routes of blob nodes that are tombstones.
|
|
837
|
-
*/
|
|
838
|
-
public updateTombstonedRoutes(tombstonedRoutes: readonly string[]) {
|
|
839
|
-
const tombstonedBlobsSet: Set<string> = new Set();
|
|
840
|
-
// The routes or blob node paths are in the same format as returned in getGCData -
|
|
841
|
-
// `/<BlobManager.basePath>/<blobId>`.
|
|
842
|
-
for (const route of tombstonedRoutes) {
|
|
843
|
-
const blobId = getBlobIdFromGCNodePath(route);
|
|
844
|
-
tombstonedBlobsSet.add(blobId);
|
|
845
|
-
}
|
|
846
|
-
|
|
847
|
-
// Remove blobs from the tombstone list that were tombstoned but aren't anymore as per the tombstoneRoutes.
|
|
848
|
-
for (const blobId of this.tombstonedBlobs) {
|
|
849
|
-
if (!tombstonedBlobsSet.has(blobId)) {
|
|
850
|
-
this.tombstonedBlobs.delete(blobId);
|
|
851
|
-
}
|
|
852
|
-
}
|
|
853
|
-
|
|
854
|
-
// Mark blobs that are now tombstoned by adding them to the tombstone list.
|
|
855
|
-
for (const blobId of tombstonedBlobsSet) {
|
|
856
|
-
this.tombstonedBlobs.add(blobId);
|
|
857
|
-
}
|
|
858
|
-
}
|
|
859
|
-
|
|
860
822
|
/**
|
|
861
823
|
* Verifies that the blob with given id is not deleted, i.e., it has not been garbage collected. If the blob is GC'd,
|
|
862
824
|
* log an error and throw if necessary.
|
package/src/channelCollection.ts
CHANGED
|
@@ -14,9 +14,11 @@ import {
|
|
|
14
14
|
import type { IFluidHandleInternal } from "@fluidframework/core-interfaces/internal";
|
|
15
15
|
import { assert, Lazy, LazyPromise } from "@fluidframework/core-utils/internal";
|
|
16
16
|
import { FluidObjectHandle } from "@fluidframework/datastore/internal";
|
|
17
|
-
import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions";
|
|
18
17
|
import type { ISnapshot } from "@fluidframework/driver-definitions/internal";
|
|
19
|
-
import {
|
|
18
|
+
import {
|
|
19
|
+
ISnapshotTree,
|
|
20
|
+
ISequencedDocumentMessage,
|
|
21
|
+
} from "@fluidframework/driver-definitions/internal";
|
|
20
22
|
import {
|
|
21
23
|
buildSnapshotTree,
|
|
22
24
|
getSnapshotTree,
|
|
@@ -88,12 +90,7 @@ import {
|
|
|
88
90
|
} from "./dataStoreContext.js";
|
|
89
91
|
import { DataStoreContexts } from "./dataStoreContexts.js";
|
|
90
92
|
import { FluidDataStoreRegistry } from "./dataStoreRegistry.js";
|
|
91
|
-
import {
|
|
92
|
-
GCNodeType,
|
|
93
|
-
detectOutboundRoutesViaDDSKey,
|
|
94
|
-
IGCNodeUpdatedProps,
|
|
95
|
-
urlToGCNodePath,
|
|
96
|
-
} from "./gc/index.js";
|
|
93
|
+
import { GCNodeType, IGCNodeUpdatedProps, urlToGCNodePath } from "./gc/index.js";
|
|
97
94
|
import { ContainerMessageType, LocalContainerRuntimeMessage } from "./messageTypes.js";
|
|
98
95
|
import { StorageServiceWithAttachBlobs } from "./storageServiceWithAttachBlobs.js";
|
|
99
96
|
import {
|
|
@@ -188,8 +185,8 @@ export function wrapContext(context: IFluidParentContext): IFluidParentContext {
|
|
|
188
185
|
uploadBlob: async (...args) => {
|
|
189
186
|
return context.uploadBlob(...args);
|
|
190
187
|
},
|
|
191
|
-
|
|
192
|
-
return context.
|
|
188
|
+
addedGCOutboundRoute: (...args) => {
|
|
189
|
+
return context.addedGCOutboundRoute(...args);
|
|
193
190
|
},
|
|
194
191
|
getCreateChildSummarizerNodeFn: (...args) => {
|
|
195
192
|
return context.getCreateChildSummarizerNodeFn?.(...args);
|
|
@@ -268,12 +265,6 @@ export class ChannelCollection implements IFluidDataStoreChannel, IDisposable {
|
|
|
268
265
|
readonly referencedDataStoreCount: number;
|
|
269
266
|
};
|
|
270
267
|
|
|
271
|
-
// Stores the ids of new data stores between two GC runs. This is used to notify the garbage collector of new
|
|
272
|
-
// root data stores that are added.
|
|
273
|
-
private dataStoresSinceLastGC: string[] = [];
|
|
274
|
-
// The handle to the container runtime. This is used mainly for GC purposes to represent outbound reference from
|
|
275
|
-
// the container runtime to other nodes.
|
|
276
|
-
private readonly containerRuntimeHandle: IFluidHandleInternal;
|
|
277
268
|
private readonly pendingAliasMap: Map<string, Promise<AliasResult>> = new Map<
|
|
278
269
|
string,
|
|
279
270
|
Promise<AliasResult>
|
|
@@ -293,11 +284,6 @@ export class ChannelCollection implements IFluidDataStoreChannel, IDisposable {
|
|
|
293
284
|
) {
|
|
294
285
|
this.mc = createChildMonitoringContext({ logger: baseLogger });
|
|
295
286
|
this.contexts = new DataStoreContexts(baseLogger);
|
|
296
|
-
this.containerRuntimeHandle = new FluidObjectHandle(
|
|
297
|
-
this.parentContext,
|
|
298
|
-
"/",
|
|
299
|
-
this.parentContext.IFluidHandleContext,
|
|
300
|
-
);
|
|
301
287
|
this.entryPoint = new FluidObjectHandle<FluidObject>(
|
|
302
288
|
new LazyPromise(async () => provideEntryPoint(this)),
|
|
303
289
|
"",
|
|
@@ -401,16 +387,11 @@ export class ChannelCollection implements IFluidDataStoreChannel, IDisposable {
|
|
|
401
387
|
private processAttachMessage(message: ISequencedDocumentMessage, local: boolean) {
|
|
402
388
|
const attachMessage = message.contents as InboundAttachMessage;
|
|
403
389
|
|
|
404
|
-
this.dataStoresSinceLastGC.push(attachMessage.id);
|
|
405
|
-
|
|
406
390
|
// We need to process the GC Data for both local and remote attach messages
|
|
407
391
|
const foundGCData = processAttachMessageGCData(attachMessage.snapshot, (nodeId, toPath) => {
|
|
408
392
|
// nodeId is the relative path under the node being attached. Always starts with "/", but no trailing "/" after an id
|
|
409
393
|
const fromPath = `/${attachMessage.id}${nodeId === "/" ? "" : nodeId}`;
|
|
410
|
-
this.parentContext.
|
|
411
|
-
{ absolutePath: fromPath },
|
|
412
|
-
{ absolutePath: toPath },
|
|
413
|
-
);
|
|
394
|
+
this.parentContext.addedGCOutboundRoute(fromPath, toPath);
|
|
414
395
|
});
|
|
415
396
|
|
|
416
397
|
// Only log once per container to avoid noise/cost.
|
|
@@ -531,12 +512,7 @@ export class ChannelCollection implements IFluidDataStoreChannel, IDisposable {
|
|
|
531
512
|
return false;
|
|
532
513
|
}
|
|
533
514
|
|
|
534
|
-
|
|
535
|
-
context,
|
|
536
|
-
internalId,
|
|
537
|
-
this.parentContext.IFluidHandleContext,
|
|
538
|
-
);
|
|
539
|
-
this.parentContext.addedGCOutboundReference?.(this.containerRuntimeHandle, handle);
|
|
515
|
+
this.parentContext.addedGCOutboundRoute("/", `/${internalId}`);
|
|
540
516
|
|
|
541
517
|
this.aliasMap.set(alias, context.id);
|
|
542
518
|
this.aliasedDataStores.add(context.id);
|
|
@@ -816,7 +792,6 @@ export class ChannelCollection implements IFluidDataStoreChannel, IDisposable {
|
|
|
816
792
|
message: ISequencedDocumentMessage,
|
|
817
793
|
local: boolean,
|
|
818
794
|
localMessageMetadata: unknown,
|
|
819
|
-
addedOutboundReference?: (fromNodePath: string, toNodePath: string) => void,
|
|
820
795
|
) {
|
|
821
796
|
switch (message.type) {
|
|
822
797
|
case ContainerMessageType.Attach:
|
|
@@ -836,19 +811,13 @@ export class ChannelCollection implements IFluidDataStoreChannel, IDisposable {
|
|
|
836
811
|
|
|
837
812
|
this.processChannelOp(envelope.address, transformed, local, localMessageMetadata);
|
|
838
813
|
|
|
839
|
-
//
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
detectOutboundReferences(
|
|
847
|
-
envelope.address,
|
|
848
|
-
transformed.contents,
|
|
849
|
-
addedOutboundReference,
|
|
850
|
-
);
|
|
851
|
-
}
|
|
814
|
+
// Notify GC of any outbound references that were added by this op.
|
|
815
|
+
detectOutboundReferences(
|
|
816
|
+
envelope.address,
|
|
817
|
+
transformed.contents,
|
|
818
|
+
(fromPath: string, toPath: string) =>
|
|
819
|
+
this.parentContext.addedGCOutboundRoute(fromPath, toPath),
|
|
820
|
+
);
|
|
852
821
|
break;
|
|
853
822
|
}
|
|
854
823
|
default:
|
|
@@ -989,9 +958,9 @@ export class ChannelCollection implements IFluidDataStoreChannel, IDisposable {
|
|
|
989
958
|
: dataStoreNodePath;
|
|
990
959
|
|
|
991
960
|
// Log the package details asynchronously since getInitialSnapshotDetails is async
|
|
992
|
-
const
|
|
993
|
-
if (
|
|
994
|
-
|
|
961
|
+
const recentlyDeletedContext = this.contexts.getRecentlyDeletedContext(id);
|
|
962
|
+
if (recentlyDeletedContext !== undefined) {
|
|
963
|
+
recentlyDeletedContext
|
|
995
964
|
.getInitialSnapshotDetails()
|
|
996
965
|
.then((details) => {
|
|
997
966
|
return details.pkg.join("/");
|
|
@@ -1179,28 +1148,6 @@ export class ChannelCollection implements IFluidDataStoreChannel, IDisposable {
|
|
|
1179
1148
|
return builder.getSummaryTree();
|
|
1180
1149
|
}
|
|
1181
1150
|
|
|
1182
|
-
/**
|
|
1183
|
-
* Before GC runs, called by the garbage collector to update any pending GC state.
|
|
1184
|
-
* The garbage collector needs to know all outbound references that are added. Since root data stores are not
|
|
1185
|
-
* explicitly marked as referenced, notify GC of new root data stores that were added since the last GC run.
|
|
1186
|
-
*/
|
|
1187
|
-
public async updateStateBeforeGC(): Promise<void> {
|
|
1188
|
-
for (const id of this.dataStoresSinceLastGC) {
|
|
1189
|
-
const context = this.contexts.get(id);
|
|
1190
|
-
assert(context !== undefined, 0x2b6 /* Missing data store context */);
|
|
1191
|
-
if (await context.isRoot()) {
|
|
1192
|
-
// A root data store is basically a reference from the container runtime to the data store.
|
|
1193
|
-
const handle = new FluidObjectHandle(
|
|
1194
|
-
context,
|
|
1195
|
-
id,
|
|
1196
|
-
this.parentContext.IFluidHandleContext,
|
|
1197
|
-
);
|
|
1198
|
-
this.parentContext.addedGCOutboundReference?.(this.containerRuntimeHandle, handle);
|
|
1199
|
-
}
|
|
1200
|
-
}
|
|
1201
|
-
this.dataStoresSinceLastGC = [];
|
|
1202
|
-
}
|
|
1203
|
-
|
|
1204
1151
|
/**
|
|
1205
1152
|
* Generates data used for garbage collection. It does the following:
|
|
1206
1153
|
*
|
|
@@ -8,8 +8,11 @@ import { IDeltaManager } from "@fluidframework/container-definitions/internal";
|
|
|
8
8
|
import { IContainerRuntimeEvents } from "@fluidframework/container-runtime-definitions/internal";
|
|
9
9
|
import { IEventProvider } from "@fluidframework/core-interfaces";
|
|
10
10
|
import { assert } from "@fluidframework/core-utils/internal";
|
|
11
|
-
import {
|
|
12
|
-
|
|
11
|
+
import {
|
|
12
|
+
IDocumentMessage,
|
|
13
|
+
MessageType,
|
|
14
|
+
ISequencedDocumentMessage,
|
|
15
|
+
} from "@fluidframework/driver-definitions/internal";
|
|
13
16
|
import { isRuntimeMessage } from "@fluidframework/driver-utils/internal";
|
|
14
17
|
import {
|
|
15
18
|
IEventSampler,
|
package/src/containerRuntime.ts
CHANGED
|
@@ -47,8 +47,6 @@ import {
|
|
|
47
47
|
import {
|
|
48
48
|
IClientDetails,
|
|
49
49
|
IQuorumClients,
|
|
50
|
-
ISequencedDocumentMessage,
|
|
51
|
-
ISignalMessage,
|
|
52
50
|
ISummaryTree,
|
|
53
51
|
SummaryType,
|
|
54
52
|
} from "@fluidframework/driver-definitions";
|
|
@@ -61,6 +59,8 @@ import {
|
|
|
61
59
|
ISnapshotTree,
|
|
62
60
|
ISummaryContent,
|
|
63
61
|
MessageType,
|
|
62
|
+
ISequencedDocumentMessage,
|
|
63
|
+
ISignalMessage,
|
|
64
64
|
} from "@fluidframework/driver-definitions/internal";
|
|
65
65
|
import { readAndParse } from "@fluidframework/driver-utils/internal";
|
|
66
66
|
import type { IIdCompressor } from "@fluidframework/id-compressor";
|
|
@@ -2685,12 +2685,7 @@ export class ContainerRuntime
|
|
|
2685
2685
|
case ContainerMessageType.Attach:
|
|
2686
2686
|
case ContainerMessageType.Alias:
|
|
2687
2687
|
case ContainerMessageType.FluidDataStoreOp:
|
|
2688
|
-
this.channelCollection.process(
|
|
2689
|
-
messageWithContext.message,
|
|
2690
|
-
local,
|
|
2691
|
-
localOpMetadata,
|
|
2692
|
-
(from, to) => this.garbageCollector.addedOutboundReference(from, to),
|
|
2693
|
-
);
|
|
2688
|
+
this.channelCollection.process(messageWithContext.message, local, localOpMetadata);
|
|
2694
2689
|
break;
|
|
2695
2690
|
case ContainerMessageType.BlobAttach:
|
|
2696
2691
|
this.blobManager.processBlobAttachOp(messageWithContext.message, local);
|
|
@@ -3252,16 +3247,6 @@ export class ContainerRuntime
|
|
|
3252
3247
|
}
|
|
3253
3248
|
}
|
|
3254
3249
|
|
|
3255
|
-
/**
|
|
3256
|
-
* Before GC runs, called by the garbage collector to update any pending GC state. This is mainly used to notify
|
|
3257
|
-
* the garbage collector of references detected since the last GC run. Most references are notified immediately
|
|
3258
|
-
* but there can be some for which async operation is required (such as detecting new root data stores).
|
|
3259
|
-
* @see IGarbageCollectionRuntime.updateStateBeforeGC
|
|
3260
|
-
*/
|
|
3261
|
-
public async updateStateBeforeGC() {
|
|
3262
|
-
return this.channelCollection.updateStateBeforeGC();
|
|
3263
|
-
}
|
|
3264
|
-
|
|
3265
3250
|
private async getGCDataInternal(fullGC?: boolean): Promise<IGarbageCollectionData> {
|
|
3266
3251
|
return this.channelCollection.getGCData(fullGC);
|
|
3267
3252
|
}
|
|
@@ -3318,9 +3303,7 @@ export class ContainerRuntime
|
|
|
3318
3303
|
* @param tombstonedRoutes - Data store and attachment blob routes that are tombstones in this Container.
|
|
3319
3304
|
*/
|
|
3320
3305
|
public updateTombstonedRoutes(tombstonedRoutes: readonly string[]) {
|
|
3321
|
-
const {
|
|
3322
|
-
this.getDataStoreAndBlobManagerRoutes(tombstonedRoutes);
|
|
3323
|
-
this.blobManager.updateTombstonedRoutes(blobManagerRoutes);
|
|
3306
|
+
const { dataStoreRoutes } = this.getDataStoreAndBlobManagerRoutes(tombstonedRoutes);
|
|
3324
3307
|
this.channelCollection.updateTombstonedRoutes(dataStoreRoutes);
|
|
3325
3308
|
}
|
|
3326
3309
|
|
|
@@ -3415,19 +3398,13 @@ export class ContainerRuntime
|
|
|
3415
3398
|
}
|
|
3416
3399
|
|
|
3417
3400
|
/**
|
|
3418
|
-
* Called when a new outbound
|
|
3401
|
+
* Called when a new outbound route is added to another node. This is used by garbage collection to identify
|
|
3419
3402
|
* all references added in the system.
|
|
3420
|
-
* @param
|
|
3421
|
-
* @param
|
|
3403
|
+
* @param fromPath - The absolute path of the node that added the reference.
|
|
3404
|
+
* @param toPath - The absolute path of the outbound node that is referenced.
|
|
3422
3405
|
*/
|
|
3423
|
-
public
|
|
3424
|
-
|
|
3425
|
-
outboundHandle: { absolutePath: string },
|
|
3426
|
-
) {
|
|
3427
|
-
this.garbageCollector.addedOutboundReference(
|
|
3428
|
-
srcHandle.absolutePath,
|
|
3429
|
-
outboundHandle.absolutePath,
|
|
3430
|
-
);
|
|
3406
|
+
public addedGCOutboundRoute(fromPath: string, toPath: string) {
|
|
3407
|
+
this.garbageCollector.addedOutboundReference(fromPath, toPath);
|
|
3431
3408
|
}
|
|
3432
3409
|
|
|
3433
3410
|
/**
|
package/src/dataStoreContext.ts
CHANGED
|
@@ -16,17 +16,14 @@ import {
|
|
|
16
16
|
} from "@fluidframework/core-interfaces";
|
|
17
17
|
import { type IFluidHandleInternal } from "@fluidframework/core-interfaces/internal";
|
|
18
18
|
import { assert, LazyPromise, unreachableCase } from "@fluidframework/core-utils/internal";
|
|
19
|
-
import {
|
|
20
|
-
IClientDetails,
|
|
21
|
-
IQuorumClients,
|
|
22
|
-
ISequencedDocumentMessage,
|
|
23
|
-
} from "@fluidframework/driver-definitions";
|
|
19
|
+
import { IClientDetails, IQuorumClients } from "@fluidframework/driver-definitions";
|
|
24
20
|
import {
|
|
25
21
|
IDocumentStorageService,
|
|
26
22
|
type ISnapshot,
|
|
27
23
|
IDocumentMessage,
|
|
28
24
|
ISnapshotTree,
|
|
29
25
|
ITreeEntry,
|
|
26
|
+
ISequencedDocumentMessage,
|
|
30
27
|
} from "@fluidframework/driver-definitions/internal";
|
|
31
28
|
import {
|
|
32
29
|
BlobTreeEntry,
|
|
@@ -61,7 +58,6 @@ import {
|
|
|
61
58
|
import {
|
|
62
59
|
addBlobToSummary,
|
|
63
60
|
isSnapshotFetchRequiredForLoadingGroupId,
|
|
64
|
-
toFluidHandleInternal,
|
|
65
61
|
} from "@fluidframework/runtime-utils/internal";
|
|
66
62
|
import {
|
|
67
63
|
DataCorruptionError,
|
|
@@ -75,7 +71,7 @@ import {
|
|
|
75
71
|
tagCodeArtifacts,
|
|
76
72
|
} from "@fluidframework/telemetry-utils/internal";
|
|
77
73
|
|
|
78
|
-
import {
|
|
74
|
+
import { sendGCUnexpectedUsageEvent } from "./gc/index.js";
|
|
79
75
|
import {
|
|
80
76
|
// eslint-disable-next-line import/no-deprecated
|
|
81
77
|
ReadFluidDataStoreAttributes,
|
|
@@ -723,33 +719,6 @@ export abstract class FluidDataStoreContext
|
|
|
723
719
|
}
|
|
724
720
|
|
|
725
721
|
/**
|
|
726
|
-
* @deprecated There is no replacement for this, its functionality is no longer needed at this layer.
|
|
727
|
-
* It will be removed in a future release, sometime after 2.0.0-internal.8.0.0
|
|
728
|
-
*
|
|
729
|
-
* Similar capability is exposed with from/to string paths instead of handles via @see addedGCOutboundRoute
|
|
730
|
-
*
|
|
731
|
-
* Called when a new outbound reference is added to another node. This is used by garbage collection to identify
|
|
732
|
-
* all references added in the system.
|
|
733
|
-
* @param srcHandle - The handle of the node that added the reference.
|
|
734
|
-
* @param outboundHandle - The handle of the outbound node that is referenced.
|
|
735
|
-
*/
|
|
736
|
-
public addedGCOutboundReference(
|
|
737
|
-
srcHandle: IFluidHandleInternal,
|
|
738
|
-
outboundHandle: IFluidHandleInternal,
|
|
739
|
-
): void {
|
|
740
|
-
// By default, skip this call since the ContainerRuntime will detect the outbound route directly.
|
|
741
|
-
if (this.mc.config.getBoolean(detectOutboundRoutesViaDDSKey) === true) {
|
|
742
|
-
// Note: The ContainerRuntime code will check this same setting to avoid double counting.
|
|
743
|
-
this.parentContext.addedGCOutboundReference?.(
|
|
744
|
-
toFluidHandleInternal(srcHandle),
|
|
745
|
-
toFluidHandleInternal(outboundHandle),
|
|
746
|
-
);
|
|
747
|
-
}
|
|
748
|
-
}
|
|
749
|
-
|
|
750
|
-
/**
|
|
751
|
-
* (Same as @see addedGCOutboundReference, but with string paths instead of handles)
|
|
752
|
-
*
|
|
753
722
|
* Called when a new outbound reference is added to another node. This is used by garbage collection to identify
|
|
754
723
|
* all references added in the system.
|
|
755
724
|
*
|
|
@@ -757,10 +726,7 @@ export abstract class FluidDataStoreContext
|
|
|
757
726
|
* @param toPath - The absolute path of the outbound node that is referenced.
|
|
758
727
|
*/
|
|
759
728
|
public addedGCOutboundRoute(fromPath: string, toPath: string) {
|
|
760
|
-
this.parentContext.
|
|
761
|
-
{ absolutePath: fromPath },
|
|
762
|
-
{ absolutePath: toPath },
|
|
763
|
-
);
|
|
729
|
+
this.parentContext.addedGCOutboundRoute(fromPath, toPath);
|
|
764
730
|
}
|
|
765
731
|
|
|
766
732
|
/**
|
|
@@ -13,15 +13,13 @@ import type {
|
|
|
13
13
|
ReadOnlyInfo,
|
|
14
14
|
} from "@fluidframework/container-definitions/internal";
|
|
15
15
|
import type { IErrorBase } from "@fluidframework/core-interfaces";
|
|
16
|
-
import {
|
|
17
|
-
IClientDetails,
|
|
18
|
-
ISequencedDocumentMessage,
|
|
19
|
-
ISignalMessage,
|
|
20
|
-
} from "@fluidframework/driver-definitions";
|
|
16
|
+
import { IClientDetails } from "@fluidframework/driver-definitions";
|
|
21
17
|
import type { IAnyDriverError } from "@fluidframework/driver-definitions/internal";
|
|
22
18
|
import {
|
|
23
19
|
IClientConfiguration,
|
|
24
20
|
IDocumentMessage,
|
|
21
|
+
ISequencedDocumentMessage,
|
|
22
|
+
ISignalMessage,
|
|
25
23
|
} from "@fluidframework/driver-definitions/internal";
|
|
26
24
|
|
|
27
25
|
import type { PendingStateManager } from "./pendingStateManager.js";
|
package/src/deltaScheduler.ts
CHANGED
|
@@ -5,8 +5,10 @@
|
|
|
5
5
|
|
|
6
6
|
import { performance } from "@fluid-internal/client-utils";
|
|
7
7
|
import { IDeltaManager } from "@fluidframework/container-definitions/internal";
|
|
8
|
-
import {
|
|
9
|
-
|
|
8
|
+
import {
|
|
9
|
+
IDocumentMessage,
|
|
10
|
+
ISequencedDocumentMessage,
|
|
11
|
+
} from "@fluidframework/driver-definitions/internal";
|
|
10
12
|
import { ITelemetryLoggerExt, formatTick } from "@fluidframework/telemetry-utils/internal";
|
|
11
13
|
|
|
12
14
|
/**
|
|
@@ -517,8 +517,6 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
517
517
|
/** Pre-GC steps */
|
|
518
518
|
// Ensure that state has been initialized from the base snapshot data.
|
|
519
519
|
await this.initializeGCStateFromBaseSnapshotP;
|
|
520
|
-
// Let the runtime update its pending state before GC runs.
|
|
521
|
-
await this.runtime.updateStateBeforeGC();
|
|
522
520
|
|
|
523
521
|
/** GC step */
|
|
524
522
|
const gcStats = await this.runGC(fullGC, currentReferenceTimestampMs, logger);
|
package/src/gc/gcDefinitions.ts
CHANGED
|
@@ -77,8 +77,6 @@ export const throwOnTombstoneUsageKey = "Fluid.GarbageCollection.ThrowOnTombston
|
|
|
77
77
|
export const gcVersionUpgradeToV4Key = "Fluid.GarbageCollection.GCVersionUpgradeToV4";
|
|
78
78
|
/** Config key to disable GC sweep for datastores. They'll merely be Tombstoned. */
|
|
79
79
|
export const disableDatastoreSweepKey = "Fluid.GarbageCollection.DisableDataStoreSweep";
|
|
80
|
-
/** Config key to revert new paradigm of detecting outbound routes in ContainerRuntime layer (use true) */
|
|
81
|
-
export const detectOutboundRoutesViaDDSKey = "Fluid.GarbageCollection.DetectOutboundRoutesViaDDS";
|
|
82
80
|
/** Config key to disable auto-recovery mechanism that protects Tombstones that are loaded from being swept (use true) */
|
|
83
81
|
export const disableAutoRecoveryKey = "Fluid.GarbageCollection.DisableAutoRecovery";
|
|
84
82
|
|
|
@@ -300,8 +298,6 @@ export type GarbageCollectionMessage = ISweepMessage | ITombstoneLoadedMessage;
|
|
|
300
298
|
* Defines the APIs for the runtime object to be passed to the garbage collector.
|
|
301
299
|
*/
|
|
302
300
|
export interface IGarbageCollectionRuntime {
|
|
303
|
-
/** Before GC runs, called to notify the runtime to update any pending GC state. */
|
|
304
|
-
updateStateBeforeGC(): Promise<void>;
|
|
305
301
|
/** Returns the garbage collection data of the runtime. */
|
|
306
302
|
getGCData(fullGC?: boolean): Promise<IGarbageCollectionData>;
|
|
307
303
|
/** After GC has run, called to notify the runtime of routes that are used in it. */
|
package/src/gc/index.ts
CHANGED
package/src/messageTypes.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions";
|
|
6
|
+
import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
|
|
7
7
|
import type { IdCreationRange } from "@fluidframework/id-compressor/internal";
|
|
8
8
|
import {
|
|
9
9
|
IAttachMessage,
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { IsoBuffer, Uint8ArrayToString } from "@fluid-internal/client-utils";
|
|
7
7
|
import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
|
|
8
8
|
import { assert } from "@fluidframework/core-utils/internal";
|
|
9
|
-
import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions";
|
|
9
|
+
import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
|
|
10
10
|
import { createChildLogger } from "@fluidframework/telemetry-utils/internal";
|
|
11
11
|
import { decompress } from "lz4js";
|
|
12
12
|
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
|
|
7
7
|
import { assert } from "@fluidframework/core-utils/internal";
|
|
8
|
-
import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions";
|
|
8
|
+
import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
|
|
9
9
|
import { createChildLogger } from "@fluidframework/telemetry-utils/internal";
|
|
10
10
|
|
|
11
11
|
import { IBatch, type BatchMessage } from "./definitions.js";
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import { IBatchMessage } from "@fluidframework/container-definitions/internal";
|
|
7
7
|
import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
|
|
8
8
|
import { assert } from "@fluidframework/core-utils/internal";
|
|
9
|
-
import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions";
|
|
9
|
+
import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
|
|
10
10
|
import {
|
|
11
11
|
DataCorruptionError,
|
|
12
12
|
createChildLogger,
|
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
|
|
6
|
+
import {
|
|
7
|
+
MessageType,
|
|
8
|
+
ISequencedDocumentMessage,
|
|
9
|
+
} from "@fluidframework/driver-definitions/internal";
|
|
8
10
|
|
|
9
11
|
import {
|
|
10
12
|
ContainerMessageType,
|
package/src/opProperties.ts
CHANGED
|
@@ -3,8 +3,10 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
|
|
6
|
+
import {
|
|
7
|
+
ISequencedDocumentSystemMessage,
|
|
8
|
+
ISequencedDocumentMessage,
|
|
9
|
+
} from "@fluidframework/driver-definitions/internal";
|
|
8
10
|
|
|
9
11
|
export const opSize = (op: ISequencedDocumentMessage): number => {
|
|
10
12
|
// Some messages may already have string contents,
|
package/src/packageVersion.ts
CHANGED