@fluidframework/container-runtime 2.0.0-rc.4.0.6 → 2.0.0-rc.5.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/CHANGELOG.md +46 -0
- package/api-extractor/api-extractor-lint-bundle.json +5 -0
- package/api-extractor/api-extractor-lint-legacy.cjs.json +5 -0
- package/api-extractor/api-extractor-lint-legacy.esm.json +5 -0
- package/api-extractor/api-extractor-lint-public.cjs.json +5 -0
- package/api-extractor/api-extractor-lint-public.esm.json +5 -0
- package/api-extractor.json +1 -1
- package/api-report/{container-runtime.api.md → container-runtime.alpha.api.md} +33 -516
- package/api-report/container-runtime.beta.api.md +73 -0
- package/api-report/container-runtime.public.api.md +73 -0
- package/biome.jsonc +4 -0
- package/container-runtime.test-files.tar +0 -0
- package/dist/batchTracker.d.ts.map +1 -1
- package/dist/batchTracker.js.map +1 -1
- package/dist/blobManager.d.ts +3 -20
- package/dist/blobManager.d.ts.map +1 -1
- package/dist/blobManager.js +1 -35
- package/dist/blobManager.js.map +1 -1
- package/dist/channelCollection.d.ts +21 -12
- package/dist/channelCollection.d.ts.map +1 -1
- package/dist/channelCollection.js +113 -110
- package/dist/channelCollection.js.map +1 -1
- package/dist/connectionTelemetry.d.ts +1 -1
- package/dist/connectionTelemetry.d.ts.map +1 -1
- package/dist/connectionTelemetry.js +14 -14
- package/dist/connectionTelemetry.js.map +1 -1
- package/dist/containerHandleContext.d.ts +2 -1
- package/dist/containerHandleContext.d.ts.map +1 -1
- package/dist/containerHandleContext.js.map +1 -1
- package/dist/containerRuntime.d.ts +17 -34
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +109 -145
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStore.d.ts.map +1 -1
- package/dist/dataStore.js.map +1 -1
- package/dist/dataStoreContext.d.ts +30 -44
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +26 -40
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStoreContexts.d.ts.map +1 -1
- package/dist/dataStoreContexts.js.map +1 -1
- package/dist/dataStoreRegistry.js.map +1 -1
- package/dist/deltaManagerProxies.d.ts +4 -3
- package/dist/deltaManagerProxies.d.ts.map +1 -1
- package/dist/deltaManagerProxies.js.map +1 -1
- package/dist/deltaScheduler.d.ts +1 -1
- package/dist/deltaScheduler.d.ts.map +1 -1
- package/dist/deltaScheduler.js +1 -3
- package/dist/deltaScheduler.js.map +1 -1
- package/dist/gc/garbageCollection.d.ts +5 -5
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +29 -30
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcConfigs.d.ts.map +1 -1
- package/dist/gc/gcConfigs.js +12 -31
- package/dist/gc/gcConfigs.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +10 -38
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js +1 -5
- package/dist/gc/gcDefinitions.js.map +1 -1
- package/dist/gc/gcHelpers.d.ts +2 -3
- package/dist/gc/gcHelpers.d.ts.map +1 -1
- package/dist/gc/gcHelpers.js.map +1 -1
- package/dist/gc/gcReferenceGraphAlgorithm.js.map +1 -1
- package/dist/gc/gcSummaryDefinitions.d.ts +1 -1
- package/dist/gc/gcSummaryDefinitions.d.ts.map +1 -1
- package/dist/gc/gcSummaryDefinitions.js.map +1 -1
- package/dist/gc/gcSummaryStateTracker.d.ts +2 -35
- package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/dist/gc/gcSummaryStateTracker.js +9 -62
- package/dist/gc/gcSummaryStateTracker.js.map +1 -1
- package/dist/gc/gcTelemetry.d.ts +2 -2
- package/dist/gc/gcTelemetry.d.ts.map +1 -1
- package/dist/gc/gcTelemetry.js +3 -9
- package/dist/gc/gcTelemetry.js.map +1 -1
- package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
- package/dist/gc/index.d.ts +1 -1
- package/dist/gc/index.d.ts.map +1 -1
- package/dist/gc/index.js +1 -3
- package/dist/gc/index.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +1 -1
- package/dist/messageTypes.d.ts +6 -22
- package/dist/messageTypes.d.ts.map +1 -1
- package/dist/messageTypes.js.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 +1 -1
- package/dist/opLifecycle/index.d.ts.map +1 -1
- package/dist/opLifecycle/index.js.map +1 -1
- package/dist/opLifecycle/opCompressor.d.ts +11 -1
- package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opCompressor.js +13 -2
- 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 +1 -2
- package/dist/opLifecycle/opDecompressor.js.map +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts +10 -3
- package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/dist/opLifecycle/opGroupingManager.js +7 -0
- package/dist/opLifecycle/opGroupingManager.js.map +1 -1
- package/dist/opLifecycle/opSplitter.d.ts +4 -2
- package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
- package/dist/opLifecycle/opSplitter.js +13 -8
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +10 -0
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +13 -18
- package/dist/opLifecycle/outbox.js.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.d.ts +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.js +2 -2
- package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/dist/opProperties.d.ts +1 -1
- package/dist/opProperties.d.ts.map +1 -1
- package/dist/opProperties.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +15 -5
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/scheduleManager.d.ts +1 -1
- package/dist/scheduleManager.d.ts.map +1 -1
- package/dist/scheduleManager.js.map +1 -1
- package/dist/storageServiceWithAttachBlobs.js.map +1 -1
- package/dist/summary/documentSchema.d.ts.map +1 -1
- package/dist/summary/documentSchema.js +2 -3
- package/dist/summary/documentSchema.js.map +1 -1
- package/dist/summary/index.d.ts +2 -2
- package/dist/summary/index.d.ts.map +1 -1
- package/dist/summary/index.js.map +1 -1
- package/dist/summary/orderedClientElection.d.ts +4 -2
- package/dist/summary/orderedClientElection.d.ts.map +1 -1
- package/dist/summary/orderedClientElection.js +35 -13
- package/dist/summary/orderedClientElection.js.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/dist/summary/runningSummarizer.d.ts +1 -6
- package/dist/summary/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/runningSummarizer.js +23 -110
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summarizer.d.ts +1 -1
- package/dist/summary/summarizer.d.ts.map +1 -1
- package/dist/summary/summarizer.js +4 -1
- package/dist/summary/summarizer.js.map +1 -1
- package/dist/summary/summarizerClientElection.d.ts +1 -1
- package/dist/summary/summarizerClientElection.d.ts.map +1 -1
- package/dist/summary/summarizerClientElection.js +2 -2
- package/dist/summary/summarizerClientElection.js.map +1 -1
- package/dist/summary/summarizerHeuristics.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.d.ts +2 -3
- package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.js +16 -16
- package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +2 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +2 -3
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js +5 -2
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/dist/summary/summarizerTypes.d.ts +17 -29
- package/dist/summary/summarizerTypes.d.ts.map +1 -1
- package/dist/summary/summarizerTypes.js.map +1 -1
- package/dist/summary/summaryCollection.d.ts +1 -1
- package/dist/summary/summaryCollection.d.ts.map +1 -1
- package/dist/summary/summaryCollection.js +11 -11
- package/dist/summary/summaryCollection.js.map +1 -1
- package/dist/summary/summaryFormat.d.ts +2 -3
- package/dist/summary/summaryFormat.d.ts.map +1 -1
- package/dist/summary/summaryFormat.js +2 -2
- package/dist/summary/summaryFormat.js.map +1 -1
- package/dist/summary/summaryGenerator.d.ts +7 -8
- package/dist/summary/summaryGenerator.d.ts.map +1 -1
- package/dist/summary/summaryGenerator.js +27 -24
- package/dist/summary/summaryGenerator.js.map +1 -1
- package/dist/summary/summaryManager.d.ts.map +1 -1
- package/dist/summary/summaryManager.js +1 -2
- package/dist/summary/summaryManager.js.map +1 -1
- package/dist/throttler.d.ts.map +1 -1
- package/dist/throttler.js +3 -1
- package/dist/throttler.js.map +1 -1
- package/lib/batchTracker.d.ts.map +1 -1
- package/lib/batchTracker.js +1 -1
- package/lib/batchTracker.js.map +1 -1
- package/lib/blobManager.d.ts +3 -20
- package/lib/blobManager.d.ts.map +1 -1
- package/lib/blobManager.js +2 -36
- package/lib/blobManager.js.map +1 -1
- package/lib/channelCollection.d.ts +21 -12
- package/lib/channelCollection.d.ts.map +1 -1
- package/lib/channelCollection.js +114 -112
- package/lib/channelCollection.js.map +1 -1
- package/lib/connectionTelemetry.d.ts +1 -1
- package/lib/connectionTelemetry.d.ts.map +1 -1
- package/lib/connectionTelemetry.js +2 -2
- package/lib/connectionTelemetry.js.map +1 -1
- package/lib/containerHandleContext.d.ts +2 -1
- package/lib/containerHandleContext.d.ts.map +1 -1
- package/lib/containerHandleContext.js.map +1 -1
- package/lib/containerRuntime.d.ts +17 -34
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +106 -142
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStore.d.ts.map +1 -1
- package/lib/dataStore.js.map +1 -1
- package/lib/dataStoreContext.d.ts +30 -44
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +29 -43
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/dataStoreContexts.d.ts.map +1 -1
- package/lib/dataStoreContexts.js +1 -1
- package/lib/dataStoreContexts.js.map +1 -1
- package/lib/dataStoreRegistry.js.map +1 -1
- package/lib/deltaManagerProxies.d.ts +4 -3
- package/lib/deltaManagerProxies.d.ts.map +1 -1
- package/lib/deltaManagerProxies.js.map +1 -1
- package/lib/deltaScheduler.d.ts +1 -1
- package/lib/deltaScheduler.d.ts.map +1 -1
- package/lib/deltaScheduler.js +1 -3
- package/lib/deltaScheduler.js.map +1 -1
- package/lib/gc/garbageCollection.d.ts +5 -5
- package/lib/gc/garbageCollection.d.ts.map +1 -1
- package/lib/gc/garbageCollection.js +30 -31
- package/lib/gc/garbageCollection.js.map +1 -1
- package/lib/gc/gcConfigs.d.ts.map +1 -1
- package/lib/gc/gcConfigs.js +13 -32
- package/lib/gc/gcConfigs.js.map +1 -1
- package/lib/gc/gcDefinitions.d.ts +10 -38
- package/lib/gc/gcDefinitions.d.ts.map +1 -1
- package/lib/gc/gcDefinitions.js +0 -4
- package/lib/gc/gcDefinitions.js.map +1 -1
- package/lib/gc/gcHelpers.d.ts +2 -3
- package/lib/gc/gcHelpers.d.ts.map +1 -1
- package/lib/gc/gcHelpers.js.map +1 -1
- package/lib/gc/gcReferenceGraphAlgorithm.js.map +1 -1
- package/lib/gc/gcSummaryDefinitions.d.ts +1 -1
- package/lib/gc/gcSummaryDefinitions.d.ts.map +1 -1
- package/lib/gc/gcSummaryDefinitions.js.map +1 -1
- package/lib/gc/gcSummaryStateTracker.d.ts +2 -35
- package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/lib/gc/gcSummaryStateTracker.js +4 -57
- package/lib/gc/gcSummaryStateTracker.js.map +1 -1
- package/lib/gc/gcTelemetry.d.ts +2 -2
- package/lib/gc/gcTelemetry.d.ts.map +1 -1
- package/lib/gc/gcTelemetry.js +3 -9
- package/lib/gc/gcTelemetry.js.map +1 -1
- package/lib/gc/gcUnreferencedStateTracker.js.map +1 -1
- package/lib/gc/index.d.ts +1 -1
- package/lib/gc/index.d.ts.map +1 -1
- package/lib/gc/index.js +1 -1
- package/lib/gc/index.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/legacy.d.ts +1 -1
- package/lib/messageTypes.d.ts +6 -22
- package/lib/messageTypes.d.ts.map +1 -1
- package/lib/messageTypes.js.map +1 -1
- package/lib/opLifecycle/batchManager.js.map +1 -1
- package/lib/opLifecycle/definitions.d.ts +2 -2
- package/lib/opLifecycle/definitions.d.ts.map +1 -1
- package/lib/opLifecycle/definitions.js.map +1 -1
- package/lib/opLifecycle/index.d.ts +1 -1
- package/lib/opLifecycle/index.d.ts.map +1 -1
- package/lib/opLifecycle/index.js +1 -1
- package/lib/opLifecycle/index.js.map +1 -1
- package/lib/opLifecycle/opCompressor.d.ts +11 -1
- package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opCompressor.js +13 -2
- package/lib/opLifecycle/opCompressor.js.map +1 -1
- package/lib/opLifecycle/opDecompressor.d.ts +1 -1
- package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opDecompressor.js +1 -2
- package/lib/opLifecycle/opDecompressor.js.map +1 -1
- package/lib/opLifecycle/opGroupingManager.d.ts +10 -3
- package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/lib/opLifecycle/opGroupingManager.js +7 -0
- package/lib/opLifecycle/opGroupingManager.js.map +1 -1
- package/lib/opLifecycle/opSplitter.d.ts +4 -2
- package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
- package/lib/opLifecycle/opSplitter.js +13 -8
- package/lib/opLifecycle/opSplitter.js.map +1 -1
- package/lib/opLifecycle/outbox.d.ts +10 -0
- package/lib/opLifecycle/outbox.d.ts.map +1 -1
- package/lib/opLifecycle/outbox.js +13 -18
- package/lib/opLifecycle/outbox.js.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.ts +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.js +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/lib/opProperties.d.ts +1 -1
- package/lib/opProperties.d.ts.map +1 -1
- package/lib/opProperties.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/pendingStateManager.d.ts.map +1 -1
- package/lib/pendingStateManager.js +15 -5
- package/lib/pendingStateManager.js.map +1 -1
- package/lib/scheduleManager.d.ts +1 -1
- package/lib/scheduleManager.d.ts.map +1 -1
- package/lib/scheduleManager.js.map +1 -1
- package/lib/storageServiceWithAttachBlobs.js.map +1 -1
- package/lib/summary/documentSchema.d.ts.map +1 -1
- package/lib/summary/documentSchema.js +2 -3
- package/lib/summary/documentSchema.js.map +1 -1
- package/lib/summary/index.d.ts +2 -2
- package/lib/summary/index.d.ts.map +1 -1
- package/lib/summary/index.js +1 -1
- package/lib/summary/index.js.map +1 -1
- package/lib/summary/orderedClientElection.d.ts +4 -2
- package/lib/summary/orderedClientElection.d.ts.map +1 -1
- package/lib/summary/orderedClientElection.js +35 -13
- package/lib/summary/orderedClientElection.js.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/lib/summary/runningSummarizer.d.ts +1 -6
- package/lib/summary/runningSummarizer.d.ts.map +1 -1
- package/lib/summary/runningSummarizer.js +22 -109
- package/lib/summary/runningSummarizer.js.map +1 -1
- package/lib/summary/summarizer.d.ts +1 -1
- package/lib/summary/summarizer.d.ts.map +1 -1
- package/lib/summary/summarizer.js +4 -1
- package/lib/summary/summarizer.js.map +1 -1
- package/lib/summary/summarizerClientElection.d.ts +1 -1
- package/lib/summary/summarizerClientElection.d.ts.map +1 -1
- package/lib/summary/summarizerClientElection.js +1 -1
- package/lib/summary/summarizerClientElection.js.map +1 -1
- package/lib/summary/summarizerHeuristics.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.d.ts +2 -3
- package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.js +14 -14
- package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts +2 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +2 -3
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js +5 -2
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/lib/summary/summarizerTypes.d.ts +17 -29
- package/lib/summary/summarizerTypes.d.ts.map +1 -1
- package/lib/summary/summarizerTypes.js.map +1 -1
- package/lib/summary/summaryCollection.d.ts +1 -1
- package/lib/summary/summaryCollection.d.ts.map +1 -1
- package/lib/summary/summaryCollection.js +3 -3
- package/lib/summary/summaryCollection.js.map +1 -1
- package/lib/summary/summaryFormat.d.ts +2 -3
- package/lib/summary/summaryFormat.d.ts.map +1 -1
- package/lib/summary/summaryFormat.js +2 -2
- package/lib/summary/summaryFormat.js.map +1 -1
- package/lib/summary/summaryGenerator.d.ts +7 -8
- package/lib/summary/summaryGenerator.d.ts.map +1 -1
- package/lib/summary/summaryGenerator.js +26 -23
- package/lib/summary/summaryGenerator.js.map +1 -1
- package/lib/summary/summaryManager.d.ts.map +1 -1
- package/lib/summary/summaryManager.js +1 -2
- package/lib/summary/summaryManager.js.map +1 -1
- package/lib/throttler.d.ts.map +1 -1
- package/lib/throttler.js +3 -1
- package/lib/throttler.js.map +1 -1
- package/lib/tsdoc-metadata.json +1 -1
- package/package.json +92 -28
- package/src/batchTracker.ts +5 -2
- package/src/blobManager.ts +21 -61
- package/src/channelCollection.ts +179 -186
- package/src/connectionTelemetry.ts +18 -12
- package/src/containerHandleContext.ts +2 -1
- package/src/containerRuntime.ts +166 -214
- package/src/dataStore.ts +2 -1
- package/src/dataStoreContext.ts +79 -98
- package/src/dataStoreContexts.ts +7 -2
- package/src/deltaManagerProxies.ts +15 -6
- package/src/deltaScheduler.ts +5 -4
- package/src/gc/garbageCollection.md +0 -8
- package/src/gc/garbageCollection.ts +66 -57
- package/src/gc/gcConfigs.ts +15 -37
- package/src/gc/gcDefinitions.ts +20 -39
- package/src/gc/gcHelpers.ts +8 -4
- package/src/gc/gcSummaryDefinitions.ts +1 -1
- package/src/gc/gcSummaryStateTracker.ts +11 -74
- package/src/gc/gcTelemetry.ts +4 -11
- package/src/gc/index.ts +0 -2
- package/src/index.ts +1 -2
- package/src/messageTypes.ts +8 -24
- package/src/opLifecycle/README.md +120 -160
- package/src/opLifecycle/definitions.ts +2 -2
- package/src/opLifecycle/index.ts +5 -1
- package/src/opLifecycle/opCompressor.ts +13 -2
- package/src/opLifecycle/opDecompressor.ts +3 -7
- package/src/opLifecycle/opGroupingManager.ts +12 -8
- package/src/opLifecycle/opSplitter.ts +22 -11
- package/src/opLifecycle/outbox.ts +14 -32
- package/src/opLifecycle/remoteMessageProcessor.ts +4 -1
- package/src/opProperties.ts +2 -2
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +20 -7
- package/src/scheduleManager.ts +4 -1
- package/src/summary/documentSchema.ts +4 -7
- package/src/summary/images/appTree.png +0 -0
- package/src/summary/images/protocolAndAppTree.png +0 -0
- package/src/summary/images/summaryTree.png +0 -0
- package/src/summary/index.ts +5 -2
- package/src/summary/orderedClientElection.ts +100 -22
- package/src/summary/runningSummarizer.ts +54 -124
- package/src/summary/summarizer.ts +5 -2
- package/src/summary/summarizerClientElection.ts +4 -2
- package/src/summary/summarizerNode/summarizerNode.ts +23 -30
- package/src/summary/summarizerNode/summarizerNodeUtils.ts +9 -3
- package/src/summary/summarizerNode/summarizerNodeWithGc.ts +11 -11
- package/src/summary/summarizerTypes.ts +32 -33
- package/src/summary/summaryCollection.ts +6 -3
- package/src/summary/summaryFormat.ts +18 -10
- package/src/summary/summaryFormats.md +160 -0
- package/src/summary/summaryGenerator.ts +47 -30
- package/src/summary/summaryManager.ts +6 -9
- package/src/throttler.ts +3 -1
- package/tsconfig.json +2 -0
- package/tsdoc.json +4 -0
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.ChannelCollectionFactory = exports.detectOutboundReferences = exports.getSummaryForDatastores = exports.ChannelCollection = exports.wrapContextForInnerChannel = exports.wrapContext = exports.AllowInactiveRequestHeaderKey = exports.AllowTombstoneRequestHeaderKey = exports.RuntimeHeaders = void 0;
|
|
7
|
+
exports.ChannelCollectionFactory = exports.detectOutboundReferences = exports.getSummaryForDatastores = exports.ChannelCollection = exports.getLocalDataStoreType = exports.wrapContextForInnerChannel = exports.wrapContext = exports.AllowInactiveRequestHeaderKey = exports.AllowTombstoneRequestHeaderKey = exports.RuntimeHeaders = void 0;
|
|
8
8
|
const container_definitions_1 = require("@fluidframework/container-definitions");
|
|
9
9
|
const internal_1 = require("@fluidframework/core-utils/internal");
|
|
10
10
|
const internal_2 = require("@fluidframework/datastore/internal");
|
|
@@ -59,7 +59,7 @@ function wrapContext(context) {
|
|
|
59
59
|
},
|
|
60
60
|
deltaManager: context.deltaManager,
|
|
61
61
|
storage: context.storage,
|
|
62
|
-
|
|
62
|
+
baseLogger: context.baseLogger,
|
|
63
63
|
get clientDetails() {
|
|
64
64
|
return context.clientDetails;
|
|
65
65
|
},
|
|
@@ -99,8 +99,8 @@ function wrapContext(context) {
|
|
|
99
99
|
uploadBlob: async (...args) => {
|
|
100
100
|
return context.uploadBlob(...args);
|
|
101
101
|
},
|
|
102
|
-
|
|
103
|
-
return context.
|
|
102
|
+
addedGCOutboundRoute: (...args) => {
|
|
103
|
+
return context.addedGCOutboundRoute(...args);
|
|
104
104
|
},
|
|
105
105
|
getCreateChildSummarizerNodeFn: (...args) => {
|
|
106
106
|
return context.getCreateChildSummarizerNodeFn?.(...args);
|
|
@@ -145,6 +145,13 @@ function wrapContextForInnerChannel(id, parentContext) {
|
|
|
145
145
|
return context;
|
|
146
146
|
}
|
|
147
147
|
exports.wrapContextForInnerChannel = wrapContextForInnerChannel;
|
|
148
|
+
/**
|
|
149
|
+
* Returns the type of the given local data store from its package path.
|
|
150
|
+
*/
|
|
151
|
+
function getLocalDataStoreType(localDataStore) {
|
|
152
|
+
return localDataStore.packagePath[localDataStore.packagePath.length - 1];
|
|
153
|
+
}
|
|
154
|
+
exports.getLocalDataStoreType = getLocalDataStoreType;
|
|
148
155
|
/**
|
|
149
156
|
* This class encapsulates data store handling. Currently it is only used by the container runtime,
|
|
150
157
|
* but eventually could be hosted on any channel once we formalize the channel api boundary.
|
|
@@ -162,16 +169,12 @@ class ChannelCollection {
|
|
|
162
169
|
// 0.24 back-compat attachingBeforeSummary
|
|
163
170
|
this.attachOpFiredForDataStore = new Set();
|
|
164
171
|
this.disposeOnce = new internal_1.Lazy(() => this.contexts.dispose());
|
|
165
|
-
// Stores the ids of new data stores between two GC runs. This is used to notify the garbage collector of new
|
|
166
|
-
// root data stores that are added.
|
|
167
|
-
this.dataStoresSinceLastGC = [];
|
|
168
172
|
this.pendingAliasMap = new Map();
|
|
169
173
|
/** For sampling. Only log once per container */
|
|
170
174
|
this.shouldSendAttachLog = true;
|
|
171
175
|
this.dispose = () => this.disposeOnce.value;
|
|
172
176
|
this.mc = (0, internal_6.createChildMonitoringContext)({ logger: baseLogger });
|
|
173
177
|
this.contexts = new dataStoreContexts_js_1.DataStoreContexts(baseLogger);
|
|
174
|
-
this.containerRuntimeHandle = new internal_2.FluidObjectHandle(this.parentContext, "/", this.parentContext.IFluidHandleContext);
|
|
175
178
|
this.entryPoint = new internal_2.FluidObjectHandle(new internal_1.LazyPromise(async () => provideEntryPoint(this)), "", this.parentContext.IFluidHandleContext);
|
|
176
179
|
this.aliasedDataStores = new Set(aliasMap.values());
|
|
177
180
|
// Extract stores stored inside the snapshot
|
|
@@ -259,12 +262,11 @@ class ChannelCollection {
|
|
|
259
262
|
}
|
|
260
263
|
processAttachMessage(message, local) {
|
|
261
264
|
const attachMessage = message.contents;
|
|
262
|
-
this.dataStoresSinceLastGC.push(attachMessage.id);
|
|
263
265
|
// We need to process the GC Data for both local and remote attach messages
|
|
264
266
|
const foundGCData = (0, internal_5.processAttachMessageGCData)(attachMessage.snapshot, (nodeId, toPath) => {
|
|
265
267
|
// nodeId is the relative path under the node being attached. Always starts with "/", but no trailing "/" after an id
|
|
266
268
|
const fromPath = `/${attachMessage.id}${nodeId === "/" ? "" : nodeId}`;
|
|
267
|
-
this.parentContext.
|
|
269
|
+
this.parentContext.addedGCOutboundRoute(fromPath, toPath, message.timestamp);
|
|
268
270
|
});
|
|
269
271
|
// Only log once per container to avoid noise/cost.
|
|
270
272
|
// Allows longitudinal tracking of various state (e.g. foundGCData), and some sampled details
|
|
@@ -336,12 +338,12 @@ class ChannelCollection {
|
|
|
336
338
|
});
|
|
337
339
|
}
|
|
338
340
|
const resolve = localOpMetadata;
|
|
339
|
-
const aliasResult = this.processAliasMessageCore(aliasMessage.internalId, aliasMessage.alias);
|
|
341
|
+
const aliasResult = this.processAliasMessageCore(aliasMessage.internalId, aliasMessage.alias, message.timestamp);
|
|
340
342
|
if (local) {
|
|
341
343
|
resolve(aliasResult);
|
|
342
344
|
}
|
|
343
345
|
}
|
|
344
|
-
processAliasMessageCore(internalId, alias) {
|
|
346
|
+
processAliasMessageCore(internalId, alias, messageTimestampMs) {
|
|
345
347
|
if (this.alreadyProcessed(alias)) {
|
|
346
348
|
return false;
|
|
347
349
|
}
|
|
@@ -358,8 +360,11 @@ class ChannelCollection {
|
|
|
358
360
|
});
|
|
359
361
|
return false;
|
|
360
362
|
}
|
|
361
|
-
|
|
362
|
-
this.
|
|
363
|
+
// If message timestamp doesn't exist, this is called in a detached container. Don't notify GC in that case
|
|
364
|
+
// because it doesn't run in detached container and doesn't need to know about this route.
|
|
365
|
+
if (messageTimestampMs) {
|
|
366
|
+
this.parentContext.addedGCOutboundRoute("/", `/${internalId}`, messageTimestampMs);
|
|
367
|
+
}
|
|
363
368
|
this.aliasMap.set(alias, context.id);
|
|
364
369
|
this.aliasedDataStores.add(context.id);
|
|
365
370
|
context.setInMemoryRoot();
|
|
@@ -370,14 +375,17 @@ class ChannelCollection {
|
|
|
370
375
|
}
|
|
371
376
|
/** Package up the context's attach summary etc into an IAttachMessage */
|
|
372
377
|
generateAttachMessage(localContext) {
|
|
373
|
-
|
|
374
|
-
const
|
|
378
|
+
// Get the attach summary.
|
|
379
|
+
const attachSummary = localContext.getAttachSummary();
|
|
380
|
+
// Get the GC data and add it to the attach summary.
|
|
381
|
+
const attachGCData = localContext.getAttachGCData();
|
|
382
|
+
(0, internal_5.addBlobToSummary)(attachSummary, internal_4.gcDataBlobKey, JSON.stringify(attachGCData));
|
|
375
383
|
// Attach message needs the summary in ITree format. Convert the ISummaryTree into an ITree.
|
|
376
384
|
const snapshot = (0, internal_5.convertSummaryTreeToITree)(attachSummary.summary);
|
|
377
385
|
return {
|
|
378
386
|
id: localContext.id,
|
|
379
387
|
snapshot,
|
|
380
|
-
type,
|
|
388
|
+
type: getLocalDataStoreType(localContext),
|
|
381
389
|
};
|
|
382
390
|
}
|
|
383
391
|
/**
|
|
@@ -459,7 +467,7 @@ class ChannelCollection {
|
|
|
459
467
|
snapshotTree: undefined,
|
|
460
468
|
createProps,
|
|
461
469
|
loadingGroupId,
|
|
462
|
-
channelToDataStoreFn: (channel) => (0, dataStore_js_1.channelToDataStore)(channel, id, this, (0, internal_6.createChildLogger)({ logger: this.parentContext.
|
|
470
|
+
channelToDataStoreFn: (channel) => (0, dataStore_js_1.channelToDataStore)(channel, id, this, (0, internal_6.createChildLogger)({ logger: this.parentContext.baseLogger })),
|
|
463
471
|
});
|
|
464
472
|
this.contexts.addUnbound(context);
|
|
465
473
|
return context;
|
|
@@ -571,7 +579,7 @@ class ChannelCollection {
|
|
|
571
579
|
this.pendingAttach.set(message.id, message);
|
|
572
580
|
}
|
|
573
581
|
}
|
|
574
|
-
process(message, local, localMessageMetadata
|
|
582
|
+
process(message, local, localMessageMetadata) {
|
|
575
583
|
switch (message.type) {
|
|
576
584
|
case messageTypes_js_1.ContainerMessageType.Attach:
|
|
577
585
|
this.processAttachMessage(message, local);
|
|
@@ -588,13 +596,8 @@ class ChannelCollection {
|
|
|
588
596
|
contents: innerContents.content,
|
|
589
597
|
};
|
|
590
598
|
this.processChannelOp(envelope.address, transformed, local, localMessageMetadata);
|
|
591
|
-
//
|
|
592
|
-
|
|
593
|
-
if (this.mc.config.getBoolean(index_js_1.detectOutboundRoutesViaDDSKey) !== true &&
|
|
594
|
-
addedOutboundReference !== undefined) {
|
|
595
|
-
// Notify GC of any outbound references that were added by this op.
|
|
596
|
-
detectOutboundReferences(envelope.address, transformed.contents, addedOutboundReference);
|
|
597
|
-
}
|
|
599
|
+
// Notify GC of any outbound references that were added by this op.
|
|
600
|
+
detectOutboundReferences(envelope.address, transformed.contents, (fromPath, toPath) => this.parentContext.addedGCOutboundRoute(fromPath, toPath, message.timestamp));
|
|
598
601
|
break;
|
|
599
602
|
}
|
|
600
603
|
default:
|
|
@@ -675,13 +678,11 @@ class ChannelCollection {
|
|
|
675
678
|
if (!this.isDataStoreDeleted(dataStoreNodePath)) {
|
|
676
679
|
return false;
|
|
677
680
|
}
|
|
678
|
-
const idToLog = originalRequest !== undefined
|
|
679
|
-
? (0, index_js_1.urlToGCNodePath)(originalRequest.url)
|
|
680
|
-
: dataStoreNodePath;
|
|
681
|
+
const idToLog = originalRequest !== undefined ? (0, index_js_1.urlToGCNodePath)(originalRequest.url) : dataStoreNodePath;
|
|
681
682
|
// Log the package details asynchronously since getInitialSnapshotDetails is async
|
|
682
|
-
const
|
|
683
|
-
if (
|
|
684
|
-
|
|
683
|
+
const recentlyDeletedContext = this.contexts.getRecentlyDeletedContext(id);
|
|
684
|
+
if (recentlyDeletedContext !== undefined) {
|
|
685
|
+
recentlyDeletedContext
|
|
685
686
|
.getInitialSnapshotDetails()
|
|
686
687
|
.then((details) => {
|
|
687
688
|
return details.pkg.join("/");
|
|
@@ -767,80 +768,94 @@ class ChannelCollection {
|
|
|
767
768
|
get size() {
|
|
768
769
|
return this.contexts.size;
|
|
769
770
|
}
|
|
770
|
-
async summarize(fullTree, trackState, telemetryContext) {
|
|
771
|
-
const summaryBuilder = new internal_5.SummaryTreeBuilder();
|
|
772
|
-
// Iterate over each store and ask it to snapshot
|
|
773
|
-
await Promise.all(Array.from(this.contexts)
|
|
774
|
-
.filter(([_, context]) => {
|
|
775
|
-
// Summarizer works only with clients with no local changes. A data store in attaching
|
|
776
|
-
// state indicates an op was sent to attach a local data store, and the the attach op
|
|
777
|
-
// had not yet round tripped back to the client.
|
|
778
|
-
if (context.attachState === container_definitions_1.AttachState.Attaching) {
|
|
779
|
-
// Formerly assert 0x588
|
|
780
|
-
const error = internal_6.DataProcessingError.create("Local data store detected in attaching state during summarize", "summarize");
|
|
781
|
-
throw error;
|
|
782
|
-
}
|
|
783
|
-
return context.attachState === container_definitions_1.AttachState.Attached;
|
|
784
|
-
})
|
|
785
|
-
.map(async ([contextId, context]) => {
|
|
786
|
-
const contextSummary = await context.summarize(fullTree, trackState, telemetryContext);
|
|
787
|
-
summaryBuilder.addWithStats(contextId, contextSummary);
|
|
788
|
-
}));
|
|
789
|
-
return summaryBuilder.getSummaryTree();
|
|
790
|
-
}
|
|
791
771
|
/**
|
|
792
772
|
* Create a summary. Used when attaching or serializing a detached container.
|
|
793
773
|
*/
|
|
794
774
|
getAttachSummary(telemetryContext) {
|
|
795
775
|
const builder = new internal_5.SummaryTreeBuilder();
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
776
|
+
this.visitLocalBoundContextsDuringAttach((contextId, context) => {
|
|
777
|
+
let dataStoreSummary;
|
|
778
|
+
if (context.isLoaded) {
|
|
779
|
+
dataStoreSummary = context.getAttachSummary(telemetryContext);
|
|
780
|
+
}
|
|
781
|
+
else {
|
|
782
|
+
// If this data store is not yet loaded, then there should be no changes in the snapshot from
|
|
783
|
+
// which it was created as it is detached container. So just use the previous snapshot.
|
|
784
|
+
(0, internal_1.assert)(!!this.baseSnapshot, 0x166 /* "BaseSnapshot should be there as detached container loaded from snapshot" */);
|
|
785
|
+
dataStoreSummary = (0, internal_5.convertSnapshotTreeToSummaryTree)((0, internal_3.getSnapshotTree)(this.baseSnapshot).trees[contextId]);
|
|
786
|
+
}
|
|
787
|
+
builder.addWithStats(contextId, dataStoreSummary);
|
|
788
|
+
});
|
|
789
|
+
return builder.getSummaryTree();
|
|
790
|
+
}
|
|
791
|
+
/**
|
|
792
|
+
* Gets the GC data. Used when attaching or serializing a detached container.
|
|
793
|
+
*/
|
|
794
|
+
getAttachGCData(telemetryContext) {
|
|
795
|
+
const builder = new internal_5.GCDataBuilder();
|
|
796
|
+
this.visitLocalBoundContextsDuringAttach((contextId, context) => {
|
|
797
|
+
const contextGCData = context.getAttachGCData(telemetryContext);
|
|
798
|
+
// Prefix the child's id to the ids of its GC nodes so they can be identified as belonging to the child.
|
|
799
|
+
// This also gradually builds the id of each node to be a path from the root.
|
|
800
|
+
builder.prefixAndAddNodes(contextId, contextGCData.gcNodes);
|
|
801
|
+
});
|
|
802
|
+
// Get the outbound routes (aliased data stores) and add a GC node for this channel.
|
|
803
|
+
builder.addNode("/", Array.from(this.aliasedDataStores));
|
|
804
|
+
return builder.getGCData();
|
|
805
|
+
}
|
|
806
|
+
/**
|
|
807
|
+
* Helper method for preparing to attach this channel.
|
|
808
|
+
* Runs the callback for each bound context to incorporate its data however the caller specifies
|
|
809
|
+
*/
|
|
810
|
+
visitLocalBoundContextsDuringAttach(visitor) {
|
|
811
|
+
const visitedContexts = new Set();
|
|
812
|
+
let visitedLength = -1;
|
|
813
|
+
let notBoundContextsLength = -1;
|
|
814
|
+
while (visitedLength !== visitedContexts.size &&
|
|
815
|
+
notBoundContextsLength !== this.contexts.notBoundLength()) {
|
|
816
|
+
// detect changes in the visitedContexts set, as on visiting a context
|
|
817
|
+
// it could could make contexts available by removing other contexts
|
|
818
|
+
// from the not bound context list, so we need to ensure those get processed as well.
|
|
819
|
+
// only once the loop can run with no new contexts added to the visitedContexts set do we
|
|
820
|
+
// know for sure all possible contexts have been visited.
|
|
821
|
+
visitedLength = visitedContexts.size;
|
|
801
822
|
notBoundContextsLength = this.contexts.notBoundLength();
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
!(this.contexts.isNotBound(key) ||
|
|
809
|
-
builderTree[key] ||
|
|
810
|
-
this.attachOpFiredForDataStore.has(key)))
|
|
811
|
-
.map(([key, value]) => {
|
|
812
|
-
let dataStoreSummary;
|
|
813
|
-
if (value.isLoaded) {
|
|
814
|
-
dataStoreSummary = value.getAttachData(
|
|
815
|
-
/* includeGCCData: */ false, telemetryContext).attachSummary;
|
|
823
|
+
for (const [contextId, context] of this.contexts) {
|
|
824
|
+
if (!(visitedContexts.has(contextId) ||
|
|
825
|
+
this.contexts.isNotBound(contextId) ||
|
|
826
|
+
this.attachOpFiredForDataStore.has(contextId))) {
|
|
827
|
+
visitor(contextId, context);
|
|
828
|
+
visitedContexts.add(contextId);
|
|
816
829
|
}
|
|
817
|
-
|
|
818
|
-
|
|
819
|
-
// which it was created as it is detached container. So just use the previous snapshot.
|
|
820
|
-
(0, internal_1.assert)(!!this.baseSnapshot, 0x166 /* "BaseSnapshot should be there as detached container loaded from snapshot" */);
|
|
821
|
-
dataStoreSummary = (0, internal_5.convertSnapshotTreeToSummaryTree)((0, internal_3.getSnapshotTree)(this.baseSnapshot).trees[key]);
|
|
822
|
-
}
|
|
823
|
-
builder.addWithStats(key, dataStoreSummary);
|
|
824
|
-
});
|
|
825
|
-
} while (notBoundContextsLength !== this.contexts.notBoundLength());
|
|
826
|
-
return builder.getSummaryTree();
|
|
830
|
+
}
|
|
831
|
+
}
|
|
827
832
|
}
|
|
828
833
|
/**
|
|
829
|
-
*
|
|
830
|
-
*
|
|
831
|
-
* explicitly marked as referenced, notify GC of new root data stores that were added since the last GC run.
|
|
834
|
+
* Helper method for preparing to summarize this channel.
|
|
835
|
+
* Runs the callback for each bound context to incorporate its data however the caller specifies
|
|
832
836
|
*/
|
|
833
|
-
async
|
|
834
|
-
for (const
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
837
|
+
async visitContextsDuringSummary(visitor) {
|
|
838
|
+
for (const [contextId, context] of this.contexts) {
|
|
839
|
+
// Summarizer client and hence GC works only with clients with no local changes. A data store in
|
|
840
|
+
// attaching state indicates an op was sent to attach a local data store, and the the attach op
|
|
841
|
+
// had not yet round tripped back to the client.
|
|
842
|
+
// Formerly assert 0x589
|
|
843
|
+
if (context.attachState === container_definitions_1.AttachState.Attaching) {
|
|
844
|
+
const error = internal_6.DataProcessingError.create("Local data store detected in attaching state", "summarize/getGCData");
|
|
845
|
+
throw error;
|
|
846
|
+
}
|
|
847
|
+
if (context.attachState === container_definitions_1.AttachState.Attached) {
|
|
848
|
+
await visitor(contextId, context);
|
|
841
849
|
}
|
|
842
850
|
}
|
|
843
|
-
|
|
851
|
+
}
|
|
852
|
+
async summarize(fullTree, trackState, telemetryContext) {
|
|
853
|
+
const summaryBuilder = new internal_5.SummaryTreeBuilder();
|
|
854
|
+
await this.visitContextsDuringSummary(async (contextId, context) => {
|
|
855
|
+
const contextSummary = await context.summarize(fullTree, trackState, telemetryContext);
|
|
856
|
+
summaryBuilder.addWithStats(contextId, contextSummary);
|
|
857
|
+
});
|
|
858
|
+
return summaryBuilder.getSummaryTree();
|
|
844
859
|
}
|
|
845
860
|
/**
|
|
846
861
|
* Generates data used for garbage collection. It does the following:
|
|
@@ -857,25 +872,12 @@ class ChannelCollection {
|
|
|
857
872
|
*/
|
|
858
873
|
async getGCData(fullGC = false) {
|
|
859
874
|
const builder = new internal_5.GCDataBuilder();
|
|
860
|
-
|
|
861
|
-
await Promise.all(Array.from(this.contexts)
|
|
862
|
-
.filter(([_, context]) => {
|
|
863
|
-
// Summarizer client and hence GC works only with clients with no local changes. A data store in
|
|
864
|
-
// attaching state indicates an op was sent to attach a local data store, and the the attach op
|
|
865
|
-
// had not yet round tripped back to the client.
|
|
866
|
-
// Formerly assert 0x589
|
|
867
|
-
if (context.attachState === container_definitions_1.AttachState.Attaching) {
|
|
868
|
-
const error = internal_6.DataProcessingError.create("Local data store detected in attaching state while running GC", "getGCData");
|
|
869
|
-
throw error;
|
|
870
|
-
}
|
|
871
|
-
return context.attachState === container_definitions_1.AttachState.Attached;
|
|
872
|
-
})
|
|
873
|
-
.map(async ([contextId, context]) => {
|
|
875
|
+
await this.visitContextsDuringSummary(async (contextId, context) => {
|
|
874
876
|
const contextGCData = await context.getGCData(fullGC);
|
|
875
877
|
// Prefix the child's id to the ids of its GC nodes so they can be identified as belonging to the child.
|
|
876
878
|
// This also gradually builds the id of each node to be a path from the root.
|
|
877
879
|
builder.prefixAndAddNodes(contextId, contextGCData.gcNodes);
|
|
878
|
-
})
|
|
880
|
+
});
|
|
879
881
|
// Get the outbound routes and add a GC node for this channel.
|
|
880
882
|
builder.addNode("/", await this.getOutboundRoutes());
|
|
881
883
|
return builder.getGCData();
|
|
@@ -1052,6 +1054,7 @@ class ChannelCollection {
|
|
|
1052
1054
|
packagePath: details.pkg,
|
|
1053
1055
|
request,
|
|
1054
1056
|
headerData,
|
|
1057
|
+
timestampMs: undefined, // This will be added by the parent context if needed.
|
|
1055
1058
|
});
|
|
1056
1059
|
const dataStore = await dataStoreContext.realize();
|
|
1057
1060
|
const subRequest = requestParser.createSubRequest(1);
|
|
@@ -1134,7 +1137,7 @@ class ChannelCollectionFactory {
|
|
|
1134
1137
|
}
|
|
1135
1138
|
async instantiateDataStore(context, _existing) {
|
|
1136
1139
|
const runtime = this.ctor(context.baseSnapshot, context, // parentContext
|
|
1137
|
-
context.
|
|
1140
|
+
context.baseLogger, () => { }, // gcNodeUpdated
|
|
1138
1141
|
(_nodePath) => false, // isDataStoreDeleted
|
|
1139
1142
|
new Map(), // aliasMap
|
|
1140
1143
|
this.provideEntryPoint);
|