@fluidframework/container-runtime 2.0.0-rc.1.0.4 → 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
package/dist/dataStoreContext.js
CHANGED
|
@@ -12,8 +12,8 @@ const driver_utils_1 = require("@fluidframework/driver-utils");
|
|
|
12
12
|
const runtime_definitions_1 = require("@fluidframework/runtime-definitions");
|
|
13
13
|
const runtime_utils_1 = require("@fluidframework/runtime-utils");
|
|
14
14
|
const telemetry_utils_1 = require("@fluidframework/telemetry-utils");
|
|
15
|
-
const
|
|
16
|
-
const
|
|
15
|
+
const index_js_1 = require("./summary/index.js");
|
|
16
|
+
const index_js_2 = require("./gc/index.js");
|
|
17
17
|
function createAttributes(pkg, isRootDataStore) {
|
|
18
18
|
const stringifiedPkg = JSON.stringify(pkg);
|
|
19
19
|
return {
|
|
@@ -24,7 +24,7 @@ function createAttributes(pkg, isRootDataStore) {
|
|
|
24
24
|
}
|
|
25
25
|
function createAttributesBlob(pkg, isRootDataStore) {
|
|
26
26
|
const attributes = createAttributes(pkg, isRootDataStore);
|
|
27
|
-
return new driver_utils_1.BlobTreeEntry(
|
|
27
|
+
return new driver_utils_1.BlobTreeEntry(index_js_1.dataStoreAttributesBlobName, JSON.stringify(attributes));
|
|
28
28
|
}
|
|
29
29
|
exports.createAttributesBlob = createAttributesBlob;
|
|
30
30
|
/**
|
|
@@ -36,31 +36,31 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
36
36
|
return this.pkg;
|
|
37
37
|
}
|
|
38
38
|
get options() {
|
|
39
|
-
return this.
|
|
39
|
+
return this.parentContext.options;
|
|
40
40
|
}
|
|
41
41
|
get clientId() {
|
|
42
|
-
return this.
|
|
42
|
+
return this.parentContext.clientId;
|
|
43
43
|
}
|
|
44
44
|
get clientDetails() {
|
|
45
|
-
return this.
|
|
45
|
+
return this.parentContext.clientDetails;
|
|
46
46
|
}
|
|
47
47
|
get logger() {
|
|
48
|
-
return this.
|
|
48
|
+
return this.parentContext.logger;
|
|
49
49
|
}
|
|
50
50
|
get deltaManager() {
|
|
51
|
-
return this.
|
|
51
|
+
return this.parentContext.deltaManager;
|
|
52
52
|
}
|
|
53
53
|
get connected() {
|
|
54
|
-
return this.
|
|
54
|
+
return this.parentContext.connected;
|
|
55
55
|
}
|
|
56
56
|
get IFluidHandleContext() {
|
|
57
|
-
return this.
|
|
57
|
+
return this.parentContext.IFluidHandleContext;
|
|
58
58
|
}
|
|
59
59
|
get containerRuntime() {
|
|
60
60
|
return this._containerRuntime;
|
|
61
61
|
}
|
|
62
62
|
ensureNoDataModelChanges(callback) {
|
|
63
|
-
return this.
|
|
63
|
+
return this.parentContext.ensureNoDataModelChanges(callback);
|
|
64
64
|
}
|
|
65
65
|
get isLoaded() {
|
|
66
66
|
return this.loaded;
|
|
@@ -69,7 +69,7 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
69
69
|
return this._baseSnapshot;
|
|
70
70
|
}
|
|
71
71
|
get idCompressor() {
|
|
72
|
-
return this.
|
|
72
|
+
return this.parentContext.idCompressor;
|
|
73
73
|
}
|
|
74
74
|
get disposed() {
|
|
75
75
|
return this._disposed;
|
|
@@ -81,6 +81,7 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
81
81
|
return this._attachState;
|
|
82
82
|
}
|
|
83
83
|
get IFluidDataStoreRegistry() {
|
|
84
|
+
(0, core_utils_1.assert)(this.channel !== undefined, 0x8f3 /* This should be called after the channel is created, when the registry is populated */);
|
|
84
85
|
return this.registry;
|
|
85
86
|
}
|
|
86
87
|
/**
|
|
@@ -119,17 +120,19 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
119
120
|
this.loaded = false;
|
|
120
121
|
this.pending = [];
|
|
121
122
|
this._isInMemoryRoot = false;
|
|
122
|
-
this._containerRuntime = props.
|
|
123
|
+
this._containerRuntime = props.parentContext.containerRuntime;
|
|
124
|
+
this.parentContext = props.parentContext;
|
|
123
125
|
this.id = props.id;
|
|
124
126
|
this.storage = props.storage;
|
|
125
127
|
this.scope = props.scope;
|
|
126
128
|
this.pkg = props.pkg;
|
|
129
|
+
this.loadingGroupId = props.loadingGroupId;
|
|
127
130
|
// URIs use slashes as delimiters. Handles use URIs.
|
|
128
131
|
// Thus having slashes in types almost guarantees trouble down the road!
|
|
129
132
|
(0, core_utils_1.assert)(!this.id.includes("/"), 0x13a /* Data store ID contains slash */);
|
|
130
133
|
this._attachState =
|
|
131
|
-
this.
|
|
132
|
-
? this.
|
|
134
|
+
this.parentContext.attachState !== container_definitions_1.AttachState.Detached && this.existing
|
|
135
|
+
? this.parentContext.attachState
|
|
133
136
|
: container_definitions_1.AttachState.Detached;
|
|
134
137
|
const thisSummarizeInternal = async (fullTree, trackState, telemetryContext) => this.summarizeInternal(fullTree, trackState, telemetryContext);
|
|
135
138
|
this.summarizerNode = props.createSummarizerNodeFn(thisSummarizeInternal, async (fullGC) => this.getGCDataInternal(fullGC));
|
|
@@ -146,7 +149,8 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
146
149
|
},
|
|
147
150
|
});
|
|
148
151
|
this.thresholdOpsCounter = new telemetry_utils_1.ThresholdCounter(FluidDataStoreContext.pendingOpsCountThreshold, this.mc.logger);
|
|
149
|
-
this.
|
|
152
|
+
this.gcThrowOnTombstoneUsage = this.parentContext.gcThrowOnTombstoneUsage;
|
|
153
|
+
this.gcTombstoneEnforcementAllowed = this.parentContext.gcTombstoneEnforcementAllowed;
|
|
150
154
|
// By default, a data store can log maximum 10 local changes telemetry in summarizer.
|
|
151
155
|
this.localChangesTelemetryCount =
|
|
152
156
|
this.mc.config.getNumber("Fluid.Telemetry.LocalChangesTelemetryCount") ?? 10;
|
|
@@ -157,9 +161,9 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
157
161
|
}
|
|
158
162
|
this._disposed = true;
|
|
159
163
|
// Dispose any pending runtime after it gets fulfilled
|
|
160
|
-
// Errors are logged where this.
|
|
161
|
-
if (this.
|
|
162
|
-
this.
|
|
164
|
+
// Errors are logged where this.channelP is consumed/generated (realizeCore(), bindRuntime())
|
|
165
|
+
if (this.channelP) {
|
|
166
|
+
this.channelP
|
|
163
167
|
.then((runtime) => {
|
|
164
168
|
runtime.dispose();
|
|
165
169
|
})
|
|
@@ -188,27 +192,26 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
188
192
|
}
|
|
189
193
|
async realize() {
|
|
190
194
|
(0, core_utils_1.assert)(!this.detachedRuntimeCreation, 0x13d /* "Detached runtime creation on realize()" */);
|
|
191
|
-
if (!this.
|
|
192
|
-
this.
|
|
193
|
-
this.realizeCore(this.existing).catch((error) => {
|
|
195
|
+
if (!this.channelP) {
|
|
196
|
+
this.channelP = this.realizeCore(this.existing).catch((error) => {
|
|
194
197
|
const errorWrapped = telemetry_utils_1.DataProcessingError.wrapIfUnrecognized(error, "realizeFluidDataStoreContext");
|
|
195
198
|
errorWrapped.addTelemetryProperties((0, telemetry_utils_1.tagCodeArtifacts)({
|
|
196
199
|
fullPackageName: this.pkg?.join("/"),
|
|
197
200
|
fluidDataStoreId: this.id,
|
|
198
201
|
}));
|
|
199
|
-
this.channelDeferred?.reject(errorWrapped);
|
|
200
202
|
this.mc.logger.sendErrorEvent({ eventName: "RealizeError" }, errorWrapped);
|
|
203
|
+
throw errorWrapped;
|
|
201
204
|
});
|
|
202
205
|
}
|
|
203
|
-
return this.
|
|
206
|
+
return this.channelP;
|
|
204
207
|
}
|
|
205
|
-
async factoryFromPackagePath(
|
|
206
|
-
|
|
208
|
+
async factoryFromPackagePath() {
|
|
209
|
+
const packages = this.pkg;
|
|
207
210
|
if (packages === undefined) {
|
|
208
211
|
this.rejectDeferredRealize("packages is undefined");
|
|
209
212
|
}
|
|
210
213
|
let entry;
|
|
211
|
-
let registry = this.
|
|
214
|
+
let registry = this.parentContext.IFluidDataStoreRegistry;
|
|
212
215
|
let lastPkg;
|
|
213
216
|
for (const pkg of packages) {
|
|
214
217
|
if (!registry) {
|
|
@@ -225,7 +228,9 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
225
228
|
if (factory === undefined) {
|
|
226
229
|
this.rejectDeferredRealize("Can't find factory for package", lastPkg, packages);
|
|
227
230
|
}
|
|
228
|
-
|
|
231
|
+
(0, core_utils_1.assert)(this.registry === undefined, 0x157 /* "datastore registry already attached" */);
|
|
232
|
+
this.registry = registry;
|
|
233
|
+
return factory;
|
|
229
234
|
}
|
|
230
235
|
async realizeCore(existing) {
|
|
231
236
|
const details = await this.getInitialSnapshotDetails();
|
|
@@ -233,18 +238,18 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
233
238
|
// It is important that this be in sync with the pending ops, and also
|
|
234
239
|
// that it is set here, before bindRuntime is called.
|
|
235
240
|
this._baseSnapshot = details.snapshot;
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
this.registry = registry;
|
|
241
|
+
this.baseSnapshotSequenceNumber = details.sequenceNumber;
|
|
242
|
+
(0, core_utils_1.assert)(this.pkg === details.pkg, 0x13e /* "Unexpected package path" */);
|
|
243
|
+
const factory = await this.factoryFromPackagePath();
|
|
240
244
|
const channel = await factory.instantiateDataStore(this, existing);
|
|
241
245
|
(0, core_utils_1.assert)(channel !== undefined, 0x140 /* "undefined channel on datastore context" */);
|
|
242
|
-
this.bindRuntime(channel);
|
|
246
|
+
await this.bindRuntime(channel, existing);
|
|
243
247
|
// This data store may have been disposed before the channel is created during realization. If so,
|
|
244
248
|
// dispose the channel now.
|
|
245
249
|
if (this.disposed) {
|
|
246
250
|
channel.dispose();
|
|
247
251
|
}
|
|
252
|
+
return channel;
|
|
248
253
|
}
|
|
249
254
|
/**
|
|
250
255
|
* Notifies this object about changes in the connection state.
|
|
@@ -263,20 +268,14 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
263
268
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
264
269
|
this.channel.setConnectionState(connected, clientId);
|
|
265
270
|
}
|
|
266
|
-
process(
|
|
267
|
-
const safeTelemetryProps = (0, telemetry_utils_1.extractSafePropertiesFromMessage)(
|
|
271
|
+
process(message, local, localOpMetadata) {
|
|
272
|
+
const safeTelemetryProps = (0, telemetry_utils_1.extractSafePropertiesFromMessage)(message);
|
|
268
273
|
// On op process, tombstone error is logged in garbage collector. So, set "checkTombstone" to false when calling
|
|
269
274
|
// "verifyNotClosed" which logs tombstone errors. Throw error if tombstoned and throwing on load is configured.
|
|
270
275
|
this.verifyNotClosed("process", false /* checkTombstone */, safeTelemetryProps);
|
|
271
|
-
if (this.tombstoned && this.
|
|
276
|
+
if (this.tombstoned && this.gcThrowOnTombstoneUsage) {
|
|
272
277
|
throw new telemetry_utils_1.DataCorruptionError("Context is tombstoned! Call site [process]", safeTelemetryProps);
|
|
273
278
|
}
|
|
274
|
-
const innerContents = messageArg.contents;
|
|
275
|
-
const message = {
|
|
276
|
-
...messageArg,
|
|
277
|
-
type: innerContents.type,
|
|
278
|
-
contents: innerContents.content,
|
|
279
|
-
};
|
|
280
279
|
this.summarizerNode.recordChange(message);
|
|
281
280
|
if (this.loaded) {
|
|
282
281
|
return this.channel?.process(message, local, localOpMetadata);
|
|
@@ -297,10 +296,10 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
297
296
|
this.channel?.processSignal(message, local);
|
|
298
297
|
}
|
|
299
298
|
getQuorum() {
|
|
300
|
-
return this.
|
|
299
|
+
return this.parentContext.getQuorum();
|
|
301
300
|
}
|
|
302
301
|
getAudience() {
|
|
303
|
-
return this.
|
|
302
|
+
return this.parentContext.getAudience();
|
|
304
303
|
}
|
|
305
304
|
/**
|
|
306
305
|
* Returns a summary at the current sequence number.
|
|
@@ -316,19 +315,23 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
316
315
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
317
316
|
const summarizeResult = await this.channel.summarize(fullTree, trackState, telemetryContext);
|
|
318
317
|
// Wrap dds summaries in .channels subtree.
|
|
319
|
-
(0,
|
|
318
|
+
(0, index_js_1.wrapSummaryInChannelsTree)(summarizeResult);
|
|
320
319
|
const pathPartsForChildren = [runtime_definitions_1.channelsTreeName];
|
|
321
320
|
// Add data store's attributes to the summary.
|
|
322
321
|
const { pkg } = await this.getInitialSnapshotDetails();
|
|
323
322
|
const isRoot = await this.isRoot();
|
|
324
323
|
const attributes = createAttributes(pkg, isRoot);
|
|
325
|
-
(0, runtime_utils_1.addBlobToSummary)(summarizeResult,
|
|
324
|
+
(0, runtime_utils_1.addBlobToSummary)(summarizeResult, index_js_1.dataStoreAttributesBlobName, JSON.stringify(attributes));
|
|
326
325
|
// If we are not referenced, mark the summary tree as unreferenced. Also, update unreferenced blob
|
|
327
326
|
// size in the summary stats with the blobs size of this data store.
|
|
328
327
|
if (!this.summarizerNode.isReferenced()) {
|
|
329
328
|
summarizeResult.summary.unreferenced = true;
|
|
330
329
|
summarizeResult.stats.unreferencedBlobSize = summarizeResult.stats.totalBlobSize;
|
|
331
330
|
}
|
|
331
|
+
// Add loadingGroupId to the summary
|
|
332
|
+
if (this.loadingGroupId !== undefined) {
|
|
333
|
+
summarizeResult.summary.groupId = this.loadingGroupId;
|
|
334
|
+
}
|
|
332
335
|
return {
|
|
333
336
|
...summarizeResult,
|
|
334
337
|
id: this.id,
|
|
@@ -388,9 +391,11 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
388
391
|
}
|
|
389
392
|
}
|
|
390
393
|
/**
|
|
391
|
-
* @deprecated There is no replacement for this, its functionality is no longer needed.
|
|
394
|
+
* @deprecated There is no replacement for this, its functionality is no longer needed at this layer.
|
|
392
395
|
* It will be removed in a future release, sometime after 2.0.0-internal.8.0.0
|
|
393
396
|
*
|
|
397
|
+
* Similar capability is exposed with from/to string paths instead of handles via @see addedGCOutboundRoute
|
|
398
|
+
*
|
|
394
399
|
* Called when a new outbound reference is added to another node. This is used by garbage collection to identify
|
|
395
400
|
* all references added in the system.
|
|
396
401
|
* @param srcHandle - The handle of the node that added the reference.
|
|
@@ -398,11 +403,23 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
398
403
|
*/
|
|
399
404
|
addedGCOutboundReference(srcHandle, outboundHandle) {
|
|
400
405
|
// By default, skip this call since the ContainerRuntime will detect the outbound route directly.
|
|
401
|
-
if (this.mc.config.getBoolean(
|
|
406
|
+
if (this.mc.config.getBoolean(index_js_2.detectOutboundRoutesViaDDSKey) === true) {
|
|
402
407
|
// Note: The ContainerRuntime code will check this same setting to avoid double counting.
|
|
403
|
-
this.
|
|
408
|
+
this.parentContext.addedGCOutboundReference?.(srcHandle, outboundHandle);
|
|
404
409
|
}
|
|
405
410
|
}
|
|
411
|
+
/**
|
|
412
|
+
* (Same as @see addedGCOutboundReference, but with string paths instead of handles)
|
|
413
|
+
*
|
|
414
|
+
* Called when a new outbound reference is added to another node. This is used by garbage collection to identify
|
|
415
|
+
* all references added in the system.
|
|
416
|
+
*
|
|
417
|
+
* @param fromPath - The absolute path of the node that added the reference.
|
|
418
|
+
* @param toPath - The absolute path of the outbound node that is referenced.
|
|
419
|
+
*/
|
|
420
|
+
addedGCOutboundRoute(fromPath, toPath) {
|
|
421
|
+
this.parentContext.addedGCOutboundReference?.({ absolutePath: fromPath }, { absolutePath: toPath });
|
|
422
|
+
}
|
|
406
423
|
/**
|
|
407
424
|
* Updates the used routes of the channel and its child contexts. The channel must be loaded before calling this.
|
|
408
425
|
* It is called in these two scenarios:
|
|
@@ -432,13 +449,9 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
432
449
|
submitMessage(type, content, localOpMetadata) {
|
|
433
450
|
this.verifyNotClosed("submitMessage");
|
|
434
451
|
(0, core_utils_1.assert)(!!this.channel, 0x146 /* "Channel must exist when submitting message" */);
|
|
435
|
-
const fluidDataStoreContent = {
|
|
436
|
-
content,
|
|
437
|
-
type,
|
|
438
|
-
};
|
|
439
452
|
// Summarizer clients should not submit messages.
|
|
440
453
|
this.identifyLocalChangeInSummarizer("DataStoreMessageSubmittedInSummarizer", type);
|
|
441
|
-
this.
|
|
454
|
+
this.parentContext.submitMessage(type, content, localOpMetadata);
|
|
442
455
|
}
|
|
443
456
|
/**
|
|
444
457
|
* This is called from a SharedSummaryBlock that does not generate ops but only wants to be part of the summary.
|
|
@@ -468,7 +481,7 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
468
481
|
submitSignal(type, content, targetClientId) {
|
|
469
482
|
this.verifyNotClosed("submitSignal");
|
|
470
483
|
(0, core_utils_1.assert)(!!this.channel, 0x147 /* "Channel must exist on submitting signal" */);
|
|
471
|
-
return this.
|
|
484
|
+
return this.parentContext.submitSignal(type, content, targetClientId);
|
|
472
485
|
}
|
|
473
486
|
/**
|
|
474
487
|
* This is called by the data store channel when it becomes locally visible indicating that it is ready to become
|
|
@@ -476,54 +489,59 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
476
489
|
*/
|
|
477
490
|
makeLocallyVisible() {
|
|
478
491
|
(0, core_utils_1.assert)(this.channel !== undefined, 0x2cf /* "undefined channel on datastore context" */);
|
|
479
|
-
(0, core_utils_1.assert)(this.channel.visibilityState === runtime_definitions_1.VisibilityState.LocallyVisible, 0x590 /* Channel must be locally visible */);
|
|
480
492
|
this.makeLocallyVisibleFn();
|
|
481
493
|
}
|
|
482
|
-
bindRuntime(channel) {
|
|
494
|
+
async bindRuntime(channel, existing) {
|
|
483
495
|
if (this.channel) {
|
|
484
496
|
throw new Error("Runtime already bound");
|
|
485
497
|
}
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
(0, core_utils_1.assert)(this.pkg !== undefined, 0x14a /* "Undefined package path" */);
|
|
498
|
+
(0, core_utils_1.assert)(!this.detachedRuntimeCreation, 0x148 /* "Detached runtime creation on runtime bind" */);
|
|
499
|
+
(0, core_utils_1.assert)(this.pkg !== undefined, 0x14a /* "Undefined package path" */);
|
|
500
|
+
if (existing) {
|
|
490
501
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
491
502
|
const pending = this.pending;
|
|
492
503
|
// Apply all pending ops
|
|
493
504
|
for (const op of pending) {
|
|
494
|
-
|
|
505
|
+
// Only process ops whose seq number is greater than snapshot sequence number from which it loaded.
|
|
506
|
+
const seqNumber = this.baseSnapshotSequenceNumber ?? -1;
|
|
507
|
+
if (op.sequenceNumber > seqNumber) {
|
|
508
|
+
channel.process(op, false, undefined /* localOpMetadata */);
|
|
509
|
+
}
|
|
495
510
|
}
|
|
496
511
|
this.thresholdOpsCounter.send("ProcessPendingOps", pending.length);
|
|
497
|
-
this.pending = undefined;
|
|
498
|
-
// And now mark the runtime active
|
|
499
|
-
this.loaded = true;
|
|
500
|
-
this.channel = channel;
|
|
501
|
-
// Freeze the package path to ensure that someone doesn't modify it when it is
|
|
502
|
-
// returned in packagePath().
|
|
503
|
-
Object.freeze(this.pkg);
|
|
504
|
-
/**
|
|
505
|
-
* Update the used routes of the channel. If GC has run before this data store was realized, we will have
|
|
506
|
-
* the used routes saved. So, this will ensure that all the child contexts have up-to-date used routes as
|
|
507
|
-
* per the last time GC was run.
|
|
508
|
-
* Also, this data store may have been realized during summarize. In that case, the child contexts need to
|
|
509
|
-
* have their used routes updated to determine if its needs to summarize again and to add it to the summary.
|
|
510
|
-
*/
|
|
511
|
-
this.updateChannelUsedRoutes();
|
|
512
|
-
// And notify the pending promise it is now available
|
|
513
|
-
this.channelDeferred.resolve(this.channel);
|
|
514
|
-
}
|
|
515
|
-
catch (error) {
|
|
516
|
-
this.channelDeferred?.reject(error);
|
|
517
|
-
this.mc.logger.sendErrorEvent({
|
|
518
|
-
eventName: "BindRuntimeError",
|
|
519
|
-
}, error);
|
|
520
512
|
}
|
|
513
|
+
else {
|
|
514
|
+
(0, core_utils_1.assert)(this.pending?.length === 0, 0x8f4 /* no pending ops */);
|
|
515
|
+
// Execute data store's entry point to make sure that for a local (aka detached from container) data store, the
|
|
516
|
+
// entryPoint initialization function is called before the data store gets attached and potentially connected to
|
|
517
|
+
// the delta stream, so it gets a chance to do things while the data store is still "purely local".
|
|
518
|
+
// This preserves the behavior from before we introduced entryPoints, where the instantiateDataStore method
|
|
519
|
+
// of data store factories tends to construct the data object (at least kick off an async method that returns
|
|
520
|
+
// it); that code moved to the entryPoint initialization function, so we want to ensure it still executes
|
|
521
|
+
// before the data store is attached.
|
|
522
|
+
await channel.entryPoint.get();
|
|
523
|
+
}
|
|
524
|
+
this.pending = undefined;
|
|
525
|
+
// And now mark the runtime active
|
|
526
|
+
this.loaded = true;
|
|
527
|
+
this.channel = channel;
|
|
528
|
+
// Freeze the package path to ensure that someone doesn't modify it when it is
|
|
529
|
+
// returned in packagePath().
|
|
530
|
+
Object.freeze(this.pkg);
|
|
531
|
+
/**
|
|
532
|
+
* Update the used routes of the channel. If GC has run before this data store was realized, we will have
|
|
533
|
+
* the used routes saved. So, this will ensure that all the child contexts have up-to-date used routes as
|
|
534
|
+
* per the last time GC was run.
|
|
535
|
+
* Also, this data store may have been realized during summarize. In that case, the child contexts need to
|
|
536
|
+
* have their used routes updated to determine if its needs to summarize again and to add it to the summary.
|
|
537
|
+
*/
|
|
538
|
+
this.updateChannelUsedRoutes();
|
|
521
539
|
}
|
|
522
540
|
async getAbsoluteUrl(relativeUrl) {
|
|
523
541
|
if (this.attachState !== container_definitions_1.AttachState.Attached) {
|
|
524
542
|
return undefined;
|
|
525
543
|
}
|
|
526
|
-
return this.
|
|
544
|
+
return this.parentContext.getAbsoluteUrl(relativeUrl);
|
|
527
545
|
}
|
|
528
546
|
/**
|
|
529
547
|
* @deprecated Sets the datastore as root, for aliasing purposes: #7948
|
|
@@ -539,20 +557,18 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
539
557
|
async getBaseGCDetails() {
|
|
540
558
|
return {};
|
|
541
559
|
}
|
|
542
|
-
reSubmit(contents, localOpMetadata) {
|
|
560
|
+
reSubmit(type, contents, localOpMetadata) {
|
|
543
561
|
(0, core_utils_1.assert)(!!this.channel, 0x14b /* "Channel must exist when resubmitting ops" */);
|
|
544
|
-
|
|
545
|
-
this.channel.reSubmit(innerContents.type, innerContents.content, localOpMetadata);
|
|
562
|
+
this.channel.reSubmit(type, contents, localOpMetadata);
|
|
546
563
|
}
|
|
547
|
-
rollback(contents, localOpMetadata) {
|
|
564
|
+
rollback(type, contents, localOpMetadata) {
|
|
548
565
|
if (!this.channel) {
|
|
549
566
|
throw new Error("Channel must exist when rolling back ops");
|
|
550
567
|
}
|
|
551
568
|
if (!this.channel.rollback) {
|
|
552
569
|
throw new Error("Channel doesn't support rollback");
|
|
553
570
|
}
|
|
554
|
-
|
|
555
|
-
this.channel.rollback(innerContents.type, innerContents.content, localOpMetadata);
|
|
571
|
+
this.channel.rollback(type, contents, localOpMetadata);
|
|
556
572
|
}
|
|
557
573
|
async applyStashedOp(contents) {
|
|
558
574
|
if (!this.channel) {
|
|
@@ -577,13 +593,13 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
577
593
|
if (checkTombstone && this.tombstoned) {
|
|
578
594
|
const messageString = `Context is tombstoned! Call site [${callSite}]`;
|
|
579
595
|
const error = new telemetry_utils_1.DataCorruptionError(messageString, safeTelemetryProps);
|
|
580
|
-
(0,
|
|
596
|
+
(0, index_js_2.sendGCUnexpectedUsageEvent)(this.mc, {
|
|
581
597
|
eventName: "GC_Tombstone_DataStore_Changed",
|
|
582
|
-
category: this.
|
|
583
|
-
gcTombstoneEnforcementAllowed: this.
|
|
598
|
+
category: this.gcThrowOnTombstoneUsage ? "error" : "generic",
|
|
599
|
+
gcTombstoneEnforcementAllowed: this.gcTombstoneEnforcementAllowed,
|
|
584
600
|
callSite,
|
|
585
601
|
}, this.pkg, error);
|
|
586
|
-
if (this.
|
|
602
|
+
if (this.gcThrowOnTombstoneUsage) {
|
|
587
603
|
throw error;
|
|
588
604
|
}
|
|
589
605
|
}
|
|
@@ -594,7 +610,7 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
594
610
|
* other clients that are up-to-date till seq# 100 may not have them yet.
|
|
595
611
|
*/
|
|
596
612
|
identifyLocalChangeInSummarizer(eventName, type) {
|
|
597
|
-
if (this.clientDetails.type !==
|
|
613
|
+
if (this.clientDetails.type !== index_js_1.summarizerClientType ||
|
|
598
614
|
this.localChangesTelemetryCount <= 0) {
|
|
599
615
|
return;
|
|
600
616
|
}
|
|
@@ -610,12 +626,13 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
610
626
|
this.localChangesTelemetryCount--;
|
|
611
627
|
}
|
|
612
628
|
getCreateChildSummarizerNodeFn(id, createParam) {
|
|
613
|
-
return (summarizeInternal, getGCDataFn) => this.summarizerNode.createChild(summarizeInternal, id, createParam,
|
|
614
|
-
|
|
615
|
-
|
|
629
|
+
return (summarizeInternal, getGCDataFn) => this.summarizerNode.createChild(summarizeInternal, id, createParam, undefined /* config */, getGCDataFn);
|
|
630
|
+
}
|
|
631
|
+
deleteChildSummarizerNode(id) {
|
|
632
|
+
this.summarizerNode.deleteChild(id);
|
|
616
633
|
}
|
|
617
634
|
async uploadBlob(blob, signal) {
|
|
618
|
-
return this.
|
|
635
|
+
return this.parentContext.uploadBlob(blob, signal);
|
|
619
636
|
}
|
|
620
637
|
}
|
|
621
638
|
exports.FluidDataStoreContext = FluidDataStoreContext;
|
|
@@ -626,15 +643,24 @@ class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
|
626
643
|
throw new Error("Already attached");
|
|
627
644
|
});
|
|
628
645
|
this.initialSnapshotDetailsP = new core_utils_1.LazyPromise(async () => {
|
|
629
|
-
|
|
646
|
+
// Sequence number of the snapshot.
|
|
647
|
+
let sequenceNumber;
|
|
648
|
+
if (this.snapshotFetchRequired) {
|
|
649
|
+
(0, core_utils_1.assert)(this.loadingGroupId !== undefined, 0x8f5 /* groupId should be present to fetch snapshot */);
|
|
650
|
+
const snapshot = await this.runtime.getSnapshotForLoadingGroupId([this.loadingGroupId], [this.id]);
|
|
651
|
+
this._baseSnapshot = snapshot.snapshotTree;
|
|
652
|
+
sequenceNumber = snapshot.sequenceNumber;
|
|
653
|
+
this.snapshotFetchRequired = false;
|
|
654
|
+
}
|
|
655
|
+
let tree = this.baseSnapshot;
|
|
630
656
|
let isRootDataStore = true;
|
|
631
|
-
if (!!tree && tree.blobs[
|
|
657
|
+
if (!!tree && tree.blobs[index_js_1.dataStoreAttributesBlobName] !== undefined) {
|
|
632
658
|
// Need to get through snapshot and use that to populate extraBlobs
|
|
633
|
-
const attributes = await (0, driver_utils_1.readAndParse)(this.storage, tree.blobs[
|
|
659
|
+
const attributes = await (0, driver_utils_1.readAndParse)(this.storage, tree.blobs[index_js_1.dataStoreAttributesBlobName]);
|
|
634
660
|
let pkgFromSnapshot;
|
|
635
661
|
// Use the snapshotFormatVersion to determine how the pkg is encoded in the snapshot.
|
|
636
662
|
// For snapshotFormatVersion = "0.1" (1) or above, pkg is jsonified, otherwise it is just a string.
|
|
637
|
-
const formatVersion = (0,
|
|
663
|
+
const formatVersion = (0, index_js_1.getAttributesFormatVersion)(attributes);
|
|
638
664
|
if (formatVersion < 1) {
|
|
639
665
|
pkgFromSnapshot =
|
|
640
666
|
attributes.pkg.startsWith('["') && attributes.pkg.endsWith('"]')
|
|
@@ -651,19 +677,22 @@ class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
|
651
677
|
* roots in the document but they won't break.
|
|
652
678
|
*/
|
|
653
679
|
isRootDataStore = attributes.isRootDataStore ?? true;
|
|
654
|
-
if ((0,
|
|
680
|
+
if ((0, index_js_1.hasIsolatedChannels)(attributes)) {
|
|
655
681
|
tree = tree.trees[runtime_definitions_1.channelsTreeName];
|
|
656
682
|
(0, core_utils_1.assert)(tree !== undefined, 0x1fe /* "isolated channels subtree should exist in remote datastore snapshot" */);
|
|
657
683
|
}
|
|
658
684
|
}
|
|
685
|
+
(0, core_utils_1.assert)(this.pkg !== undefined, 0x8f6 /* The datastore context package should be defined */);
|
|
659
686
|
return {
|
|
660
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
661
687
|
pkg: this.pkg,
|
|
662
688
|
isRootDataStore,
|
|
663
689
|
snapshot: tree,
|
|
690
|
+
sequenceNumber,
|
|
664
691
|
};
|
|
665
692
|
});
|
|
666
|
-
this.
|
|
693
|
+
this._baseSnapshot = props.snapshotTree;
|
|
694
|
+
this.snapshotFetchRequired = !!props.snapshotTree?.omitted;
|
|
695
|
+
this.runtime = props.parentContext.containerRuntime;
|
|
667
696
|
if (props.snapshotTree !== undefined) {
|
|
668
697
|
this.summarizerNode.updateBaseSummaryState(props.snapshotTree);
|
|
669
698
|
}
|
|
@@ -671,7 +700,10 @@ class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
|
671
700
|
async getInitialSnapshotDetails() {
|
|
672
701
|
return this.initialSnapshotDetailsP;
|
|
673
702
|
}
|
|
674
|
-
|
|
703
|
+
/**
|
|
704
|
+
* @see FluidDataStoreContext.getAttachData
|
|
705
|
+
*/
|
|
706
|
+
getAttachData(includeGCData) {
|
|
675
707
|
throw new Error("Cannot attach remote store");
|
|
676
708
|
}
|
|
677
709
|
}
|
|
@@ -689,8 +721,8 @@ class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
689
721
|
if (snapshot !== undefined) {
|
|
690
722
|
// Get the dataStore attributes.
|
|
691
723
|
// Note: storage can be undefined in special case while detached.
|
|
692
|
-
attributes = await (0,
|
|
693
|
-
if ((0,
|
|
724
|
+
attributes = await (0, index_js_1.getFluidDataStoreAttributes)(this.storage, snapshot);
|
|
725
|
+
if ((0, index_js_1.hasIsolatedChannels)(attributes)) {
|
|
694
726
|
snapshot = snapshot.trees[runtime_definitions_1.channelsTreeName];
|
|
695
727
|
(0, core_utils_1.assert)(snapshot !== undefined, 0x1ff /* "isolated channels subtree should exist in local datastore snapshot" */);
|
|
696
728
|
}
|
|
@@ -731,23 +763,32 @@ class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
731
763
|
this._attachState = container_definitions_1.AttachState.Attached;
|
|
732
764
|
});
|
|
733
765
|
}
|
|
734
|
-
|
|
766
|
+
/**
|
|
767
|
+
* @see FluidDataStoreContext.getAttachData
|
|
768
|
+
*/
|
|
769
|
+
getAttachData(includeGCData, telemetryContext) {
|
|
735
770
|
(0, core_utils_1.assert)(this.channel !== undefined, 0x14f /* "There should be a channel when generating attach message" */);
|
|
736
771
|
(0, core_utils_1.assert)(this.pkg !== undefined, 0x150 /* "pkg should be available in local data store context" */);
|
|
737
|
-
const
|
|
772
|
+
const attachSummary = this.channel.getAttachSummary(telemetryContext);
|
|
738
773
|
// Wrap dds summaries in .channels subtree.
|
|
739
|
-
(0,
|
|
774
|
+
(0, index_js_1.wrapSummaryInChannelsTree)(attachSummary);
|
|
740
775
|
// Add data store's attributes to the summary.
|
|
741
776
|
const attributes = createAttributes(this.pkg, this.isInMemoryRoot());
|
|
742
|
-
(0, runtime_utils_1.addBlobToSummary)(
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
777
|
+
(0, runtime_utils_1.addBlobToSummary)(attachSummary, index_js_1.dataStoreAttributesBlobName, JSON.stringify(attributes));
|
|
778
|
+
if (includeGCData) {
|
|
779
|
+
const gcData = this.channel.getAttachGCData?.(telemetryContext);
|
|
780
|
+
if (gcData !== undefined) {
|
|
781
|
+
(0, runtime_utils_1.addBlobToSummary)(attachSummary, runtime_definitions_1.gcDataBlobKey, JSON.stringify(gcData));
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
// Add loadingGroupId to the summary
|
|
785
|
+
if (this.loadingGroupId !== undefined) {
|
|
786
|
+
attachSummary.summary.groupId = this.loadingGroupId;
|
|
787
|
+
}
|
|
788
|
+
return {
|
|
789
|
+
attachSummary,
|
|
748
790
|
type: this.pkg[this.pkg.length - 1],
|
|
749
791
|
};
|
|
750
|
-
return message;
|
|
751
792
|
}
|
|
752
793
|
async getInitialSnapshotDetails() {
|
|
753
794
|
return this.initialSnapshotDetailsP;
|
|
@@ -761,7 +802,7 @@ class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
761
802
|
*/
|
|
762
803
|
delete() {
|
|
763
804
|
// TODO: GC:Validation - potentially prevent this from happening or asserting. Maybe throw here.
|
|
764
|
-
(0,
|
|
805
|
+
(0, index_js_2.sendGCUnexpectedUsageEvent)(this.mc, {
|
|
765
806
|
eventName: "GC_Deleted_DataStore_Unexpected_Delete",
|
|
766
807
|
message: "Unexpected deletion of a local data store context",
|
|
767
808
|
category: "error",
|
|
@@ -793,29 +834,29 @@ class LocalDetachedFluidDataStoreContext extends LocalFluidDataStoreContextBase
|
|
|
793
834
|
constructor(props) {
|
|
794
835
|
super(props);
|
|
795
836
|
this.detachedRuntimeCreation = true;
|
|
837
|
+
this.channelToDataStoreFn = props.channelToDataStoreFn;
|
|
796
838
|
}
|
|
797
839
|
async attachRuntime(registry, dataStoreChannel) {
|
|
798
840
|
(0, core_utils_1.assert)(this.detachedRuntimeCreation, 0x154 /* "runtime creation is already attached" */);
|
|
799
841
|
this.detachedRuntimeCreation = false;
|
|
800
|
-
(0, core_utils_1.assert)(this.
|
|
801
|
-
this.
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
}
|
|
842
|
+
(0, core_utils_1.assert)(this.channelP === undefined, 0x155 /* "channel deferral is already set" */);
|
|
843
|
+
this.channelP = Promise.resolve()
|
|
844
|
+
.then(async () => {
|
|
845
|
+
const factory = registry.IFluidDataStoreFactory;
|
|
846
|
+
const factory2 = await this.factoryFromPackagePath();
|
|
847
|
+
(0, core_utils_1.assert)(factory2 === factory, 0x156 /* "Unexpected factory for package path" */);
|
|
848
|
+
await super.bindRuntime(dataStoreChannel, false /* existing */);
|
|
849
|
+
(0, core_utils_1.assert)(!(await this.isRoot()), 0x8f7 /* there are no more createRootDataStore() kind of APIs! */);
|
|
850
|
+
return dataStoreChannel;
|
|
851
|
+
})
|
|
852
|
+
.catch((error) => {
|
|
853
|
+
this.mc.logger.sendErrorEvent({ eventName: "AttachRuntimeError" }, error);
|
|
854
|
+
// The following two lines result in same exception thrown.
|
|
855
|
+
// But we need to ensure that this.channelDeferred.promise is "observed", as otherwise
|
|
856
|
+
// out UT reports unhandled exception
|
|
857
|
+
throw error;
|
|
858
|
+
});
|
|
859
|
+
return this.channelToDataStoreFn(await this.channelP);
|
|
819
860
|
}
|
|
820
861
|
async getInitialSnapshotDetails() {
|
|
821
862
|
if (this.detachedRuntimeCreation) {
|