@fluidframework/container-runtime 2.0.0-rc.1.0.3 → 2.0.0-rc.2.0.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/{.eslintrc.js → .eslintrc.cjs} +5 -5
- package/{.mocharc.js → .mocharc.cjs} +1 -1
- package/CHANGELOG.md +54 -0
- package/README.md +45 -0
- package/{api-extractor-esm.json → api-extractor-cjs.json} +5 -1
- package/api-extractor-lint.json +1 -1
- package/api-extractor.json +1 -1
- package/api-report/container-runtime.api.md +68 -30
- package/dist/batchTracker.d.ts +1 -2
- package/dist/batchTracker.d.ts.map +1 -1
- package/dist/batchTracker.js.map +1 -1
- package/dist/blobManager.js.map +1 -1
- package/dist/channelCollection.d.ts +223 -0
- package/dist/channelCollection.d.ts.map +1 -0
- package/dist/{dataStores.js → channelCollection.js} +399 -83
- package/dist/channelCollection.js.map +1 -0
- package/dist/connectionTelemetry.d.ts +11 -1
- package/dist/connectionTelemetry.d.ts.map +1 -1
- package/dist/connectionTelemetry.js +42 -4
- package/dist/connectionTelemetry.js.map +1 -1
- package/dist/container-runtime-alpha.d.ts +98 -40
- package/dist/container-runtime-beta.d.ts +27 -9
- package/dist/container-runtime-public.d.ts +27 -9
- package/dist/container-runtime-untrimmed.d.ts +123 -40
- package/dist/containerHandleContext.d.ts +1 -1
- package/dist/containerHandleContext.d.ts.map +1 -1
- package/dist/containerHandleContext.js.map +1 -1
- package/dist/containerRuntime.d.ts +79 -55
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +541 -411
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStore.d.ts +2 -3
- package/dist/dataStore.d.ts.map +1 -1
- package/dist/dataStore.js +12 -11
- package/dist/dataStore.js.map +1 -1
- package/dist/dataStoreContext.d.ts +71 -30
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +182 -141
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStoreContexts.d.ts +1 -1
- package/dist/dataStoreContexts.d.ts.map +1 -1
- package/dist/dataStoreContexts.js.map +1 -1
- package/dist/deltaManagerSummarizerProxy.d.ts +29 -4
- package/dist/deltaManagerSummarizerProxy.d.ts.map +1 -1
- package/dist/deltaManagerSummarizerProxy.js +91 -5
- package/dist/deltaManagerSummarizerProxy.js.map +1 -1
- package/dist/gc/garbageCollection.d.ts +22 -5
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +134 -75
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcConfigs.d.ts +2 -2
- package/dist/gc/gcConfigs.d.ts.map +1 -1
- package/dist/gc/gcConfigs.js +21 -21
- package/dist/gc/gcConfigs.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +29 -6
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js +5 -1
- package/dist/gc/gcDefinitions.js.map +1 -1
- package/dist/gc/gcHelpers.d.ts +2 -2
- package/dist/gc/gcHelpers.d.ts.map +1 -1
- package/dist/gc/gcHelpers.js.map +1 -1
- package/dist/gc/gcReferenceGraphAlgorithm.d.ts +1 -1
- package/dist/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -1
- package/dist/gc/gcReferenceGraphAlgorithm.js.map +1 -1
- package/dist/gc/gcSummaryStateTracker.d.ts +12 -5
- package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/dist/gc/gcSummaryStateTracker.js +18 -6
- package/dist/gc/gcSummaryStateTracker.js.map +1 -1
- package/dist/gc/gcTelemetry.d.ts +7 -7
- package/dist/gc/gcTelemetry.d.ts.map +1 -1
- package/dist/gc/gcTelemetry.js +20 -20
- package/dist/gc/gcTelemetry.js.map +1 -1
- package/dist/gc/gcUnreferencedStateTracker.d.ts +6 -1
- package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
- package/dist/gc/gcUnreferencedStateTracker.js +22 -11
- package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
- package/dist/gc/index.d.ts +8 -8
- package/dist/gc/index.d.ts.map +1 -1
- package/dist/gc/index.js +40 -38
- package/dist/gc/index.js.map +1 -1
- package/dist/index.d.ts +8 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -40
- package/dist/index.js.map +1 -1
- package/dist/messageTypes.d.ts +4 -4
- package/dist/messageTypes.d.ts.map +1 -1
- package/dist/messageTypes.js.map +1 -1
- package/dist/opLifecycle/batchManager.d.ts +2 -2
- package/dist/opLifecycle/batchManager.d.ts.map +1 -1
- package/dist/opLifecycle/batchManager.js.map +1 -1
- package/dist/opLifecycle/definitions.d.ts +2 -2
- package/dist/opLifecycle/definitions.d.ts.map +1 -1
- package/dist/opLifecycle/definitions.js.map +1 -1
- package/dist/opLifecycle/index.d.ts +8 -8
- package/dist/opLifecycle/index.d.ts.map +1 -1
- package/dist/opLifecycle/index.js +18 -18
- package/dist/opLifecycle/index.js.map +1 -1
- package/dist/opLifecycle/opCompressor.d.ts +1 -1
- package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opCompressor.js +4 -4
- 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 +3 -3
- 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 +1 -10
- 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 +5 -5
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +7 -7
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +20 -12
- package/dist/opLifecycle/outbox.js.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.d.ts +4 -4
- package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.js +2 -2
- package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/dist/package.json +3 -0
- 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 +2 -1
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +18 -10
- 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 +5 -5
- package/dist/scheduleManager.js.map +1 -1
- package/dist/summary/index.d.ts +12 -12
- package/dist/summary/index.d.ts.map +1 -1
- package/dist/summary/index.js +43 -43
- package/dist/summary/index.js.map +1 -1
- package/dist/summary/orderedClientElection.js +8 -8
- package/dist/summary/orderedClientElection.js.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.d.ts +1 -1
- package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/dist/summary/runningSummarizer.d.ts +11 -10
- package/dist/summary/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/runningSummarizer.js +114 -81
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summarizer.d.ts +4 -4
- package/dist/summary/summarizer.d.ts.map +1 -1
- package/dist/summary/summarizer.js +6 -6
- package/dist/summary/summarizer.js.map +1 -1
- package/dist/summary/summarizerClientElection.d.ts +2 -2
- package/dist/summary/summarizerClientElection.d.ts.map +1 -1
- package/dist/summary/summarizerClientElection.js.map +1 -1
- package/dist/summary/summarizerHeuristics.d.ts +3 -3
- package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
- package/dist/summary/summarizerHeuristics.js.map +1 -1
- package/dist/summary/summarizerNode/index.d.ts +3 -3
- package/dist/summary/summarizerNode/index.d.ts.map +1 -1
- package/dist/summary/summarizerNode/index.js +4 -4
- package/dist/summary/summarizerNode/index.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.d.ts +17 -7
- package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.js +45 -57
- package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +10 -19
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.js +1 -21
- package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +5 -6
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js +16 -16
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/dist/summary/summarizerTypes.d.ts +10 -21
- package/dist/summary/summarizerTypes.d.ts.map +1 -1
- package/dist/summary/summarizerTypes.js.map +1 -1
- package/dist/summary/summaryFormat.d.ts +15 -2
- package/dist/summary/summaryFormat.d.ts.map +1 -1
- package/dist/summary/summaryFormat.js.map +1 -1
- package/dist/summary/summaryGenerator.d.ts +6 -5
- package/dist/summary/summaryGenerator.d.ts.map +1 -1
- package/dist/summary/summaryGenerator.js +10 -1
- package/dist/summary/summaryGenerator.js.map +1 -1
- package/dist/summary/summaryManager.d.ts +5 -6
- package/dist/summary/summaryManager.d.ts.map +1 -1
- package/dist/summary/summaryManager.js +4 -5
- package/dist/summary/summaryManager.js.map +1 -1
- package/dist/tsdoc-metadata.json +1 -1
- package/lib/{batchTracker.d.mts → batchTracker.d.ts} +2 -3
- package/lib/batchTracker.d.ts.map +1 -0
- package/lib/{batchTracker.mjs → batchTracker.js} +1 -1
- package/lib/batchTracker.js.map +1 -0
- package/lib/{blobManager.d.mts → blobManager.d.ts} +1 -1
- package/lib/blobManager.d.ts.map +1 -0
- package/lib/{blobManager.mjs → blobManager.js} +1 -1
- package/lib/blobManager.js.map +1 -0
- package/lib/channelCollection.d.ts +223 -0
- package/lib/channelCollection.d.ts.map +1 -0
- package/lib/{dataStores.mjs → channelCollection.js} +384 -71
- package/lib/channelCollection.js.map +1 -0
- package/lib/{connectionTelemetry.d.mts → connectionTelemetry.d.ts} +12 -2
- package/lib/connectionTelemetry.d.ts.map +1 -0
- package/lib/{connectionTelemetry.mjs → connectionTelemetry.js} +43 -5
- package/lib/connectionTelemetry.js.map +1 -0
- package/lib/{container-runtime-alpha.d.mts → container-runtime-alpha.d.ts} +98 -40
- package/lib/{container-runtime-public.d.mts → container-runtime-beta.d.ts} +27 -9
- package/lib/{container-runtime-beta.d.mts → container-runtime-public.d.ts} +27 -9
- package/lib/{container-runtime-untrimmed.d.mts → container-runtime-untrimmed.d.ts} +123 -40
- package/lib/{containerHandleContext.d.mts → containerHandleContext.d.ts} +2 -2
- package/lib/containerHandleContext.d.ts.map +1 -0
- package/lib/{containerHandleContext.mjs → containerHandleContext.js} +1 -1
- package/lib/containerHandleContext.js.map +1 -0
- package/lib/{containerRuntime.d.mts → containerRuntime.d.ts} +84 -56
- package/lib/containerRuntime.d.ts.map +1 -0
- package/lib/{containerRuntime.mjs → containerRuntime.js} +460 -332
- package/lib/containerRuntime.js.map +1 -0
- package/lib/{dataStore.d.mts → dataStore.d.ts} +3 -4
- package/lib/dataStore.d.ts.map +1 -0
- package/lib/{dataStore.mjs → dataStore.js} +13 -12
- package/lib/dataStore.js.map +1 -0
- package/lib/{dataStoreContext.d.mts → dataStoreContext.d.ts} +72 -31
- package/lib/dataStoreContext.d.ts.map +1 -0
- package/lib/{dataStoreContext.mjs → dataStoreContext.js} +174 -133
- package/lib/dataStoreContext.js.map +1 -0
- package/lib/{dataStoreContexts.d.mts → dataStoreContexts.d.ts} +2 -2
- package/lib/dataStoreContexts.d.ts.map +1 -0
- package/lib/{dataStoreContexts.mjs → dataStoreContexts.js} +1 -1
- package/lib/dataStoreContexts.js.map +1 -0
- package/lib/{dataStoreRegistry.d.mts → dataStoreRegistry.d.ts} +1 -1
- package/lib/dataStoreRegistry.d.ts.map +1 -0
- package/lib/{dataStoreRegistry.mjs → dataStoreRegistry.js} +5 -1
- package/lib/dataStoreRegistry.js.map +1 -0
- package/{dist/deltaManagerProxyBase.d.ts → lib/deltaManagerSummarizerProxy.d.ts} +16 -7
- package/lib/deltaManagerSummarizerProxy.d.ts.map +1 -0
- package/lib/deltaManagerSummarizerProxy.js +124 -0
- package/lib/deltaManagerSummarizerProxy.js.map +1 -0
- package/lib/{deltaScheduler.d.mts → deltaScheduler.d.ts} +1 -1
- package/lib/deltaScheduler.d.ts.map +1 -0
- package/lib/{deltaScheduler.mjs → deltaScheduler.js} +1 -1
- package/lib/deltaScheduler.js.map +1 -0
- package/lib/{error.d.mts → error.d.ts} +1 -1
- package/lib/error.d.ts.map +1 -0
- package/lib/{error.mjs → error.js} +1 -1
- package/lib/error.js.map +1 -0
- package/lib/gc/{garbageCollection.d.mts → garbageCollection.d.ts} +23 -6
- package/lib/gc/garbageCollection.d.ts.map +1 -0
- package/lib/gc/{garbageCollection.mjs → garbageCollection.js} +103 -44
- package/lib/gc/garbageCollection.js.map +1 -0
- package/lib/gc/{gcConfigs.d.mts → gcConfigs.d.ts} +3 -3
- package/lib/gc/gcConfigs.d.ts.map +1 -0
- package/lib/gc/{gcConfigs.mjs → gcConfigs.js} +3 -3
- package/lib/gc/gcConfigs.js.map +1 -0
- package/lib/gc/{gcDefinitions.d.mts → gcDefinitions.d.ts} +30 -7
- package/lib/gc/gcDefinitions.d.ts.map +1 -0
- package/lib/gc/{gcDefinitions.mjs → gcDefinitions.js} +5 -1
- package/lib/gc/gcDefinitions.js.map +1 -0
- package/lib/gc/{gcHelpers.d.mts → gcHelpers.d.ts} +3 -3
- package/lib/gc/{gcHelpers.d.mts.map → gcHelpers.d.ts.map} +1 -1
- package/lib/gc/{gcHelpers.mjs → gcHelpers.js} +1 -1
- package/lib/gc/gcHelpers.js.map +1 -0
- package/lib/gc/{gcReferenceGraphAlgorithm.d.mts → gcReferenceGraphAlgorithm.d.ts} +2 -2
- package/lib/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -0
- package/lib/gc/{gcReferenceGraphAlgorithm.mjs → gcReferenceGraphAlgorithm.js} +1 -1
- package/lib/gc/gcReferenceGraphAlgorithm.js.map +1 -0
- package/lib/gc/{gcSummaryDefinitions.d.mts → gcSummaryDefinitions.d.ts} +1 -1
- package/lib/gc/gcSummaryDefinitions.d.ts.map +1 -0
- package/lib/gc/{gcSummaryDefinitions.mjs → gcSummaryDefinitions.js} +1 -1
- package/lib/gc/gcSummaryDefinitions.js.map +1 -0
- package/lib/gc/{gcSummaryStateTracker.d.mts → gcSummaryStateTracker.d.ts} +13 -6
- package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -0
- package/lib/gc/{gcSummaryStateTracker.mjs → gcSummaryStateTracker.js} +17 -5
- package/lib/gc/gcSummaryStateTracker.js.map +1 -0
- package/lib/gc/{gcTelemetry.d.mts → gcTelemetry.d.ts} +8 -8
- package/lib/gc/gcTelemetry.d.ts.map +1 -0
- package/lib/gc/{gcTelemetry.mjs → gcTelemetry.js} +5 -5
- package/lib/gc/gcTelemetry.js.map +1 -0
- package/lib/gc/{gcUnreferencedStateTracker.d.mts → gcUnreferencedStateTracker.d.ts} +7 -2
- package/lib/gc/gcUnreferencedStateTracker.d.ts.map +1 -0
- package/lib/gc/{gcUnreferencedStateTracker.mjs → gcUnreferencedStateTracker.js} +12 -2
- package/lib/gc/gcUnreferencedStateTracker.js.map +1 -0
- package/lib/gc/{index.d.mts → index.d.ts} +9 -9
- package/lib/gc/index.d.ts.map +1 -0
- package/lib/gc/{index.mjs → index.js} +8 -8
- package/lib/gc/index.js.map +1 -0
- package/lib/{index.d.mts → index.d.ts} +9 -21
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +12 -0
- package/lib/index.js.map +1 -0
- package/lib/{messageTypes.d.mts → messageTypes.d.ts} +5 -5
- package/lib/messageTypes.d.ts.map +1 -0
- package/lib/{messageTypes.mjs → messageTypes.js} +1 -1
- package/lib/messageTypes.js.map +1 -0
- package/lib/{metadata.d.mts → metadata.d.ts} +1 -1
- package/lib/metadata.d.ts.map +1 -0
- package/lib/{metadata.mjs → metadata.js} +1 -1
- package/lib/metadata.js.map +1 -0
- package/lib/opLifecycle/{batchManager.d.mts → batchManager.d.ts} +3 -3
- package/lib/opLifecycle/batchManager.d.ts.map +1 -0
- package/lib/opLifecycle/{batchManager.mjs → batchManager.js} +1 -1
- package/lib/opLifecycle/batchManager.js.map +1 -0
- package/lib/opLifecycle/{definitions.d.mts → definitions.d.ts} +3 -3
- package/lib/opLifecycle/definitions.d.ts.map +1 -0
- package/lib/opLifecycle/{definitions.mjs → definitions.js} +1 -1
- package/lib/opLifecycle/definitions.js.map +1 -0
- package/lib/opLifecycle/index.d.ts +13 -0
- package/lib/opLifecycle/index.d.ts.map +1 -0
- package/lib/opLifecycle/index.js +12 -0
- package/lib/opLifecycle/index.js.map +1 -0
- package/lib/opLifecycle/{opCompressor.d.mts → opCompressor.d.ts} +2 -2
- package/lib/opLifecycle/opCompressor.d.ts.map +1 -0
- package/lib/opLifecycle/{opCompressor.mjs → opCompressor.js} +3 -3
- package/lib/opLifecycle/opCompressor.js.map +1 -0
- package/lib/opLifecycle/{opDecompressor.d.mts → opDecompressor.d.ts} +2 -2
- package/lib/opLifecycle/opDecompressor.d.ts.map +1 -0
- package/lib/opLifecycle/{opDecompressor.mjs → opDecompressor.js} +2 -2
- package/lib/opLifecycle/opDecompressor.js.map +1 -0
- package/lib/opLifecycle/{opGroupingManager.d.mts → opGroupingManager.d.ts} +2 -2
- package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -0
- package/lib/opLifecycle/{opGroupingManager.mjs → opGroupingManager.js} +2 -11
- package/lib/opLifecycle/opGroupingManager.js.map +1 -0
- package/lib/opLifecycle/{opSplitter.d.mts → opSplitter.d.ts} +2 -2
- package/lib/opLifecycle/opSplitter.d.ts.map +1 -0
- package/lib/opLifecycle/{opSplitter.mjs → opSplitter.js} +3 -3
- package/lib/opLifecycle/opSplitter.js.map +1 -0
- package/lib/opLifecycle/{outbox.d.mts → outbox.d.ts} +8 -8
- package/lib/opLifecycle/outbox.d.ts.map +1 -0
- package/lib/opLifecycle/{outbox.mjs → outbox.js} +12 -4
- package/lib/opLifecycle/outbox.js.map +1 -0
- package/lib/opLifecycle/{remoteMessageProcessor.d.mts → remoteMessageProcessor.d.ts} +5 -5
- package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -0
- package/lib/opLifecycle/{remoteMessageProcessor.mjs → remoteMessageProcessor.js} +2 -2
- package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -0
- package/lib/{opProperties.d.mts → opProperties.d.ts} +1 -1
- package/lib/opProperties.d.ts.map +1 -0
- package/lib/{opProperties.mjs → opProperties.js} +1 -1
- package/lib/opProperties.js.map +1 -0
- package/lib/{packageVersion.d.mts → packageVersion.d.ts} +2 -2
- package/lib/packageVersion.d.ts.map +1 -0
- package/lib/{packageVersion.mjs → packageVersion.js} +2 -2
- package/lib/packageVersion.js.map +1 -0
- package/lib/{pendingStateManager.d.mts → pendingStateManager.d.ts} +3 -2
- package/lib/pendingStateManager.d.ts.map +1 -0
- package/lib/{pendingStateManager.mjs → pendingStateManager.js} +18 -10
- package/lib/pendingStateManager.js.map +1 -0
- package/lib/{scheduleManager.d.mts → scheduleManager.d.ts} +6 -3
- package/lib/scheduleManager.d.ts.map +1 -0
- package/lib/{scheduleManager.mjs → scheduleManager.js} +3 -3
- package/lib/scheduleManager.js.map +1 -0
- package/lib/{storageServiceWithAttachBlobs.d.mts → storageServiceWithAttachBlobs.d.ts} +1 -1
- package/lib/storageServiceWithAttachBlobs.d.ts.map +1 -0
- package/lib/{storageServiceWithAttachBlobs.mjs → storageServiceWithAttachBlobs.js} +1 -1
- package/lib/storageServiceWithAttachBlobs.js.map +1 -0
- package/lib/summary/{index.d.mts → index.d.ts} +13 -13
- package/lib/summary/index.d.ts.map +1 -0
- package/lib/summary/{index.mjs → index.js} +12 -12
- package/lib/summary/index.js.map +1 -0
- package/lib/summary/{orderedClientElection.d.mts → orderedClientElection.d.ts} +5 -1
- package/lib/summary/orderedClientElection.d.ts.map +1 -0
- package/lib/summary/{orderedClientElection.mjs → orderedClientElection.js} +2 -2
- package/lib/summary/orderedClientElection.js.map +1 -0
- package/lib/summary/{runWhileConnectedCoordinator.d.mts → runWhileConnectedCoordinator.d.ts} +2 -2
- package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -0
- package/lib/summary/{runWhileConnectedCoordinator.mjs → runWhileConnectedCoordinator.js} +1 -1
- package/lib/summary/runWhileConnectedCoordinator.js.map +1 -0
- package/lib/summary/{runningSummarizer.d.mts → runningSummarizer.d.ts} +12 -11
- package/lib/summary/runningSummarizer.d.ts.map +1 -0
- package/lib/summary/{runningSummarizer.mjs → runningSummarizer.js} +108 -75
- package/lib/summary/runningSummarizer.js.map +1 -0
- package/lib/summary/{summarizer.d.mts → summarizer.d.ts} +5 -5
- package/lib/summary/summarizer.d.ts.map +1 -0
- package/lib/summary/{summarizer.mjs → summarizer.js} +4 -4
- package/lib/summary/summarizer.js.map +1 -0
- package/lib/summary/{summarizerClientElection.d.mts → summarizerClientElection.d.ts} +3 -3
- package/lib/summary/summarizerClientElection.d.ts.map +1 -0
- package/lib/summary/{summarizerClientElection.mjs → summarizerClientElection.js} +1 -1
- package/lib/summary/summarizerClientElection.js.map +1 -0
- package/lib/summary/{summarizerHeuristics.d.mts → summarizerHeuristics.d.ts} +4 -4
- package/lib/summary/summarizerHeuristics.d.ts.map +1 -0
- package/lib/summary/{summarizerHeuristics.mjs → summarizerHeuristics.js} +1 -1
- package/lib/summary/summarizerHeuristics.js.map +1 -0
- package/lib/summary/summarizerNode/{index.d.mts → index.d.ts} +4 -4
- package/lib/summary/summarizerNode/index.d.ts.map +1 -0
- package/lib/summary/summarizerNode/index.js +7 -0
- package/lib/summary/summarizerNode/index.js.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNode.d.mts → summarizerNode.d.ts} +18 -8
- package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNode.mjs → summarizerNode.js} +41 -53
- package/lib/summary/summarizerNode/summarizerNode.js.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNodeUtils.d.mts → summarizerNodeUtils.d.ts} +11 -20
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNodeUtils.mjs → summarizerNodeUtils.js} +1 -20
- package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNodeWithGc.d.mts → summarizerNodeWithGc.d.ts} +6 -7
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNodeWithGc.mjs → summarizerNodeWithGc.js} +12 -12
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -0
- package/lib/summary/{summarizerTypes.d.mts → summarizerTypes.d.ts} +11 -22
- package/lib/summary/summarizerTypes.d.ts.map +1 -0
- package/lib/summary/{summarizerTypes.mjs → summarizerTypes.js} +1 -1
- package/lib/summary/summarizerTypes.js.map +1 -0
- package/lib/summary/{summaryCollection.d.mts → summaryCollection.d.ts} +1 -1
- package/lib/summary/summaryCollection.d.ts.map +1 -0
- package/lib/summary/{summaryCollection.mjs → summaryCollection.js} +1 -1
- package/lib/summary/summaryCollection.js.map +1 -0
- package/lib/summary/{summaryFormat.d.mts → summaryFormat.d.ts} +16 -3
- package/lib/summary/summaryFormat.d.ts.map +1 -0
- package/lib/summary/{summaryFormat.mjs → summaryFormat.js} +1 -1
- package/lib/summary/summaryFormat.js.map +1 -0
- package/lib/summary/{summaryGenerator.d.mts → summaryGenerator.d.ts} +7 -6
- package/lib/summary/summaryGenerator.d.ts.map +1 -0
- package/lib/summary/{summaryGenerator.mjs → summaryGenerator.js} +11 -2
- package/lib/summary/summaryGenerator.js.map +1 -0
- package/lib/summary/{summaryManager.d.mts → summaryManager.d.ts} +6 -7
- package/lib/summary/summaryManager.d.ts.map +1 -0
- package/lib/summary/{summaryManager.mjs → summaryManager.js} +4 -5
- package/lib/summary/summaryManager.js.map +1 -0
- package/lib/test/batchTracker.spec.js +88 -0
- package/lib/test/batchTracker.spec.js.map +1 -0
- package/lib/test/blobManager.spec.js +835 -0
- package/lib/test/blobManager.spec.js.map +1 -0
- package/lib/test/channelCollection.spec.js +141 -0
- package/lib/test/channelCollection.spec.js.map +1 -0
- package/lib/test/containerRuntime.spec.js +1748 -0
- package/lib/test/containerRuntime.spec.js.map +1 -0
- package/lib/test/dataStoreContext.spec.js +801 -0
- package/lib/test/dataStoreContext.spec.js.map +1 -0
- package/lib/test/dataStoreCreation.spec.js +312 -0
- package/lib/test/dataStoreCreation.spec.js.map +1 -0
- package/lib/test/dataStoreRegistry.spec.js +26 -0
- package/lib/test/dataStoreRegistry.spec.js.map +1 -0
- package/lib/test/fuzz/fuzzUtils.js +66 -0
- package/lib/test/fuzz/fuzzUtils.js.map +1 -0
- package/lib/test/fuzz/summarizer.fuzz.spec.js +31 -0
- package/lib/test/fuzz/summarizer.fuzz.spec.js.map +1 -0
- package/lib/test/fuzz/summarizerFuzzMocks.js +162 -0
- package/lib/test/fuzz/summarizerFuzzMocks.js.map +1 -0
- package/lib/test/fuzz/summarizerFuzzSuite.js +106 -0
- package/lib/test/fuzz/summarizerFuzzSuite.js.map +1 -0
- package/lib/test/gc/garbageCollection.spec.js +1465 -0
- package/lib/test/gc/garbageCollection.spec.js.map +1 -0
- package/lib/test/gc/gcConfigs.spec.js +690 -0
- package/lib/test/gc/gcConfigs.spec.js.map +1 -0
- package/lib/test/gc/gcHelpers.spec.js +110 -0
- package/lib/test/gc/gcHelpers.spec.js.map +1 -0
- package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js +68 -0
- package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js.map +1 -0
- package/lib/test/gc/gcStats.spec.js +391 -0
- package/lib/test/gc/gcStats.spec.js.map +1 -0
- package/lib/test/gc/gcSummaryStateTracker.spec.js +228 -0
- package/lib/test/gc/gcSummaryStateTracker.spec.js.map +1 -0
- package/lib/test/gc/gcTelemetry.spec.js +530 -0
- package/lib/test/gc/gcTelemetry.spec.js.map +1 -0
- package/lib/test/gc/gcUnitTestHelpers.js +29 -0
- package/lib/test/gc/gcUnitTestHelpers.js.map +1 -0
- package/lib/test/gc/gcUnreferencedStateTracker.spec.js +192 -0
- package/lib/test/gc/gcUnreferencedStateTracker.spec.js.map +1 -0
- package/lib/test/getPendingBlobs.spec.js +193 -0
- package/lib/test/getPendingBlobs.spec.js.map +1 -0
- package/lib/test/hardwareStats.spec.js +93 -0
- package/lib/test/hardwareStats.spec.js.map +1 -0
- package/lib/test/index.js +6 -0
- package/lib/test/index.js.map +1 -0
- package/lib/test/opLifecycle/OpGroupingManager.spec.js +225 -0
- package/lib/test/opLifecycle/OpGroupingManager.spec.js.map +1 -0
- package/lib/test/opLifecycle/batchManager.spec.js +189 -0
- package/lib/test/opLifecycle/batchManager.spec.js.map +1 -0
- package/lib/test/opLifecycle/opCompressor.spec.js +74 -0
- package/lib/test/opLifecycle/opCompressor.spec.js.map +1 -0
- package/lib/test/opLifecycle/opDecompressor.spec.js +218 -0
- package/lib/test/opLifecycle/opDecompressor.spec.js.map +1 -0
- package/lib/test/opLifecycle/opSplitter.spec.js +272 -0
- package/lib/test/opLifecycle/opSplitter.spec.js.map +1 -0
- package/lib/test/opLifecycle/outbox.spec.js +675 -0
- package/lib/test/opLifecycle/outbox.spec.js.map +1 -0
- package/lib/test/opLifecycle/remoteMessageProcessor.spec.js +196 -0
- package/lib/test/opLifecycle/remoteMessageProcessor.spec.js.map +1 -0
- package/lib/test/pendingStateManager.spec.js +329 -0
- package/lib/test/pendingStateManager.spec.js.map +1 -0
- package/lib/test/scheduleManager.spec.js +270 -0
- package/lib/test/scheduleManager.spec.js.map +1 -0
- package/lib/test/summarizerNode.spec.js +326 -0
- package/lib/test/summarizerNode.spec.js.map +1 -0
- package/lib/test/summarizerNodeWithGc.spec.js +318 -0
- package/lib/test/summarizerNodeWithGc.spec.js.map +1 -0
- package/lib/test/summary/orderedClientElection.spec.js +535 -0
- package/lib/test/summary/orderedClientElection.spec.js.map +1 -0
- package/lib/test/summary/runningSummarizer.spec.js +1349 -0
- package/lib/test/summary/runningSummarizer.spec.js.map +1 -0
- package/lib/test/summary/summarizer.spec.js +29 -0
- package/lib/test/summary/summarizer.spec.js.map +1 -0
- package/lib/test/summary/summarizerClientElection.spec.js +436 -0
- package/lib/test/summary/summarizerClientElection.spec.js.map +1 -0
- package/lib/test/summary/summarizerHeuristics.spec.js +289 -0
- package/lib/test/summary/summarizerHeuristics.spec.js.map +1 -0
- package/lib/test/summary/summaryCollection.spec.js +200 -0
- package/lib/test/summary/summaryCollection.spec.js.map +1 -0
- package/lib/test/summary/summaryManager.spec.js +430 -0
- package/lib/test/summary/summaryManager.spec.js.map +1 -0
- package/lib/test/summary/testQuorumClients.js +34 -0
- package/lib/test/summary/testQuorumClients.js.map +1 -0
- package/lib/test/throttler.spec.js +175 -0
- package/lib/test/throttler.spec.js.map +1 -0
- package/lib/test/types/validateContainerRuntimePrevious.generated.js +180 -0
- package/lib/test/types/validateContainerRuntimePrevious.generated.js.map +1 -0
- package/lib/{throttler.d.mts → throttler.d.ts} +1 -1
- package/lib/throttler.d.ts.map +1 -0
- package/lib/{throttler.mjs → throttler.js} +1 -1
- package/lib/throttler.js.map +1 -0
- package/package.json +99 -88
- package/src/batchTracker.ts +1 -1
- package/src/blobManager.ts +1 -1
- package/src/{dataStores.ts → channelCollection.ts} +520 -84
- package/src/connectionTelemetry.ts +42 -3
- package/src/containerHandleContext.ts +1 -1
- package/src/containerRuntime.ts +661 -464
- package/src/dataStore.ts +13 -15
- package/src/dataStoreContext.ts +257 -184
- package/src/dataStoreContexts.ts +1 -1
- package/src/deltaManagerSummarizerProxy.ts +132 -7
- package/src/gc/garbageCollection.ts +121 -46
- package/src/gc/gcConfigs.ts +3 -3
- package/src/gc/gcDefinitions.ts +30 -7
- package/src/gc/gcHelpers.ts +2 -2
- package/src/gc/gcReferenceGraphAlgorithm.ts +1 -1
- package/src/gc/gcSummaryStateTracker.ts +19 -7
- package/src/gc/gcTelemetry.ts +10 -9
- package/src/gc/gcUnreferencedStateTracker.ts +12 -1
- package/src/gc/index.ts +10 -8
- package/src/index.ts +16 -27
- package/src/messageTypes.ts +4 -4
- package/src/opLifecycle/README.md +2 -4
- package/src/opLifecycle/batchManager.ts +2 -2
- package/src/opLifecycle/definitions.ts +2 -2
- package/src/opLifecycle/index.ts +8 -8
- package/src/opLifecycle/opCompressor.ts +3 -3
- package/src/opLifecycle/opDecompressor.ts +3 -3
- package/src/opLifecycle/opGroupingManager.ts +3 -12
- package/src/opLifecycle/opSplitter.ts +3 -3
- package/src/opLifecycle/outbox.ts +29 -9
- package/src/opLifecycle/remoteMessageProcessor.ts +4 -4
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +19 -13
- package/src/scheduleManager.ts +4 -4
- package/src/summary/index.ts +13 -12
- package/src/summary/orderedClientElection.ts +1 -1
- package/src/summary/runWhileConnectedCoordinator.ts +1 -1
- package/src/summary/runningSummarizer.ts +141 -93
- package/src/summary/summarizer.ts +7 -7
- package/src/summary/summarizerClientElection.ts +2 -2
- package/src/summary/summarizerHeuristics.ts +3 -3
- package/src/summary/summarizerNode/index.ts +6 -3
- package/src/summary/summarizerNode/summarizerNode.ts +54 -69
- package/src/summary/summarizerNode/summarizerNodeUtils.ts +16 -34
- package/src/summary/summarizerNode/summarizerNodeWithGc.ts +11 -17
- package/src/summary/summarizerTypes.ts +12 -24
- package/src/summary/summaryFormat.ts +16 -2
- package/src/summary/summaryGenerator.ts +16 -4
- package/src/summary/summaryManager.ts +6 -7
- package/tsconfig.cjs.json +7 -0
- package/tsconfig.json +2 -5
- package/dist/dataStores.d.ts +0 -149
- package/dist/dataStores.d.ts.map +0 -1
- package/dist/dataStores.js.map +0 -1
- package/dist/deltaManagerProxyBase.d.ts.map +0 -1
- package/dist/deltaManagerProxyBase.js +0 -77
- package/dist/deltaManagerProxyBase.js.map +0 -1
- package/lib/batchTracker.d.mts.map +0 -1
- package/lib/batchTracker.mjs.map +0 -1
- package/lib/blobManager.d.mts.map +0 -1
- package/lib/blobManager.mjs.map +0 -1
- package/lib/connectionTelemetry.d.mts.map +0 -1
- package/lib/connectionTelemetry.mjs.map +0 -1
- package/lib/containerHandleContext.d.mts.map +0 -1
- package/lib/containerHandleContext.mjs.map +0 -1
- package/lib/containerRuntime.d.mts.map +0 -1
- package/lib/containerRuntime.mjs.map +0 -1
- package/lib/dataStore.d.mts.map +0 -1
- package/lib/dataStore.mjs.map +0 -1
- package/lib/dataStoreContext.d.mts.map +0 -1
- package/lib/dataStoreContext.mjs.map +0 -1
- package/lib/dataStoreContexts.d.mts.map +0 -1
- package/lib/dataStoreContexts.mjs.map +0 -1
- package/lib/dataStoreRegistry.d.mts.map +0 -1
- package/lib/dataStoreRegistry.mjs.map +0 -1
- package/lib/dataStores.d.mts +0 -149
- package/lib/dataStores.d.mts.map +0 -1
- package/lib/dataStores.mjs.map +0 -1
- package/lib/deltaManagerProxyBase.d.mts +0 -35
- package/lib/deltaManagerProxyBase.d.mts.map +0 -1
- package/lib/deltaManagerProxyBase.mjs +0 -73
- package/lib/deltaManagerProxyBase.mjs.map +0 -1
- package/lib/deltaManagerSummarizerProxy.d.mts +0 -19
- package/lib/deltaManagerSummarizerProxy.d.mts.map +0 -1
- package/lib/deltaManagerSummarizerProxy.mjs +0 -38
- package/lib/deltaManagerSummarizerProxy.mjs.map +0 -1
- package/lib/deltaScheduler.d.mts.map +0 -1
- package/lib/deltaScheduler.mjs.map +0 -1
- package/lib/error.d.mts.map +0 -1
- package/lib/error.mjs.map +0 -1
- package/lib/gc/garbageCollection.d.mts.map +0 -1
- package/lib/gc/garbageCollection.mjs.map +0 -1
- package/lib/gc/gcConfigs.d.mts.map +0 -1
- package/lib/gc/gcConfigs.mjs.map +0 -1
- package/lib/gc/gcDefinitions.d.mts.map +0 -1
- package/lib/gc/gcDefinitions.mjs.map +0 -1
- package/lib/gc/gcHelpers.mjs.map +0 -1
- package/lib/gc/gcReferenceGraphAlgorithm.d.mts.map +0 -1
- package/lib/gc/gcReferenceGraphAlgorithm.mjs.map +0 -1
- package/lib/gc/gcSummaryDefinitions.d.mts.map +0 -1
- package/lib/gc/gcSummaryDefinitions.mjs.map +0 -1
- package/lib/gc/gcSummaryStateTracker.d.mts.map +0 -1
- package/lib/gc/gcSummaryStateTracker.mjs.map +0 -1
- package/lib/gc/gcTelemetry.d.mts.map +0 -1
- package/lib/gc/gcTelemetry.mjs.map +0 -1
- package/lib/gc/gcUnreferencedStateTracker.d.mts.map +0 -1
- package/lib/gc/gcUnreferencedStateTracker.mjs.map +0 -1
- package/lib/gc/index.d.mts.map +0 -1
- package/lib/gc/index.mjs.map +0 -1
- package/lib/index.d.mts.map +0 -1
- package/lib/index.mjs +0 -24
- package/lib/index.mjs.map +0 -1
- package/lib/messageTypes.d.mts.map +0 -1
- package/lib/messageTypes.mjs.map +0 -1
- package/lib/metadata.d.mts.map +0 -1
- package/lib/metadata.mjs.map +0 -1
- package/lib/opLifecycle/batchManager.d.mts.map +0 -1
- package/lib/opLifecycle/batchManager.mjs.map +0 -1
- package/lib/opLifecycle/definitions.d.mts.map +0 -1
- package/lib/opLifecycle/definitions.mjs.map +0 -1
- package/lib/opLifecycle/index.d.mts +0 -13
- package/lib/opLifecycle/index.d.mts.map +0 -1
- package/lib/opLifecycle/index.mjs +0 -12
- package/lib/opLifecycle/index.mjs.map +0 -1
- package/lib/opLifecycle/opCompressor.d.mts.map +0 -1
- package/lib/opLifecycle/opCompressor.mjs.map +0 -1
- package/lib/opLifecycle/opDecompressor.d.mts.map +0 -1
- package/lib/opLifecycle/opDecompressor.mjs.map +0 -1
- package/lib/opLifecycle/opGroupingManager.d.mts.map +0 -1
- package/lib/opLifecycle/opGroupingManager.mjs.map +0 -1
- package/lib/opLifecycle/opSplitter.d.mts.map +0 -1
- package/lib/opLifecycle/opSplitter.mjs.map +0 -1
- package/lib/opLifecycle/outbox.d.mts.map +0 -1
- package/lib/opLifecycle/outbox.mjs.map +0 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.mts.map +0 -1
- package/lib/opLifecycle/remoteMessageProcessor.mjs.map +0 -1
- package/lib/opProperties.d.mts.map +0 -1
- package/lib/opProperties.mjs.map +0 -1
- package/lib/packageVersion.d.mts.map +0 -1
- package/lib/packageVersion.mjs.map +0 -1
- package/lib/pendingStateManager.d.mts.map +0 -1
- package/lib/pendingStateManager.mjs.map +0 -1
- package/lib/scheduleManager.d.mts.map +0 -1
- package/lib/scheduleManager.mjs.map +0 -1
- package/lib/storageServiceWithAttachBlobs.d.mts.map +0 -1
- package/lib/storageServiceWithAttachBlobs.mjs.map +0 -1
- package/lib/summary/index.d.mts.map +0 -1
- package/lib/summary/index.mjs.map +0 -1
- package/lib/summary/orderedClientElection.d.mts.map +0 -1
- package/lib/summary/orderedClientElection.mjs.map +0 -1
- package/lib/summary/runWhileConnectedCoordinator.d.mts.map +0 -1
- package/lib/summary/runWhileConnectedCoordinator.mjs.map +0 -1
- package/lib/summary/runningSummarizer.d.mts.map +0 -1
- package/lib/summary/runningSummarizer.mjs.map +0 -1
- package/lib/summary/summarizer.d.mts.map +0 -1
- package/lib/summary/summarizer.mjs.map +0 -1
- package/lib/summary/summarizerClientElection.d.mts.map +0 -1
- package/lib/summary/summarizerClientElection.mjs.map +0 -1
- package/lib/summary/summarizerHeuristics.d.mts.map +0 -1
- package/lib/summary/summarizerHeuristics.mjs.map +0 -1
- package/lib/summary/summarizerNode/index.d.mts.map +0 -1
- package/lib/summary/summarizerNode/index.mjs +0 -7
- package/lib/summary/summarizerNode/index.mjs.map +0 -1
- package/lib/summary/summarizerNode/summarizerNode.d.mts.map +0 -1
- package/lib/summary/summarizerNode/summarizerNode.mjs.map +0 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.mts.map +0 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.mjs.map +0 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.mts.map +0 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.mjs.map +0 -1
- package/lib/summary/summarizerTypes.d.mts.map +0 -1
- package/lib/summary/summarizerTypes.mjs.map +0 -1
- package/lib/summary/summaryCollection.d.mts.map +0 -1
- package/lib/summary/summaryCollection.mjs.map +0 -1
- package/lib/summary/summaryFormat.d.mts.map +0 -1
- package/lib/summary/summaryFormat.mjs.map +0 -1
- package/lib/summary/summaryGenerator.d.mts.map +0 -1
- package/lib/summary/summaryGenerator.mjs.map +0 -1
- package/lib/summary/summaryManager.d.mts.map +0 -1
- package/lib/summary/summaryManager.mjs.map +0 -1
- package/lib/throttler.d.mts.map +0 -1
- package/lib/throttler.mjs.map +0 -1
- package/src/deltaManagerProxyBase.ts +0 -111
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
import { AttachState
|
|
5
|
+
import { AttachState } from "@fluidframework/container-definitions";
|
|
6
6
|
import { TypedEventEmitter } from "@fluid-internal/client-utils";
|
|
7
|
-
import { assert,
|
|
7
|
+
import { assert, LazyPromise } from "@fluidframework/core-utils";
|
|
8
8
|
import { BlobTreeEntry, readAndParse } from "@fluidframework/driver-utils";
|
|
9
|
-
import { channelsTreeName,
|
|
10
|
-
import { addBlobToSummary
|
|
9
|
+
import { channelsTreeName, gcDataBlobKey, } from "@fluidframework/runtime-definitions";
|
|
10
|
+
import { addBlobToSummary } from "@fluidframework/runtime-utils";
|
|
11
11
|
import { createChildMonitoringContext, DataCorruptionError, DataProcessingError, extractSafePropertiesFromMessage, generateStack, LoggingError, tagCodeArtifacts, ThresholdCounter, } from "@fluidframework/telemetry-utils";
|
|
12
|
-
import { dataStoreAttributesBlobName, hasIsolatedChannels, wrapSummaryInChannelsTree, getAttributesFormatVersion, getFluidDataStoreAttributes, summarizerClientType, } from "./summary/index.
|
|
13
|
-
import { detectOutboundRoutesViaDDSKey, sendGCUnexpectedUsageEvent } from "./gc/index.
|
|
12
|
+
import { dataStoreAttributesBlobName, hasIsolatedChannels, wrapSummaryInChannelsTree, getAttributesFormatVersion, getFluidDataStoreAttributes, summarizerClientType, } from "./summary/index.js";
|
|
13
|
+
import { detectOutboundRoutesViaDDSKey, sendGCUnexpectedUsageEvent } from "./gc/index.js";
|
|
14
14
|
function createAttributes(pkg, isRootDataStore) {
|
|
15
15
|
const stringifiedPkg = JSON.stringify(pkg);
|
|
16
16
|
return {
|
|
@@ -32,31 +32,31 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
32
32
|
return this.pkg;
|
|
33
33
|
}
|
|
34
34
|
get options() {
|
|
35
|
-
return this.
|
|
35
|
+
return this.parentContext.options;
|
|
36
36
|
}
|
|
37
37
|
get clientId() {
|
|
38
|
-
return this.
|
|
38
|
+
return this.parentContext.clientId;
|
|
39
39
|
}
|
|
40
40
|
get clientDetails() {
|
|
41
|
-
return this.
|
|
41
|
+
return this.parentContext.clientDetails;
|
|
42
42
|
}
|
|
43
43
|
get logger() {
|
|
44
|
-
return this.
|
|
44
|
+
return this.parentContext.logger;
|
|
45
45
|
}
|
|
46
46
|
get deltaManager() {
|
|
47
|
-
return this.
|
|
47
|
+
return this.parentContext.deltaManager;
|
|
48
48
|
}
|
|
49
49
|
get connected() {
|
|
50
|
-
return this.
|
|
50
|
+
return this.parentContext.connected;
|
|
51
51
|
}
|
|
52
52
|
get IFluidHandleContext() {
|
|
53
|
-
return this.
|
|
53
|
+
return this.parentContext.IFluidHandleContext;
|
|
54
54
|
}
|
|
55
55
|
get containerRuntime() {
|
|
56
56
|
return this._containerRuntime;
|
|
57
57
|
}
|
|
58
58
|
ensureNoDataModelChanges(callback) {
|
|
59
|
-
return this.
|
|
59
|
+
return this.parentContext.ensureNoDataModelChanges(callback);
|
|
60
60
|
}
|
|
61
61
|
get isLoaded() {
|
|
62
62
|
return this.loaded;
|
|
@@ -65,7 +65,7 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
65
65
|
return this._baseSnapshot;
|
|
66
66
|
}
|
|
67
67
|
get idCompressor() {
|
|
68
|
-
return this.
|
|
68
|
+
return this.parentContext.idCompressor;
|
|
69
69
|
}
|
|
70
70
|
get disposed() {
|
|
71
71
|
return this._disposed;
|
|
@@ -77,6 +77,7 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
77
77
|
return this._attachState;
|
|
78
78
|
}
|
|
79
79
|
get IFluidDataStoreRegistry() {
|
|
80
|
+
assert(this.channel !== undefined, 0x8f3 /* This should be called after the channel is created, when the registry is populated */);
|
|
80
81
|
return this.registry;
|
|
81
82
|
}
|
|
82
83
|
/**
|
|
@@ -115,17 +116,19 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
115
116
|
this.loaded = false;
|
|
116
117
|
this.pending = [];
|
|
117
118
|
this._isInMemoryRoot = false;
|
|
118
|
-
this._containerRuntime = props.
|
|
119
|
+
this._containerRuntime = props.parentContext.containerRuntime;
|
|
120
|
+
this.parentContext = props.parentContext;
|
|
119
121
|
this.id = props.id;
|
|
120
122
|
this.storage = props.storage;
|
|
121
123
|
this.scope = props.scope;
|
|
122
124
|
this.pkg = props.pkg;
|
|
125
|
+
this.loadingGroupId = props.loadingGroupId;
|
|
123
126
|
// URIs use slashes as delimiters. Handles use URIs.
|
|
124
127
|
// Thus having slashes in types almost guarantees trouble down the road!
|
|
125
128
|
assert(!this.id.includes("/"), 0x13a /* Data store ID contains slash */);
|
|
126
129
|
this._attachState =
|
|
127
|
-
this.
|
|
128
|
-
? this.
|
|
130
|
+
this.parentContext.attachState !== AttachState.Detached && this.existing
|
|
131
|
+
? this.parentContext.attachState
|
|
129
132
|
: AttachState.Detached;
|
|
130
133
|
const thisSummarizeInternal = async (fullTree, trackState, telemetryContext) => this.summarizeInternal(fullTree, trackState, telemetryContext);
|
|
131
134
|
this.summarizerNode = props.createSummarizerNodeFn(thisSummarizeInternal, async (fullGC) => this.getGCDataInternal(fullGC));
|
|
@@ -142,7 +145,8 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
142
145
|
},
|
|
143
146
|
});
|
|
144
147
|
this.thresholdOpsCounter = new ThresholdCounter(FluidDataStoreContext.pendingOpsCountThreshold, this.mc.logger);
|
|
145
|
-
this.
|
|
148
|
+
this.gcThrowOnTombstoneUsage = this.parentContext.gcThrowOnTombstoneUsage;
|
|
149
|
+
this.gcTombstoneEnforcementAllowed = this.parentContext.gcTombstoneEnforcementAllowed;
|
|
146
150
|
// By default, a data store can log maximum 10 local changes telemetry in summarizer.
|
|
147
151
|
this.localChangesTelemetryCount =
|
|
148
152
|
this.mc.config.getNumber("Fluid.Telemetry.LocalChangesTelemetryCount") ?? 10;
|
|
@@ -153,9 +157,9 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
153
157
|
}
|
|
154
158
|
this._disposed = true;
|
|
155
159
|
// Dispose any pending runtime after it gets fulfilled
|
|
156
|
-
// Errors are logged where this.
|
|
157
|
-
if (this.
|
|
158
|
-
this.
|
|
160
|
+
// Errors are logged where this.channelP is consumed/generated (realizeCore(), bindRuntime())
|
|
161
|
+
if (this.channelP) {
|
|
162
|
+
this.channelP
|
|
159
163
|
.then((runtime) => {
|
|
160
164
|
runtime.dispose();
|
|
161
165
|
})
|
|
@@ -184,27 +188,26 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
184
188
|
}
|
|
185
189
|
async realize() {
|
|
186
190
|
assert(!this.detachedRuntimeCreation, 0x13d /* "Detached runtime creation on realize()" */);
|
|
187
|
-
if (!this.
|
|
188
|
-
this.
|
|
189
|
-
this.realizeCore(this.existing).catch((error) => {
|
|
191
|
+
if (!this.channelP) {
|
|
192
|
+
this.channelP = this.realizeCore(this.existing).catch((error) => {
|
|
190
193
|
const errorWrapped = DataProcessingError.wrapIfUnrecognized(error, "realizeFluidDataStoreContext");
|
|
191
194
|
errorWrapped.addTelemetryProperties(tagCodeArtifacts({
|
|
192
195
|
fullPackageName: this.pkg?.join("/"),
|
|
193
196
|
fluidDataStoreId: this.id,
|
|
194
197
|
}));
|
|
195
|
-
this.channelDeferred?.reject(errorWrapped);
|
|
196
198
|
this.mc.logger.sendErrorEvent({ eventName: "RealizeError" }, errorWrapped);
|
|
199
|
+
throw errorWrapped;
|
|
197
200
|
});
|
|
198
201
|
}
|
|
199
|
-
return this.
|
|
202
|
+
return this.channelP;
|
|
200
203
|
}
|
|
201
|
-
async factoryFromPackagePath(
|
|
202
|
-
|
|
204
|
+
async factoryFromPackagePath() {
|
|
205
|
+
const packages = this.pkg;
|
|
203
206
|
if (packages === undefined) {
|
|
204
207
|
this.rejectDeferredRealize("packages is undefined");
|
|
205
208
|
}
|
|
206
209
|
let entry;
|
|
207
|
-
let registry = this.
|
|
210
|
+
let registry = this.parentContext.IFluidDataStoreRegistry;
|
|
208
211
|
let lastPkg;
|
|
209
212
|
for (const pkg of packages) {
|
|
210
213
|
if (!registry) {
|
|
@@ -221,7 +224,9 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
221
224
|
if (factory === undefined) {
|
|
222
225
|
this.rejectDeferredRealize("Can't find factory for package", lastPkg, packages);
|
|
223
226
|
}
|
|
224
|
-
|
|
227
|
+
assert(this.registry === undefined, 0x157 /* "datastore registry already attached" */);
|
|
228
|
+
this.registry = registry;
|
|
229
|
+
return factory;
|
|
225
230
|
}
|
|
226
231
|
async realizeCore(existing) {
|
|
227
232
|
const details = await this.getInitialSnapshotDetails();
|
|
@@ -229,18 +234,18 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
229
234
|
// It is important that this be in sync with the pending ops, and also
|
|
230
235
|
// that it is set here, before bindRuntime is called.
|
|
231
236
|
this._baseSnapshot = details.snapshot;
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
this.registry = registry;
|
|
237
|
+
this.baseSnapshotSequenceNumber = details.sequenceNumber;
|
|
238
|
+
assert(this.pkg === details.pkg, 0x13e /* "Unexpected package path" */);
|
|
239
|
+
const factory = await this.factoryFromPackagePath();
|
|
236
240
|
const channel = await factory.instantiateDataStore(this, existing);
|
|
237
241
|
assert(channel !== undefined, 0x140 /* "undefined channel on datastore context" */);
|
|
238
|
-
this.bindRuntime(channel);
|
|
242
|
+
await this.bindRuntime(channel, existing);
|
|
239
243
|
// This data store may have been disposed before the channel is created during realization. If so,
|
|
240
244
|
// dispose the channel now.
|
|
241
245
|
if (this.disposed) {
|
|
242
246
|
channel.dispose();
|
|
243
247
|
}
|
|
248
|
+
return channel;
|
|
244
249
|
}
|
|
245
250
|
/**
|
|
246
251
|
* Notifies this object about changes in the connection state.
|
|
@@ -259,20 +264,14 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
259
264
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
260
265
|
this.channel.setConnectionState(connected, clientId);
|
|
261
266
|
}
|
|
262
|
-
process(
|
|
263
|
-
const safeTelemetryProps = extractSafePropertiesFromMessage(
|
|
267
|
+
process(message, local, localOpMetadata) {
|
|
268
|
+
const safeTelemetryProps = extractSafePropertiesFromMessage(message);
|
|
264
269
|
// On op process, tombstone error is logged in garbage collector. So, set "checkTombstone" to false when calling
|
|
265
270
|
// "verifyNotClosed" which logs tombstone errors. Throw error if tombstoned and throwing on load is configured.
|
|
266
271
|
this.verifyNotClosed("process", false /* checkTombstone */, safeTelemetryProps);
|
|
267
|
-
if (this.tombstoned && this.
|
|
272
|
+
if (this.tombstoned && this.gcThrowOnTombstoneUsage) {
|
|
268
273
|
throw new DataCorruptionError("Context is tombstoned! Call site [process]", safeTelemetryProps);
|
|
269
274
|
}
|
|
270
|
-
const innerContents = messageArg.contents;
|
|
271
|
-
const message = {
|
|
272
|
-
...messageArg,
|
|
273
|
-
type: innerContents.type,
|
|
274
|
-
contents: innerContents.content,
|
|
275
|
-
};
|
|
276
275
|
this.summarizerNode.recordChange(message);
|
|
277
276
|
if (this.loaded) {
|
|
278
277
|
return this.channel?.process(message, local, localOpMetadata);
|
|
@@ -293,10 +292,10 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
293
292
|
this.channel?.processSignal(message, local);
|
|
294
293
|
}
|
|
295
294
|
getQuorum() {
|
|
296
|
-
return this.
|
|
295
|
+
return this.parentContext.getQuorum();
|
|
297
296
|
}
|
|
298
297
|
getAudience() {
|
|
299
|
-
return this.
|
|
298
|
+
return this.parentContext.getAudience();
|
|
300
299
|
}
|
|
301
300
|
/**
|
|
302
301
|
* Returns a summary at the current sequence number.
|
|
@@ -325,6 +324,10 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
325
324
|
summarizeResult.summary.unreferenced = true;
|
|
326
325
|
summarizeResult.stats.unreferencedBlobSize = summarizeResult.stats.totalBlobSize;
|
|
327
326
|
}
|
|
327
|
+
// Add loadingGroupId to the summary
|
|
328
|
+
if (this.loadingGroupId !== undefined) {
|
|
329
|
+
summarizeResult.summary.groupId = this.loadingGroupId;
|
|
330
|
+
}
|
|
328
331
|
return {
|
|
329
332
|
...summarizeResult,
|
|
330
333
|
id: this.id,
|
|
@@ -384,9 +387,11 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
384
387
|
}
|
|
385
388
|
}
|
|
386
389
|
/**
|
|
387
|
-
* @deprecated There is no replacement for this, its functionality is no longer needed.
|
|
390
|
+
* @deprecated There is no replacement for this, its functionality is no longer needed at this layer.
|
|
388
391
|
* It will be removed in a future release, sometime after 2.0.0-internal.8.0.0
|
|
389
392
|
*
|
|
393
|
+
* Similar capability is exposed with from/to string paths instead of handles via @see addedGCOutboundRoute
|
|
394
|
+
*
|
|
390
395
|
* Called when a new outbound reference is added to another node. This is used by garbage collection to identify
|
|
391
396
|
* all references added in the system.
|
|
392
397
|
* @param srcHandle - The handle of the node that added the reference.
|
|
@@ -396,9 +401,21 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
396
401
|
// By default, skip this call since the ContainerRuntime will detect the outbound route directly.
|
|
397
402
|
if (this.mc.config.getBoolean(detectOutboundRoutesViaDDSKey) === true) {
|
|
398
403
|
// Note: The ContainerRuntime code will check this same setting to avoid double counting.
|
|
399
|
-
this.
|
|
404
|
+
this.parentContext.addedGCOutboundReference?.(srcHandle, outboundHandle);
|
|
400
405
|
}
|
|
401
406
|
}
|
|
407
|
+
/**
|
|
408
|
+
* (Same as @see addedGCOutboundReference, but with string paths instead of handles)
|
|
409
|
+
*
|
|
410
|
+
* Called when a new outbound reference is added to another node. This is used by garbage collection to identify
|
|
411
|
+
* all references added in the system.
|
|
412
|
+
*
|
|
413
|
+
* @param fromPath - The absolute path of the node that added the reference.
|
|
414
|
+
* @param toPath - The absolute path of the outbound node that is referenced.
|
|
415
|
+
*/
|
|
416
|
+
addedGCOutboundRoute(fromPath, toPath) {
|
|
417
|
+
this.parentContext.addedGCOutboundReference?.({ absolutePath: fromPath }, { absolutePath: toPath });
|
|
418
|
+
}
|
|
402
419
|
/**
|
|
403
420
|
* Updates the used routes of the channel and its child contexts. The channel must be loaded before calling this.
|
|
404
421
|
* It is called in these two scenarios:
|
|
@@ -428,13 +445,9 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
428
445
|
submitMessage(type, content, localOpMetadata) {
|
|
429
446
|
this.verifyNotClosed("submitMessage");
|
|
430
447
|
assert(!!this.channel, 0x146 /* "Channel must exist when submitting message" */);
|
|
431
|
-
const fluidDataStoreContent = {
|
|
432
|
-
content,
|
|
433
|
-
type,
|
|
434
|
-
};
|
|
435
448
|
// Summarizer clients should not submit messages.
|
|
436
449
|
this.identifyLocalChangeInSummarizer("DataStoreMessageSubmittedInSummarizer", type);
|
|
437
|
-
this.
|
|
450
|
+
this.parentContext.submitMessage(type, content, localOpMetadata);
|
|
438
451
|
}
|
|
439
452
|
/**
|
|
440
453
|
* This is called from a SharedSummaryBlock that does not generate ops but only wants to be part of the summary.
|
|
@@ -464,7 +477,7 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
464
477
|
submitSignal(type, content, targetClientId) {
|
|
465
478
|
this.verifyNotClosed("submitSignal");
|
|
466
479
|
assert(!!this.channel, 0x147 /* "Channel must exist on submitting signal" */);
|
|
467
|
-
return this.
|
|
480
|
+
return this.parentContext.submitSignal(type, content, targetClientId);
|
|
468
481
|
}
|
|
469
482
|
/**
|
|
470
483
|
* This is called by the data store channel when it becomes locally visible indicating that it is ready to become
|
|
@@ -472,54 +485,59 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
472
485
|
*/
|
|
473
486
|
makeLocallyVisible() {
|
|
474
487
|
assert(this.channel !== undefined, 0x2cf /* "undefined channel on datastore context" */);
|
|
475
|
-
assert(this.channel.visibilityState === VisibilityState.LocallyVisible, 0x590 /* Channel must be locally visible */);
|
|
476
488
|
this.makeLocallyVisibleFn();
|
|
477
489
|
}
|
|
478
|
-
bindRuntime(channel) {
|
|
490
|
+
async bindRuntime(channel, existing) {
|
|
479
491
|
if (this.channel) {
|
|
480
492
|
throw new Error("Runtime already bound");
|
|
481
493
|
}
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
assert(this.pkg !== undefined, 0x14a /* "Undefined package path" */);
|
|
494
|
+
assert(!this.detachedRuntimeCreation, 0x148 /* "Detached runtime creation on runtime bind" */);
|
|
495
|
+
assert(this.pkg !== undefined, 0x14a /* "Undefined package path" */);
|
|
496
|
+
if (existing) {
|
|
486
497
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
487
498
|
const pending = this.pending;
|
|
488
499
|
// Apply all pending ops
|
|
489
500
|
for (const op of pending) {
|
|
490
|
-
|
|
501
|
+
// Only process ops whose seq number is greater than snapshot sequence number from which it loaded.
|
|
502
|
+
const seqNumber = this.baseSnapshotSequenceNumber ?? -1;
|
|
503
|
+
if (op.sequenceNumber > seqNumber) {
|
|
504
|
+
channel.process(op, false, undefined /* localOpMetadata */);
|
|
505
|
+
}
|
|
491
506
|
}
|
|
492
507
|
this.thresholdOpsCounter.send("ProcessPendingOps", pending.length);
|
|
493
|
-
this.pending = undefined;
|
|
494
|
-
// And now mark the runtime active
|
|
495
|
-
this.loaded = true;
|
|
496
|
-
this.channel = channel;
|
|
497
|
-
// Freeze the package path to ensure that someone doesn't modify it when it is
|
|
498
|
-
// returned in packagePath().
|
|
499
|
-
Object.freeze(this.pkg);
|
|
500
|
-
/**
|
|
501
|
-
* Update the used routes of the channel. If GC has run before this data store was realized, we will have
|
|
502
|
-
* the used routes saved. So, this will ensure that all the child contexts have up-to-date used routes as
|
|
503
|
-
* per the last time GC was run.
|
|
504
|
-
* Also, this data store may have been realized during summarize. In that case, the child contexts need to
|
|
505
|
-
* have their used routes updated to determine if its needs to summarize again and to add it to the summary.
|
|
506
|
-
*/
|
|
507
|
-
this.updateChannelUsedRoutes();
|
|
508
|
-
// And notify the pending promise it is now available
|
|
509
|
-
this.channelDeferred.resolve(this.channel);
|
|
510
|
-
}
|
|
511
|
-
catch (error) {
|
|
512
|
-
this.channelDeferred?.reject(error);
|
|
513
|
-
this.mc.logger.sendErrorEvent({
|
|
514
|
-
eventName: "BindRuntimeError",
|
|
515
|
-
}, error);
|
|
516
508
|
}
|
|
509
|
+
else {
|
|
510
|
+
assert(this.pending?.length === 0, 0x8f4 /* no pending ops */);
|
|
511
|
+
// Execute data store's entry point to make sure that for a local (aka detached from container) data store, the
|
|
512
|
+
// entryPoint initialization function is called before the data store gets attached and potentially connected to
|
|
513
|
+
// the delta stream, so it gets a chance to do things while the data store is still "purely local".
|
|
514
|
+
// This preserves the behavior from before we introduced entryPoints, where the instantiateDataStore method
|
|
515
|
+
// of data store factories tends to construct the data object (at least kick off an async method that returns
|
|
516
|
+
// it); that code moved to the entryPoint initialization function, so we want to ensure it still executes
|
|
517
|
+
// before the data store is attached.
|
|
518
|
+
await channel.entryPoint.get();
|
|
519
|
+
}
|
|
520
|
+
this.pending = undefined;
|
|
521
|
+
// And now mark the runtime active
|
|
522
|
+
this.loaded = true;
|
|
523
|
+
this.channel = channel;
|
|
524
|
+
// Freeze the package path to ensure that someone doesn't modify it when it is
|
|
525
|
+
// returned in packagePath().
|
|
526
|
+
Object.freeze(this.pkg);
|
|
527
|
+
/**
|
|
528
|
+
* Update the used routes of the channel. If GC has run before this data store was realized, we will have
|
|
529
|
+
* the used routes saved. So, this will ensure that all the child contexts have up-to-date used routes as
|
|
530
|
+
* per the last time GC was run.
|
|
531
|
+
* Also, this data store may have been realized during summarize. In that case, the child contexts need to
|
|
532
|
+
* have their used routes updated to determine if its needs to summarize again and to add it to the summary.
|
|
533
|
+
*/
|
|
534
|
+
this.updateChannelUsedRoutes();
|
|
517
535
|
}
|
|
518
536
|
async getAbsoluteUrl(relativeUrl) {
|
|
519
537
|
if (this.attachState !== AttachState.Attached) {
|
|
520
538
|
return undefined;
|
|
521
539
|
}
|
|
522
|
-
return this.
|
|
540
|
+
return this.parentContext.getAbsoluteUrl(relativeUrl);
|
|
523
541
|
}
|
|
524
542
|
/**
|
|
525
543
|
* @deprecated Sets the datastore as root, for aliasing purposes: #7948
|
|
@@ -535,20 +553,18 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
535
553
|
async getBaseGCDetails() {
|
|
536
554
|
return {};
|
|
537
555
|
}
|
|
538
|
-
reSubmit(contents, localOpMetadata) {
|
|
556
|
+
reSubmit(type, contents, localOpMetadata) {
|
|
539
557
|
assert(!!this.channel, 0x14b /* "Channel must exist when resubmitting ops" */);
|
|
540
|
-
|
|
541
|
-
this.channel.reSubmit(innerContents.type, innerContents.content, localOpMetadata);
|
|
558
|
+
this.channel.reSubmit(type, contents, localOpMetadata);
|
|
542
559
|
}
|
|
543
|
-
rollback(contents, localOpMetadata) {
|
|
560
|
+
rollback(type, contents, localOpMetadata) {
|
|
544
561
|
if (!this.channel) {
|
|
545
562
|
throw new Error("Channel must exist when rolling back ops");
|
|
546
563
|
}
|
|
547
564
|
if (!this.channel.rollback) {
|
|
548
565
|
throw new Error("Channel doesn't support rollback");
|
|
549
566
|
}
|
|
550
|
-
|
|
551
|
-
this.channel.rollback(innerContents.type, innerContents.content, localOpMetadata);
|
|
567
|
+
this.channel.rollback(type, contents, localOpMetadata);
|
|
552
568
|
}
|
|
553
569
|
async applyStashedOp(contents) {
|
|
554
570
|
if (!this.channel) {
|
|
@@ -575,11 +591,11 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
575
591
|
const error = new DataCorruptionError(messageString, safeTelemetryProps);
|
|
576
592
|
sendGCUnexpectedUsageEvent(this.mc, {
|
|
577
593
|
eventName: "GC_Tombstone_DataStore_Changed",
|
|
578
|
-
category: this.
|
|
579
|
-
gcTombstoneEnforcementAllowed: this.
|
|
594
|
+
category: this.gcThrowOnTombstoneUsage ? "error" : "generic",
|
|
595
|
+
gcTombstoneEnforcementAllowed: this.gcTombstoneEnforcementAllowed,
|
|
580
596
|
callSite,
|
|
581
597
|
}, this.pkg, error);
|
|
582
|
-
if (this.
|
|
598
|
+
if (this.gcThrowOnTombstoneUsage) {
|
|
583
599
|
throw error;
|
|
584
600
|
}
|
|
585
601
|
}
|
|
@@ -606,12 +622,13 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
606
622
|
this.localChangesTelemetryCount--;
|
|
607
623
|
}
|
|
608
624
|
getCreateChildSummarizerNodeFn(id, createParam) {
|
|
609
|
-
return (summarizeInternal, getGCDataFn) => this.summarizerNode.createChild(summarizeInternal, id, createParam,
|
|
610
|
-
|
|
611
|
-
|
|
625
|
+
return (summarizeInternal, getGCDataFn) => this.summarizerNode.createChild(summarizeInternal, id, createParam, undefined /* config */, getGCDataFn);
|
|
626
|
+
}
|
|
627
|
+
deleteChildSummarizerNode(id) {
|
|
628
|
+
this.summarizerNode.deleteChild(id);
|
|
612
629
|
}
|
|
613
630
|
async uploadBlob(blob, signal) {
|
|
614
|
-
return this.
|
|
631
|
+
return this.parentContext.uploadBlob(blob, signal);
|
|
615
632
|
}
|
|
616
633
|
}
|
|
617
634
|
FluidDataStoreContext.pendingOpsCountThreshold = 1000;
|
|
@@ -621,7 +638,16 @@ export class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
|
621
638
|
throw new Error("Already attached");
|
|
622
639
|
});
|
|
623
640
|
this.initialSnapshotDetailsP = new LazyPromise(async () => {
|
|
624
|
-
|
|
641
|
+
// Sequence number of the snapshot.
|
|
642
|
+
let sequenceNumber;
|
|
643
|
+
if (this.snapshotFetchRequired) {
|
|
644
|
+
assert(this.loadingGroupId !== undefined, 0x8f5 /* groupId should be present to fetch snapshot */);
|
|
645
|
+
const snapshot = await this.runtime.getSnapshotForLoadingGroupId([this.loadingGroupId], [this.id]);
|
|
646
|
+
this._baseSnapshot = snapshot.snapshotTree;
|
|
647
|
+
sequenceNumber = snapshot.sequenceNumber;
|
|
648
|
+
this.snapshotFetchRequired = false;
|
|
649
|
+
}
|
|
650
|
+
let tree = this.baseSnapshot;
|
|
625
651
|
let isRootDataStore = true;
|
|
626
652
|
if (!!tree && tree.blobs[dataStoreAttributesBlobName] !== undefined) {
|
|
627
653
|
// Need to get through snapshot and use that to populate extraBlobs
|
|
@@ -651,14 +677,17 @@ export class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
|
651
677
|
assert(tree !== undefined, 0x1fe /* "isolated channels subtree should exist in remote datastore snapshot" */);
|
|
652
678
|
}
|
|
653
679
|
}
|
|
680
|
+
assert(this.pkg !== undefined, 0x8f6 /* The datastore context package should be defined */);
|
|
654
681
|
return {
|
|
655
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
656
682
|
pkg: this.pkg,
|
|
657
683
|
isRootDataStore,
|
|
658
684
|
snapshot: tree,
|
|
685
|
+
sequenceNumber,
|
|
659
686
|
};
|
|
660
687
|
});
|
|
661
|
-
this.
|
|
688
|
+
this._baseSnapshot = props.snapshotTree;
|
|
689
|
+
this.snapshotFetchRequired = !!props.snapshotTree?.omitted;
|
|
690
|
+
this.runtime = props.parentContext.containerRuntime;
|
|
662
691
|
if (props.snapshotTree !== undefined) {
|
|
663
692
|
this.summarizerNode.updateBaseSummaryState(props.snapshotTree);
|
|
664
693
|
}
|
|
@@ -666,7 +695,10 @@ export class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
|
666
695
|
async getInitialSnapshotDetails() {
|
|
667
696
|
return this.initialSnapshotDetailsP;
|
|
668
697
|
}
|
|
669
|
-
|
|
698
|
+
/**
|
|
699
|
+
* @see FluidDataStoreContext.getAttachData
|
|
700
|
+
*/
|
|
701
|
+
getAttachData(includeGCData) {
|
|
670
702
|
throw new Error("Cannot attach remote store");
|
|
671
703
|
}
|
|
672
704
|
}
|
|
@@ -725,23 +757,32 @@ export class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
725
757
|
this._attachState = AttachState.Attached;
|
|
726
758
|
});
|
|
727
759
|
}
|
|
728
|
-
|
|
760
|
+
/**
|
|
761
|
+
* @see FluidDataStoreContext.getAttachData
|
|
762
|
+
*/
|
|
763
|
+
getAttachData(includeGCData, telemetryContext) {
|
|
729
764
|
assert(this.channel !== undefined, 0x14f /* "There should be a channel when generating attach message" */);
|
|
730
765
|
assert(this.pkg !== undefined, 0x150 /* "pkg should be available in local data store context" */);
|
|
731
|
-
const
|
|
766
|
+
const attachSummary = this.channel.getAttachSummary(telemetryContext);
|
|
732
767
|
// Wrap dds summaries in .channels subtree.
|
|
733
|
-
wrapSummaryInChannelsTree(
|
|
768
|
+
wrapSummaryInChannelsTree(attachSummary);
|
|
734
769
|
// Add data store's attributes to the summary.
|
|
735
770
|
const attributes = createAttributes(this.pkg, this.isInMemoryRoot());
|
|
736
|
-
addBlobToSummary(
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
771
|
+
addBlobToSummary(attachSummary, dataStoreAttributesBlobName, JSON.stringify(attributes));
|
|
772
|
+
if (includeGCData) {
|
|
773
|
+
const gcData = this.channel.getAttachGCData?.(telemetryContext);
|
|
774
|
+
if (gcData !== undefined) {
|
|
775
|
+
addBlobToSummary(attachSummary, gcDataBlobKey, JSON.stringify(gcData));
|
|
776
|
+
}
|
|
777
|
+
}
|
|
778
|
+
// Add loadingGroupId to the summary
|
|
779
|
+
if (this.loadingGroupId !== undefined) {
|
|
780
|
+
attachSummary.summary.groupId = this.loadingGroupId;
|
|
781
|
+
}
|
|
782
|
+
return {
|
|
783
|
+
attachSummary,
|
|
742
784
|
type: this.pkg[this.pkg.length - 1],
|
|
743
785
|
};
|
|
744
|
-
return message;
|
|
745
786
|
}
|
|
746
787
|
async getInitialSnapshotDetails() {
|
|
747
788
|
return this.initialSnapshotDetailsP;
|
|
@@ -785,29 +826,29 @@ export class LocalDetachedFluidDataStoreContext extends LocalFluidDataStoreConte
|
|
|
785
826
|
constructor(props) {
|
|
786
827
|
super(props);
|
|
787
828
|
this.detachedRuntimeCreation = true;
|
|
829
|
+
this.channelToDataStoreFn = props.channelToDataStoreFn;
|
|
788
830
|
}
|
|
789
831
|
async attachRuntime(registry, dataStoreChannel) {
|
|
790
832
|
assert(this.detachedRuntimeCreation, 0x154 /* "runtime creation is already attached" */);
|
|
791
833
|
this.detachedRuntimeCreation = false;
|
|
792
|
-
assert(this.
|
|
793
|
-
this.
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
}
|
|
834
|
+
assert(this.channelP === undefined, 0x155 /* "channel deferral is already set" */);
|
|
835
|
+
this.channelP = Promise.resolve()
|
|
836
|
+
.then(async () => {
|
|
837
|
+
const factory = registry.IFluidDataStoreFactory;
|
|
838
|
+
const factory2 = await this.factoryFromPackagePath();
|
|
839
|
+
assert(factory2 === factory, 0x156 /* "Unexpected factory for package path" */);
|
|
840
|
+
await super.bindRuntime(dataStoreChannel, false /* existing */);
|
|
841
|
+
assert(!(await this.isRoot()), 0x8f7 /* there are no more createRootDataStore() kind of APIs! */);
|
|
842
|
+
return dataStoreChannel;
|
|
843
|
+
})
|
|
844
|
+
.catch((error) => {
|
|
845
|
+
this.mc.logger.sendErrorEvent({ eventName: "AttachRuntimeError" }, error);
|
|
846
|
+
// The following two lines result in same exception thrown.
|
|
847
|
+
// But we need to ensure that this.channelDeferred.promise is "observed", as otherwise
|
|
848
|
+
// out UT reports unhandled exception
|
|
849
|
+
throw error;
|
|
850
|
+
});
|
|
851
|
+
return this.channelToDataStoreFn(await this.channelP);
|
|
811
852
|
}
|
|
812
853
|
async getInitialSnapshotDetails() {
|
|
813
854
|
if (this.detachedRuntimeCreation) {
|
|
@@ -816,4 +857,4 @@ export class LocalDetachedFluidDataStoreContext extends LocalFluidDataStoreConte
|
|
|
816
857
|
return super.getInitialSnapshotDetails();
|
|
817
858
|
}
|
|
818
859
|
}
|
|
819
|
-
//# sourceMappingURL=dataStoreContext.
|
|
860
|
+
//# sourceMappingURL=dataStoreContext.js.map
|