@fluidframework/container-runtime 2.0.0-dev.2.3.0.115467 → 2.0.0-dev.4.1.0.148229
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 +21 -10
- package/.mocharc.js +2 -2
- package/api-extractor.json +2 -2
- package/dist/batchTracker.d.ts +1 -2
- package/dist/batchTracker.d.ts.map +1 -1
- package/dist/batchTracker.js +2 -1
- package/dist/batchTracker.js.map +1 -1
- package/dist/blobManager.d.ts +74 -42
- package/dist/blobManager.d.ts.map +1 -1
- package/dist/blobManager.js +321 -152
- package/dist/blobManager.js.map +1 -1
- package/dist/connectionTelemetry.d.ts.map +1 -1
- package/dist/connectionTelemetry.js +11 -9
- package/dist/connectionTelemetry.js.map +1 -1
- package/dist/containerHandleContext.d.ts.map +1 -1
- package/dist/containerHandleContext.js +3 -1
- package/dist/containerHandleContext.js.map +1 -1
- package/dist/containerRuntime.d.ts +148 -114
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +534 -342
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStore.d.ts.map +1 -1
- package/dist/dataStore.js +11 -9
- package/dist/dataStore.js.map +1 -1
- package/dist/dataStoreContext.d.ts +40 -13
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +146 -66
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStoreContexts.d.ts.map +1 -1
- package/dist/dataStoreContexts.js +7 -3
- package/dist/dataStoreContexts.js.map +1 -1
- package/dist/dataStoreRegistry.d.ts.map +1 -1
- package/dist/dataStoreRegistry.js +3 -1
- package/dist/dataStoreRegistry.js.map +1 -1
- package/dist/dataStores.d.ts +39 -12
- package/dist/dataStores.d.ts.map +1 -1
- package/dist/dataStores.js +164 -76
- package/dist/dataStores.js.map +1 -1
- package/dist/deltaManagerSummarizerProxy.d.ts +19 -0
- package/dist/deltaManagerSummarizerProxy.d.ts.map +1 -0
- package/dist/deltaManagerSummarizerProxy.js +40 -0
- package/dist/deltaManagerSummarizerProxy.js.map +1 -0
- package/dist/deltaScheduler.d.ts.map +1 -1
- package/dist/deltaScheduler.js +8 -3
- package/dist/deltaScheduler.js.map +1 -1
- package/dist/gc/garbageCollection.d.ts +204 -0
- package/dist/gc/garbageCollection.d.ts.map +1 -0
- package/dist/gc/garbageCollection.js +926 -0
- package/dist/gc/garbageCollection.js.map +1 -0
- package/dist/gc/gcConfigs.d.ts +22 -0
- package/dist/gc/gcConfigs.d.ts.map +1 -0
- package/dist/gc/gcConfigs.js +143 -0
- package/dist/gc/gcConfigs.js.map +1 -0
- package/dist/gc/gcDefinitions.d.ts +320 -0
- package/dist/gc/gcDefinitions.d.ts.map +1 -0
- package/dist/gc/gcDefinitions.js +81 -0
- package/dist/gc/gcDefinitions.js.map +1 -0
- package/dist/gc/gcHelpers.d.ts +86 -0
- package/dist/gc/gcHelpers.d.ts.map +1 -0
- package/dist/gc/gcHelpers.js +268 -0
- package/dist/gc/gcHelpers.js.map +1 -0
- package/dist/gc/gcReferenceGraphAlgorithm.d.ts +16 -0
- package/dist/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -0
- package/dist/gc/gcReferenceGraphAlgorithm.js +49 -0
- package/dist/gc/gcReferenceGraphAlgorithm.js.map +1 -0
- package/dist/gc/gcSummaryDefinitions.d.ts +52 -0
- package/dist/gc/gcSummaryDefinitions.d.ts.map +1 -0
- package/dist/gc/gcSummaryDefinitions.js +7 -0
- package/dist/gc/gcSummaryDefinitions.js.map +1 -0
- package/dist/gc/gcSummaryStateTracker.d.ts +93 -0
- package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -0
- package/dist/gc/gcSummaryStateTracker.js +239 -0
- package/dist/gc/gcSummaryStateTracker.js.map +1 -0
- package/{lib → dist/gc}/gcSweepReadyUsageDetection.d.ts +5 -5
- package/dist/gc/gcSweepReadyUsageDetection.d.ts.map +1 -0
- package/dist/{gcSweepReadyUsageDetection.js → gc/gcSweepReadyUsageDetection.js} +15 -11
- package/dist/gc/gcSweepReadyUsageDetection.js.map +1 -0
- package/dist/gc/gcUnreferencedStateTracker.d.ts +34 -0
- package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -0
- package/dist/gc/gcUnreferencedStateTracker.js +94 -0
- package/dist/gc/gcUnreferencedStateTracker.js.map +1 -0
- package/dist/gc/index.d.ts +13 -0
- package/dist/gc/index.d.ts.map +1 -0
- package/dist/gc/index.js +50 -0
- package/dist/gc/index.js.map +1 -0
- package/dist/index.d.ts +3 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -13
- package/dist/index.js.map +1 -1
- package/dist/opLifecycle/batchManager.d.ts +10 -0
- package/dist/opLifecycle/batchManager.d.ts.map +1 -1
- package/dist/opLifecycle/batchManager.js +37 -8
- package/dist/opLifecycle/batchManager.js.map +1 -1
- package/dist/opLifecycle/definitions.d.ts +29 -1
- package/dist/opLifecycle/definitions.d.ts.map +1 -1
- package/dist/opLifecycle/definitions.js.map +1 -1
- package/dist/opLifecycle/index.d.ts +3 -3
- package/dist/opLifecycle/index.d.ts.map +1 -1
- package/dist/opLifecycle/index.js +3 -1
- 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 +46 -17
- package/dist/opLifecycle/opCompressor.js.map +1 -1
- package/dist/opLifecycle/opDecompressor.d.ts +6 -1
- package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opDecompressor.js +72 -18
- package/dist/opLifecycle/opDecompressor.js.map +1 -1
- package/dist/opLifecycle/opSplitter.d.ts +46 -2
- package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
- package/dist/opLifecycle/opSplitter.js +142 -5
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +23 -2
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +101 -51
- package/dist/opLifecycle/outbox.js.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.js +17 -2
- package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/dist/opProperties.d.ts.map +1 -1
- package/dist/opProperties.js +1 -3
- 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 +6 -15
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +137 -165
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/scheduleManager.d.ts +0 -1
- package/dist/scheduleManager.d.ts.map +1 -1
- package/dist/scheduleManager.js +11 -21
- package/dist/scheduleManager.js.map +1 -1
- package/dist/storageServiceWithAttachBlobs.d.ts +17 -0
- package/dist/storageServiceWithAttachBlobs.d.ts.map +1 -0
- package/dist/storageServiceWithAttachBlobs.js +32 -0
- package/dist/storageServiceWithAttachBlobs.js.map +1 -0
- package/dist/summary/index.d.ts +17 -0
- package/dist/summary/index.d.ts.map +1 -0
- package/dist/summary/index.js +46 -0
- package/dist/summary/index.js.map +1 -0
- package/dist/summary/orderedClientElection.d.ts.map +1 -0
- package/dist/{orderedClientElection.js → summary/orderedClientElection.js} +10 -4
- package/dist/summary/orderedClientElection.js.map +1 -0
- package/{lib → dist/summary}/runWhileConnectedCoordinator.d.ts +3 -2
- package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -0
- package/dist/{runWhileConnectedCoordinator.js → summary/runWhileConnectedCoordinator.js} +5 -4
- package/dist/summary/runWhileConnectedCoordinator.js.map +1 -0
- package/{lib → dist/summary}/runningSummarizer.d.ts +19 -18
- package/dist/summary/runningSummarizer.d.ts.map +1 -0
- package/dist/{runningSummarizer.js → summary/runningSummarizer.js} +191 -77
- package/dist/summary/runningSummarizer.js.map +1 -0
- package/dist/{summarizer.d.ts → summary/summarizer.d.ts} +6 -12
- package/dist/summary/summarizer.d.ts.map +1 -0
- package/dist/{summarizer.js → summary/summarizer.js} +32 -76
- package/dist/summary/summarizer.js.map +1 -0
- package/dist/{summarizerClientElection.d.ts → summary/summarizerClientElection.d.ts} +1 -2
- package/dist/summary/summarizerClientElection.d.ts.map +1 -0
- package/dist/{summarizerClientElection.js → summary/summarizerClientElection.js} +3 -30
- package/dist/summary/summarizerClientElection.js.map +1 -0
- package/dist/{summarizerHeuristics.d.ts → summary/summarizerHeuristics.d.ts} +1 -1
- package/dist/summary/summarizerHeuristics.d.ts.map +1 -0
- package/dist/{summarizerHeuristics.js → summary/summarizerHeuristics.js} +9 -12
- package/dist/summary/summarizerHeuristics.js.map +1 -0
- package/dist/summary/summarizerNode/index.d.ts +8 -0
- package/dist/summary/summarizerNode/index.d.ts.map +1 -0
- package/dist/summary/summarizerNode/index.js +12 -0
- package/dist/summary/summarizerNode/index.js.map +1 -0
- package/dist/summary/summarizerNode/summarizerNode.d.ts +149 -0
- package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -0
- package/dist/summary/summarizerNode/summarizerNode.js +531 -0
- package/dist/summary/summarizerNode/summarizerNode.js.map +1 -0
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +125 -0
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -0
- package/dist/summary/summarizerNode/summarizerNodeUtils.js +132 -0
- package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -0
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +22 -0
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -0
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js +423 -0
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -0
- package/{lib → dist/summary}/summarizerTypes.d.ts +29 -42
- package/dist/summary/summarizerTypes.d.ts.map +1 -0
- package/dist/{summarizerTypes.js → summary/summarizerTypes.js} +0 -5
- package/dist/summary/summarizerTypes.js.map +1 -0
- package/dist/summary/summaryCollection.d.ts.map +1 -0
- package/dist/{summaryCollection.js → summary/summaryCollection.js} +18 -8
- package/dist/summary/summaryCollection.js.map +1 -0
- package/{lib → dist/summary}/summaryFormat.d.ts +3 -21
- package/dist/summary/summaryFormat.d.ts.map +1 -0
- package/dist/{summaryFormat.js → summary/summaryFormat.js} +19 -21
- package/dist/summary/summaryFormat.js.map +1 -0
- package/dist/summary/summaryGenerator.d.ts.map +1 -0
- package/dist/{summaryGenerator.js → summary/summaryGenerator.js} +34 -16
- package/dist/summary/summaryGenerator.js.map +1 -0
- package/dist/{summaryManager.d.ts → summary/summaryManager.d.ts} +1 -1
- package/dist/summary/summaryManager.d.ts.map +1 -0
- package/dist/{summaryManager.js → summary/summaryManager.js} +21 -9
- package/dist/summary/summaryManager.js.map +1 -0
- package/dist/throttler.d.ts +2 -2
- package/dist/throttler.d.ts.map +1 -1
- package/dist/throttler.js +4 -4
- package/dist/throttler.js.map +1 -1
- package/lib/batchTracker.d.ts +1 -2
- package/lib/batchTracker.d.ts.map +1 -1
- package/lib/batchTracker.js +2 -1
- package/lib/batchTracker.js.map +1 -1
- package/lib/blobManager.d.ts +74 -42
- package/lib/blobManager.d.ts.map +1 -1
- package/lib/blobManager.js +322 -153
- package/lib/blobManager.js.map +1 -1
- package/lib/connectionTelemetry.d.ts.map +1 -1
- package/lib/connectionTelemetry.js +11 -9
- package/lib/connectionTelemetry.js.map +1 -1
- package/lib/containerHandleContext.d.ts.map +1 -1
- package/lib/containerHandleContext.js +3 -1
- package/lib/containerHandleContext.js.map +1 -1
- package/lib/containerRuntime.d.ts +148 -114
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +506 -314
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStore.d.ts.map +1 -1
- package/lib/dataStore.js +11 -9
- package/lib/dataStore.js.map +1 -1
- package/lib/dataStoreContext.d.ts +40 -13
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +136 -56
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/dataStoreContexts.d.ts.map +1 -1
- package/lib/dataStoreContexts.js +7 -3
- package/lib/dataStoreContexts.js.map +1 -1
- package/lib/dataStoreRegistry.d.ts.map +1 -1
- package/lib/dataStoreRegistry.js +3 -1
- package/lib/dataStoreRegistry.js.map +1 -1
- package/lib/dataStores.d.ts +39 -12
- package/lib/dataStores.d.ts.map +1 -1
- package/lib/dataStores.js +162 -74
- package/lib/dataStores.js.map +1 -1
- package/lib/deltaManagerSummarizerProxy.d.ts +19 -0
- package/lib/deltaManagerSummarizerProxy.d.ts.map +1 -0
- package/lib/deltaManagerSummarizerProxy.js +36 -0
- package/lib/deltaManagerSummarizerProxy.js.map +1 -0
- package/lib/deltaScheduler.d.ts.map +1 -1
- package/lib/deltaScheduler.js +9 -4
- package/lib/deltaScheduler.js.map +1 -1
- package/lib/gc/garbageCollection.d.ts +204 -0
- package/lib/gc/garbageCollection.d.ts.map +1 -0
- package/lib/gc/garbageCollection.js +922 -0
- package/lib/gc/garbageCollection.js.map +1 -0
- package/lib/gc/gcConfigs.d.ts +22 -0
- package/lib/gc/gcConfigs.d.ts.map +1 -0
- package/lib/gc/gcConfigs.js +139 -0
- package/lib/gc/gcConfigs.js.map +1 -0
- package/lib/gc/gcDefinitions.d.ts +320 -0
- package/lib/gc/gcDefinitions.d.ts.map +1 -0
- package/lib/gc/gcDefinitions.js +78 -0
- package/lib/gc/gcDefinitions.js.map +1 -0
- package/lib/gc/gcHelpers.d.ts +86 -0
- package/lib/gc/gcHelpers.d.ts.map +1 -0
- package/lib/gc/gcHelpers.js +254 -0
- package/lib/gc/gcHelpers.js.map +1 -0
- package/lib/gc/gcReferenceGraphAlgorithm.d.ts +16 -0
- package/lib/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -0
- package/lib/gc/gcReferenceGraphAlgorithm.js +45 -0
- package/lib/gc/gcReferenceGraphAlgorithm.js.map +1 -0
- package/lib/gc/gcSummaryDefinitions.d.ts +52 -0
- package/lib/gc/gcSummaryDefinitions.d.ts.map +1 -0
- package/lib/gc/gcSummaryDefinitions.js +6 -0
- package/lib/gc/gcSummaryDefinitions.js.map +1 -0
- package/lib/gc/gcSummaryStateTracker.d.ts +93 -0
- package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -0
- package/lib/gc/gcSummaryStateTracker.js +235 -0
- package/lib/gc/gcSummaryStateTracker.js.map +1 -0
- package/{dist → lib/gc}/gcSweepReadyUsageDetection.d.ts +5 -5
- package/lib/gc/gcSweepReadyUsageDetection.d.ts.map +1 -0
- package/lib/{gcSweepReadyUsageDetection.js → gc/gcSweepReadyUsageDetection.js} +15 -11
- package/lib/gc/gcSweepReadyUsageDetection.js.map +1 -0
- package/lib/gc/gcUnreferencedStateTracker.d.ts +34 -0
- package/lib/gc/gcUnreferencedStateTracker.d.ts.map +1 -0
- package/lib/gc/gcUnreferencedStateTracker.js +90 -0
- package/lib/gc/gcUnreferencedStateTracker.js.map +1 -0
- package/lib/gc/index.d.ts +13 -0
- package/lib/gc/index.d.ts.map +1 -0
- package/lib/gc/index.js +12 -0
- package/lib/gc/index.js.map +1 -0
- package/lib/index.d.ts +3 -8
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -6
- package/lib/index.js.map +1 -1
- package/lib/opLifecycle/batchManager.d.ts +10 -0
- package/lib/opLifecycle/batchManager.d.ts.map +1 -1
- package/lib/opLifecycle/batchManager.js +35 -7
- package/lib/opLifecycle/batchManager.js.map +1 -1
- package/lib/opLifecycle/definitions.d.ts +29 -1
- package/lib/opLifecycle/definitions.d.ts.map +1 -1
- package/lib/opLifecycle/definitions.js.map +1 -1
- package/lib/opLifecycle/index.d.ts +3 -3
- package/lib/opLifecycle/index.d.ts.map +1 -1
- package/lib/opLifecycle/index.js +2 -2
- package/lib/opLifecycle/index.js.map +1 -1
- package/lib/opLifecycle/opCompressor.d.ts +1 -1
- package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opCompressor.js +47 -18
- package/lib/opLifecycle/opCompressor.js.map +1 -1
- package/lib/opLifecycle/opDecompressor.d.ts +6 -1
- package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opDecompressor.js +72 -18
- package/lib/opLifecycle/opDecompressor.js.map +1 -1
- package/lib/opLifecycle/opSplitter.d.ts +46 -2
- package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
- package/lib/opLifecycle/opSplitter.js +141 -5
- package/lib/opLifecycle/opSplitter.js.map +1 -1
- package/lib/opLifecycle/outbox.d.ts +23 -2
- package/lib/opLifecycle/outbox.d.ts.map +1 -1
- package/lib/opLifecycle/outbox.js +103 -53
- package/lib/opLifecycle/outbox.js.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.js +17 -2
- package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/lib/opProperties.d.ts.map +1 -1
- package/lib/opProperties.js +1 -3
- 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 +6 -15
- package/lib/pendingStateManager.d.ts.map +1 -1
- package/lib/pendingStateManager.js +137 -165
- package/lib/pendingStateManager.js.map +1 -1
- package/lib/scheduleManager.d.ts +0 -1
- package/lib/scheduleManager.d.ts.map +1 -1
- package/lib/scheduleManager.js +11 -21
- package/lib/scheduleManager.js.map +1 -1
- package/lib/storageServiceWithAttachBlobs.d.ts +17 -0
- package/lib/storageServiceWithAttachBlobs.d.ts.map +1 -0
- package/lib/storageServiceWithAttachBlobs.js +28 -0
- package/lib/storageServiceWithAttachBlobs.js.map +1 -0
- package/lib/summary/index.d.ts +17 -0
- package/lib/summary/index.d.ts.map +1 -0
- package/lib/summary/index.js +15 -0
- package/lib/summary/index.js.map +1 -0
- package/lib/summary/orderedClientElection.d.ts.map +1 -0
- package/lib/{orderedClientElection.js → summary/orderedClientElection.js} +10 -4
- package/lib/summary/orderedClientElection.js.map +1 -0
- package/{dist → lib/summary}/runWhileConnectedCoordinator.d.ts +3 -2
- package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -0
- package/lib/{runWhileConnectedCoordinator.js → summary/runWhileConnectedCoordinator.js} +5 -4
- package/lib/summary/runWhileConnectedCoordinator.js.map +1 -0
- package/{dist → lib/summary}/runningSummarizer.d.ts +19 -18
- package/lib/summary/runningSummarizer.d.ts.map +1 -0
- package/lib/{runningSummarizer.js → summary/runningSummarizer.js} +193 -79
- package/lib/summary/runningSummarizer.js.map +1 -0
- package/lib/{summarizer.d.ts → summary/summarizer.d.ts} +6 -12
- package/lib/summary/summarizer.d.ts.map +1 -0
- package/lib/{summarizer.js → summary/summarizer.js} +34 -78
- package/lib/summary/summarizer.js.map +1 -0
- package/lib/{summarizerClientElection.d.ts → summary/summarizerClientElection.d.ts} +1 -2
- package/lib/summary/summarizerClientElection.d.ts.map +1 -0
- package/lib/{summarizerClientElection.js → summary/summarizerClientElection.js} +3 -30
- package/lib/summary/summarizerClientElection.js.map +1 -0
- package/lib/{summarizerHeuristics.d.ts → summary/summarizerHeuristics.d.ts} +1 -1
- package/lib/summary/summarizerHeuristics.d.ts.map +1 -0
- package/lib/{summarizerHeuristics.js → summary/summarizerHeuristics.js} +9 -12
- package/lib/summary/summarizerHeuristics.js.map +1 -0
- package/lib/summary/summarizerNode/index.d.ts +8 -0
- 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.ts +149 -0
- package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -0
- package/lib/summary/summarizerNode/summarizerNode.js +526 -0
- package/lib/summary/summarizerNode/summarizerNode.js.map +1 -0
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts +125 -0
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -0
- package/lib/summary/summarizerNode/summarizerNodeUtils.js +125 -0
- package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -0
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +22 -0
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -0
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js +419 -0
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -0
- package/{dist → lib/summary}/summarizerTypes.d.ts +29 -42
- package/lib/summary/summarizerTypes.d.ts.map +1 -0
- package/lib/summary/summarizerTypes.js +6 -0
- package/lib/summary/summarizerTypes.js.map +1 -0
- package/lib/summary/summaryCollection.d.ts.map +1 -0
- package/lib/{summaryCollection.js → summary/summaryCollection.js} +18 -8
- package/lib/summary/summaryCollection.js.map +1 -0
- package/{dist → lib/summary}/summaryFormat.d.ts +3 -21
- package/lib/summary/summaryFormat.d.ts.map +1 -0
- package/lib/{summaryFormat.js → summary/summaryFormat.js} +20 -21
- package/lib/summary/summaryFormat.js.map +1 -0
- package/lib/summary/summaryGenerator.d.ts.map +1 -0
- package/lib/{summaryGenerator.js → summary/summaryGenerator.js} +34 -16
- package/lib/summary/summaryGenerator.js.map +1 -0
- package/lib/{summaryManager.d.ts → summary/summaryManager.d.ts} +1 -1
- package/lib/summary/summaryManager.d.ts.map +1 -0
- package/lib/{summaryManager.js → summary/summaryManager.js} +21 -9
- package/lib/summary/summaryManager.js.map +1 -0
- package/lib/throttler.d.ts +2 -2
- package/lib/throttler.d.ts.map +1 -1
- package/lib/throttler.js +4 -4
- package/lib/throttler.js.map +1 -1
- package/package.json +67 -61
- package/prettier.config.cjs +1 -1
- package/src/batchTracker.ts +55 -50
- package/src/blobManager.ts +863 -594
- package/src/connectionTelemetry.ts +280 -249
- package/src/containerHandleContext.ts +27 -29
- package/src/containerRuntime.ts +3174 -2805
- package/src/dataStore.ts +172 -159
- package/src/dataStoreContext.ts +1141 -993
- package/src/dataStoreContexts.ts +178 -161
- package/src/dataStoreRegistry.ts +25 -20
- package/src/dataStores.ts +887 -716
- package/src/deltaManagerSummarizerProxy.ts +46 -0
- package/src/deltaScheduler.ts +158 -150
- package/{garbageCollection.md → src/gc/garbageCollection.md} +16 -3
- package/src/gc/garbageCollection.ts +1250 -0
- package/src/gc/gcConfigs.ts +193 -0
- package/src/gc/gcDefinitions.ts +387 -0
- package/src/gc/gcHelpers.ts +332 -0
- package/src/gc/gcReferenceGraphAlgorithm.ts +52 -0
- package/src/gc/gcSummaryDefinitions.ts +54 -0
- package/src/gc/gcSummaryStateTracker.ts +329 -0
- package/src/gc/gcSweepReadyUsageDetection.ts +145 -0
- package/src/gc/gcUnreferencedStateTracker.ts +114 -0
- package/src/gc/index.ts +65 -0
- package/src/index.ts +61 -75
- package/src/opLifecycle/README.md +157 -0
- package/src/opLifecycle/batchManager.ts +119 -86
- package/src/opLifecycle/definitions.ts +49 -19
- package/src/opLifecycle/index.ts +7 -6
- package/src/opLifecycle/opCompressor.ts +78 -40
- package/src/opLifecycle/opDecompressor.ts +148 -64
- package/src/opLifecycle/opSplitter.ts +269 -66
- package/src/opLifecycle/outbox.ts +268 -184
- package/src/opLifecycle/remoteMessageProcessor.ts +63 -47
- package/src/opProperties.ts +11 -9
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +386 -381
- package/src/scheduleManager.ts +299 -280
- package/src/storageServiceWithAttachBlobs.ts +38 -0
- package/src/summary/index.ts +105 -0
- package/src/summary/orderedClientElection.ts +564 -0
- package/src/summary/runWhileConnectedCoordinator.ts +113 -0
- package/src/summary/runningSummarizer.ts +788 -0
- package/src/summary/summarizer.ts +372 -0
- package/src/summary/summarizerClientElection.ts +139 -0
- package/src/summary/summarizerHeuristics.ts +224 -0
- package/src/summary/summarizerNode/index.ts +12 -0
- package/src/summary/summarizerNode/summarizerNode.ts +766 -0
- package/src/summary/summarizerNode/summarizerNodeUtils.ts +214 -0
- package/src/summary/summarizerNode/summarizerNodeWithGc.ts +644 -0
- package/src/summary/summarizerTypes.ts +507 -0
- package/src/summary/summaryCollection.ts +450 -0
- package/src/summary/summaryFormat.ts +228 -0
- package/src/summary/summaryGenerator.ts +505 -0
- package/src/summary/summaryManager.ts +423 -0
- package/src/throttler.ts +131 -122
- package/tsconfig.esnext.json +6 -6
- package/tsconfig.json +9 -13
- package/dist/garbageCollection.d.ts +0 -387
- package/dist/garbageCollection.d.ts.map +0 -1
- package/dist/garbageCollection.js +0 -1138
- package/dist/garbageCollection.js.map +0 -1
- package/dist/garbageCollectionConstants.d.ts +0 -19
- package/dist/garbageCollectionConstants.d.ts.map +0 -1
- package/dist/garbageCollectionConstants.js +0 -34
- package/dist/garbageCollectionConstants.js.map +0 -1
- package/dist/gcSweepReadyUsageDetection.d.ts.map +0 -1
- package/dist/gcSweepReadyUsageDetection.js.map +0 -1
- package/dist/orderedClientElection.d.ts.map +0 -1
- package/dist/orderedClientElection.js.map +0 -1
- package/dist/runWhileConnectedCoordinator.d.ts.map +0 -1
- package/dist/runWhileConnectedCoordinator.js.map +0 -1
- package/dist/runningSummarizer.d.ts.map +0 -1
- package/dist/runningSummarizer.js.map +0 -1
- package/dist/serializedSnapshotStorage.d.ts +0 -58
- package/dist/serializedSnapshotStorage.d.ts.map +0 -1
- package/dist/serializedSnapshotStorage.js +0 -108
- package/dist/serializedSnapshotStorage.js.map +0 -1
- package/dist/summarizer.d.ts.map +0 -1
- package/dist/summarizer.js.map +0 -1
- package/dist/summarizerClientElection.d.ts.map +0 -1
- package/dist/summarizerClientElection.js.map +0 -1
- package/dist/summarizerHandle.d.ts +0 -12
- package/dist/summarizerHandle.d.ts.map +0 -1
- package/dist/summarizerHandle.js +0 -22
- package/dist/summarizerHandle.js.map +0 -1
- package/dist/summarizerHeuristics.d.ts.map +0 -1
- package/dist/summarizerHeuristics.js.map +0 -1
- package/dist/summarizerTypes.d.ts.map +0 -1
- package/dist/summarizerTypes.js.map +0 -1
- package/dist/summaryCollection.d.ts.map +0 -1
- package/dist/summaryCollection.js.map +0 -1
- package/dist/summaryFormat.d.ts.map +0 -1
- package/dist/summaryFormat.js.map +0 -1
- package/dist/summaryGenerator.d.ts.map +0 -1
- package/dist/summaryGenerator.js.map +0 -1
- package/dist/summaryManager.d.ts.map +0 -1
- package/dist/summaryManager.js.map +0 -1
- package/lib/garbageCollection.d.ts +0 -387
- package/lib/garbageCollection.d.ts.map +0 -1
- package/lib/garbageCollection.js +0 -1133
- package/lib/garbageCollection.js.map +0 -1
- package/lib/garbageCollectionConstants.d.ts +0 -19
- package/lib/garbageCollectionConstants.d.ts.map +0 -1
- package/lib/garbageCollectionConstants.js +0 -31
- package/lib/garbageCollectionConstants.js.map +0 -1
- package/lib/gcSweepReadyUsageDetection.d.ts.map +0 -1
- package/lib/gcSweepReadyUsageDetection.js.map +0 -1
- package/lib/orderedClientElection.d.ts.map +0 -1
- package/lib/orderedClientElection.js.map +0 -1
- package/lib/runWhileConnectedCoordinator.d.ts.map +0 -1
- package/lib/runWhileConnectedCoordinator.js.map +0 -1
- package/lib/runningSummarizer.d.ts.map +0 -1
- package/lib/runningSummarizer.js.map +0 -1
- package/lib/serializedSnapshotStorage.d.ts +0 -58
- package/lib/serializedSnapshotStorage.d.ts.map +0 -1
- package/lib/serializedSnapshotStorage.js +0 -104
- package/lib/serializedSnapshotStorage.js.map +0 -1
- package/lib/summarizer.d.ts.map +0 -1
- package/lib/summarizer.js.map +0 -1
- package/lib/summarizerClientElection.d.ts.map +0 -1
- package/lib/summarizerClientElection.js.map +0 -1
- package/lib/summarizerHandle.d.ts +0 -12
- package/lib/summarizerHandle.d.ts.map +0 -1
- package/lib/summarizerHandle.js +0 -18
- package/lib/summarizerHandle.js.map +0 -1
- package/lib/summarizerHeuristics.d.ts.map +0 -1
- package/lib/summarizerHeuristics.js.map +0 -1
- package/lib/summarizerTypes.d.ts.map +0 -1
- package/lib/summarizerTypes.js +0 -9
- package/lib/summarizerTypes.js.map +0 -1
- package/lib/summaryCollection.d.ts.map +0 -1
- package/lib/summaryCollection.js.map +0 -1
- package/lib/summaryFormat.d.ts.map +0 -1
- package/lib/summaryFormat.js.map +0 -1
- package/lib/summaryGenerator.d.ts.map +0 -1
- package/lib/summaryGenerator.js.map +0 -1
- package/lib/summaryManager.d.ts.map +0 -1
- package/lib/summaryManager.js.map +0 -1
- package/src/garbageCollection.ts +0 -1646
- package/src/garbageCollectionConstants.ts +0 -35
- package/src/gcSweepReadyUsageDetection.ts +0 -139
- package/src/orderedClientElection.ts +0 -532
- package/src/runWhileConnectedCoordinator.ts +0 -106
- package/src/runningSummarizer.ts +0 -611
- package/src/serializedSnapshotStorage.ts +0 -146
- package/src/summarizer.ts +0 -421
- package/src/summarizerClientElection.ts +0 -161
- package/src/summarizerHandle.ts +0 -21
- package/src/summarizerHeuristics.ts +0 -222
- package/src/summarizerTypes.ts +0 -510
- package/src/summaryCollection.ts +0 -421
- package/src/summaryFormat.ts +0 -235
- package/src/summaryGenerator.ts +0 -446
- package/src/summaryManager.ts +0 -394
- /package/dist/{orderedClientElection.d.ts → summary/orderedClientElection.d.ts} +0 -0
- /package/dist/{summaryCollection.d.ts → summary/summaryCollection.d.ts} +0 -0
- /package/dist/{summaryGenerator.d.ts → summary/summaryGenerator.d.ts} +0 -0
- /package/lib/{orderedClientElection.d.ts → summary/orderedClientElection.d.ts} +0 -0
- /package/lib/{summaryCollection.d.ts → summary/summaryCollection.d.ts} +0 -0
- /package/lib/{summaryGenerator.d.ts → summary/summaryGenerator.d.ts} +0 -0
package/dist/dataStoreContext.js
CHANGED
|
@@ -13,9 +13,8 @@ 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
15
|
const container_utils_1 = require("@fluidframework/container-utils");
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const summarizerClientElection_1 = require("./summarizerClientElection");
|
|
16
|
+
const summary_1 = require("./summary");
|
|
17
|
+
const gc_1 = require("./gc");
|
|
19
18
|
function createAttributes(pkg, isRootDataStore) {
|
|
20
19
|
const stringifiedPkg = JSON.stringify(pkg);
|
|
21
20
|
return {
|
|
@@ -26,18 +25,17 @@ function createAttributes(pkg, isRootDataStore) {
|
|
|
26
25
|
}
|
|
27
26
|
function createAttributesBlob(pkg, isRootDataStore) {
|
|
28
27
|
const attributes = createAttributes(pkg, isRootDataStore);
|
|
29
|
-
return new protocol_base_1.BlobTreeEntry(
|
|
28
|
+
return new protocol_base_1.BlobTreeEntry(summary_1.dataStoreAttributesBlobName, JSON.stringify(attributes));
|
|
30
29
|
}
|
|
31
30
|
exports.createAttributesBlob = createAttributesBlob;
|
|
32
31
|
/**
|
|
33
32
|
* Represents the context for the store. This context is passed to the store runtime.
|
|
34
33
|
*/
|
|
35
34
|
class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
36
|
-
constructor(props, existing,
|
|
37
|
-
|
|
35
|
+
constructor(props, existing, isLocalDataStore, makeLocallyVisibleFn) {
|
|
36
|
+
var _a;
|
|
38
37
|
super();
|
|
39
38
|
this.existing = existing;
|
|
40
|
-
this.bindState = bindState;
|
|
41
39
|
this.isLocalDataStore = isLocalDataStore;
|
|
42
40
|
this.makeLocallyVisibleFn = makeLocallyVisibleFn;
|
|
43
41
|
this._disposed = false;
|
|
@@ -46,6 +44,8 @@ class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
|
46
44
|
* loading.
|
|
47
45
|
*/
|
|
48
46
|
this._tombstoned = false;
|
|
47
|
+
/** If true, this means that this data store context and its children have been removed from the runtime */
|
|
48
|
+
this.deleted = false;
|
|
49
49
|
this.detachedRuntimeCreation = false;
|
|
50
50
|
this.loaded = false;
|
|
51
51
|
this.pending = [];
|
|
@@ -58,23 +58,22 @@ class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
|
58
58
|
// URIs use slashes as delimiters. Handles use URIs.
|
|
59
59
|
// Thus having slashes in types almost guarantees trouble down the road!
|
|
60
60
|
(0, common_utils_1.assert)(!this.id.includes("/"), 0x13a /* Data store ID contains slash */);
|
|
61
|
-
this._attachState =
|
|
62
|
-
this.containerRuntime.attachState
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
this.bindState = runtime_definitions_1.BindState.Binding;
|
|
66
|
-
(0, common_utils_1.assert)(this.channel !== undefined, 0x13c /* "undefined channel on datastore context" */);
|
|
67
|
-
this.makeLocallyVisible();
|
|
68
|
-
this.bindState = runtime_definitions_1.BindState.Bound;
|
|
69
|
-
};
|
|
61
|
+
this._attachState =
|
|
62
|
+
this.containerRuntime.attachState !== container_definitions_1.AttachState.Detached && this.existing
|
|
63
|
+
? this.containerRuntime.attachState
|
|
64
|
+
: container_definitions_1.AttachState.Detached;
|
|
70
65
|
const thisSummarizeInternal = async (fullTree, trackState, telemetryContext) => this.summarizeInternal(fullTree, trackState, telemetryContext);
|
|
71
|
-
this.summarizerNode = props.createSummarizerNodeFn(thisSummarizeInternal, async (fullGC) => this.getGCDataInternal(fullGC)
|
|
66
|
+
this.summarizerNode = props.createSummarizerNodeFn(thisSummarizeInternal, async (fullGC) => this.getGCDataInternal(fullGC));
|
|
72
67
|
this.mc = (0, telemetry_utils_1.loggerToMonitoringContext)(telemetry_utils_1.ChildLogger.create(this.logger, "FluidDataStoreContext"));
|
|
73
68
|
this.thresholdOpsCounter = new telemetry_utils_1.ThresholdCounter(FluidDataStoreContext.pendingOpsCountThreshold, this.mc.logger);
|
|
74
69
|
// Tombstone should only throw when the feature flag is enabled and the client isn't a summarizer
|
|
75
70
|
this.throwOnTombstoneUsage =
|
|
76
|
-
this.mc.config.getBoolean(
|
|
77
|
-
this.
|
|
71
|
+
this.mc.config.getBoolean(gc_1.throwOnTombstoneUsageKey) === true &&
|
|
72
|
+
this._containerRuntime.gcTombstoneEnforcementAllowed &&
|
|
73
|
+
this.clientDetails.type !== summary_1.summarizerClientType;
|
|
74
|
+
// By default, a data store can log maximum 10 local changes telemetry in summarizer.
|
|
75
|
+
this.localChangesTelemetryCount =
|
|
76
|
+
(_a = this.mc.config.getNumber("Fluid.Telemetry.LocalChangesTelemetryCount")) !== null && _a !== void 0 ? _a : 10;
|
|
78
77
|
}
|
|
79
78
|
get packagePath() {
|
|
80
79
|
(0, common_utils_1.assert)(this.pkg !== undefined, 0x139 /* "Undefined package path" */);
|
|
@@ -104,14 +103,21 @@ class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
|
104
103
|
get containerRuntime() {
|
|
105
104
|
return this._containerRuntime;
|
|
106
105
|
}
|
|
106
|
+
ensureNoDataModelChanges(callback) {
|
|
107
|
+
return this._containerRuntime.ensureNoDataModelChanges(callback);
|
|
108
|
+
}
|
|
107
109
|
get isLoaded() {
|
|
108
110
|
return this.loaded;
|
|
109
111
|
}
|
|
110
112
|
get baseSnapshot() {
|
|
111
113
|
return this._baseSnapshot;
|
|
112
114
|
}
|
|
113
|
-
get disposed() {
|
|
114
|
-
|
|
115
|
+
get disposed() {
|
|
116
|
+
return this._disposed;
|
|
117
|
+
}
|
|
118
|
+
get tombstoned() {
|
|
119
|
+
return this._tombstoned;
|
|
120
|
+
}
|
|
115
121
|
get attachState() {
|
|
116
122
|
return this._attachState;
|
|
117
123
|
}
|
|
@@ -145,19 +151,32 @@ class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
|
145
151
|
// Dispose any pending runtime after it gets fulfilled
|
|
146
152
|
// Errors are logged where this.channelDeferred is consumed/generated (realizeCore(), bindRuntime())
|
|
147
153
|
if (this.channelDeferred) {
|
|
148
|
-
this.channelDeferred.promise
|
|
154
|
+
this.channelDeferred.promise
|
|
155
|
+
.then((runtime) => {
|
|
149
156
|
runtime.dispose();
|
|
150
|
-
})
|
|
157
|
+
})
|
|
158
|
+
.catch((error) => { });
|
|
151
159
|
}
|
|
152
160
|
}
|
|
161
|
+
/**
|
|
162
|
+
* When delete is called, that means that the data store is permanently removed from the runtime, and will not show up in future summaries
|
|
163
|
+
* This function is called to prevent ops from being generated from this data store once it has been deleted. Furthermore, this data store
|
|
164
|
+
* should not receive any ops/signals.
|
|
165
|
+
*/
|
|
166
|
+
delete() {
|
|
167
|
+
this.deleted = true;
|
|
168
|
+
}
|
|
153
169
|
setTombstone(tombstone) {
|
|
154
170
|
if (this.tombstoned === tombstone) {
|
|
155
171
|
return;
|
|
156
172
|
}
|
|
157
173
|
this._tombstoned = tombstone;
|
|
158
174
|
}
|
|
159
|
-
rejectDeferredRealize(reason,
|
|
160
|
-
throw new telemetry_utils_1.LoggingError(reason, {
|
|
175
|
+
rejectDeferredRealize(reason, failedPkgPath, fullPackageName) {
|
|
176
|
+
throw new telemetry_utils_1.LoggingError(reason, {
|
|
177
|
+
failedPkgPath: { value: failedPkgPath, tag: telemetry_utils_1.TelemetryDataTag.CodeArtifact },
|
|
178
|
+
fullPackageName: (0, runtime_utils_1.packagePathToTelemetryProperty)(fullPackageName),
|
|
179
|
+
});
|
|
161
180
|
}
|
|
162
181
|
async realize() {
|
|
163
182
|
(0, common_utils_1.assert)(!this.detachedRuntimeCreation, 0x13d /* "Detached runtime creation on realize()" */);
|
|
@@ -171,6 +190,7 @@ class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
|
171
190
|
value: this.id,
|
|
172
191
|
tag: telemetry_utils_1.TelemetryDataTag.CodeArtifact,
|
|
173
192
|
},
|
|
193
|
+
packageName: (0, runtime_utils_1.packagePathToTelemetryProperty)(this.pkg),
|
|
174
194
|
});
|
|
175
195
|
(_a = this.channelDeferred) === null || _a === void 0 ? void 0 : _a.reject(errorWrapped);
|
|
176
196
|
this.logger.sendErrorEvent({ eventName: "RealizeError" }, errorWrapped);
|
|
@@ -188,18 +208,18 @@ class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
|
188
208
|
let lastPkg;
|
|
189
209
|
for (const pkg of packages) {
|
|
190
210
|
if (!registry) {
|
|
191
|
-
this.rejectDeferredRealize("No registry for package", lastPkg);
|
|
211
|
+
this.rejectDeferredRealize("No registry for package", lastPkg, packages);
|
|
192
212
|
}
|
|
193
213
|
lastPkg = pkg;
|
|
194
214
|
entry = await registry.get(pkg);
|
|
195
215
|
if (!entry) {
|
|
196
|
-
this.rejectDeferredRealize("Registry does not contain entry for the package", pkg);
|
|
216
|
+
this.rejectDeferredRealize("Registry does not contain entry for the package", pkg, packages);
|
|
197
217
|
}
|
|
198
218
|
registry = entry.IFluidDataStoreRegistry;
|
|
199
219
|
}
|
|
200
220
|
const factory = entry === null || entry === void 0 ? void 0 : entry.IFluidDataStoreFactory;
|
|
201
221
|
if (factory === undefined) {
|
|
202
|
-
this.rejectDeferredRealize("Can't find factory for package", lastPkg);
|
|
222
|
+
this.rejectDeferredRealize("Can't find factory for package", lastPkg, packages);
|
|
203
223
|
}
|
|
204
224
|
return { factory, registry };
|
|
205
225
|
}
|
|
@@ -279,13 +299,13 @@ class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
|
279
299
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
280
300
|
const summarizeResult = await this.channel.summarize(fullTree, trackState, telemetryContext);
|
|
281
301
|
// Wrap dds summaries in .channels subtree.
|
|
282
|
-
(0,
|
|
302
|
+
(0, summary_1.wrapSummaryInChannelsTree)(summarizeResult);
|
|
283
303
|
const pathPartsForChildren = [runtime_definitions_1.channelsTreeName];
|
|
284
304
|
// Add data store's attributes to the summary.
|
|
285
305
|
const { pkg } = await this.getInitialSnapshotDetails();
|
|
286
306
|
const isRoot = await this.isRoot();
|
|
287
307
|
const attributes = createAttributes(pkg, isRoot);
|
|
288
|
-
(0, runtime_utils_1.addBlobToSummary)(summarizeResult,
|
|
308
|
+
(0, runtime_utils_1.addBlobToSummary)(summarizeResult, summary_1.dataStoreAttributesBlobName, JSON.stringify(attributes));
|
|
289
309
|
// If we are not referenced, mark the summary tree as unreferenced. Also, update unreferenced blob
|
|
290
310
|
// size in the summary stats with the blobs size of this data store.
|
|
291
311
|
if (!this.summarizerNode.isReferenced()) {
|
|
@@ -369,7 +389,9 @@ class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
|
369
389
|
return;
|
|
370
390
|
}
|
|
371
391
|
// Remove the route to this data store, if it exists.
|
|
372
|
-
const usedChannelRoutes = this.lastUsedRoutes.filter((id) => {
|
|
392
|
+
const usedChannelRoutes = this.lastUsedRoutes.filter((id) => {
|
|
393
|
+
return id !== "/" && id !== "";
|
|
394
|
+
});
|
|
373
395
|
this.channel.updateUsedRoutes(usedChannelRoutes);
|
|
374
396
|
}
|
|
375
397
|
/**
|
|
@@ -386,6 +408,8 @@ class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
|
386
408
|
content,
|
|
387
409
|
type,
|
|
388
410
|
};
|
|
411
|
+
// Summarizer clients should not submit messages.
|
|
412
|
+
this.identifyLocalChangeInSummarizer("DataStoreMessageSubmittedInSummarizer", type);
|
|
389
413
|
this._containerRuntime.submitDataStoreOp(this.id, fluidDataStoreContent, localOpMetadata);
|
|
390
414
|
}
|
|
391
415
|
/**
|
|
@@ -418,6 +442,11 @@ class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
|
418
442
|
*/
|
|
419
443
|
makeLocallyVisible() {
|
|
420
444
|
(0, common_utils_1.assert)(this.channel !== undefined, 0x2cf /* "undefined channel on datastore context" */);
|
|
445
|
+
(0, common_utils_1.assert)(this.channel.visibilityState === runtime_definitions_1.VisibilityState.LocallyVisible, 0x590 /* Channel must be locally visible */);
|
|
446
|
+
this.makeLocallyVisibleFn();
|
|
447
|
+
}
|
|
448
|
+
/** @deprecated - To be replaced by calling makeLocallyVisible directly */
|
|
449
|
+
bindToContext() {
|
|
421
450
|
this.makeLocallyVisibleFn();
|
|
422
451
|
}
|
|
423
452
|
bindRuntime(channel) {
|
|
@@ -456,10 +485,13 @@ class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
|
456
485
|
}
|
|
457
486
|
catch (error) {
|
|
458
487
|
(_a = this.channelDeferred) === null || _a === void 0 ? void 0 : _a.reject(error);
|
|
459
|
-
this.logger.sendErrorEvent({
|
|
488
|
+
this.logger.sendErrorEvent({
|
|
489
|
+
eventName: "BindRuntimeError",
|
|
490
|
+
fluidDataStoreId: {
|
|
460
491
|
value: this.id,
|
|
461
492
|
tag: telemetry_utils_1.TelemetryDataTag.CodeArtifact,
|
|
462
|
-
}
|
|
493
|
+
},
|
|
494
|
+
}, error);
|
|
463
495
|
}
|
|
464
496
|
}
|
|
465
497
|
async getAbsoluteUrl(relativeUrl) {
|
|
@@ -476,6 +508,12 @@ class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
|
476
508
|
setInMemoryRoot() {
|
|
477
509
|
this._isInMemoryRoot = true;
|
|
478
510
|
}
|
|
511
|
+
/**
|
|
512
|
+
* @deprecated - The functionality to get base GC details has been moved to summarizer node.
|
|
513
|
+
*/
|
|
514
|
+
async getBaseGCDetails() {
|
|
515
|
+
return {};
|
|
516
|
+
}
|
|
479
517
|
reSubmit(contents, localOpMetadata) {
|
|
480
518
|
(0, common_utils_1.assert)(!!this.channel, 0x14b /* "Channel must exist when resubmitting ops" */);
|
|
481
519
|
const innerContents = contents;
|
|
@@ -500,30 +538,63 @@ class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
|
500
538
|
return this.channel.applyStashedOp(innerContents.content);
|
|
501
539
|
}
|
|
502
540
|
verifyNotClosed(callSite, checkTombstone = true, safeTelemetryProps = {}) {
|
|
541
|
+
if (this.deleted) {
|
|
542
|
+
const messageString = `Context is deleted! Call site [${callSite}]`;
|
|
543
|
+
const error = new container_utils_1.DataCorruptionError(messageString, safeTelemetryProps);
|
|
544
|
+
this.mc.logger.sendErrorEvent({
|
|
545
|
+
eventName: "GC_Deleted_DataStore_Changed",
|
|
546
|
+
callSite,
|
|
547
|
+
}, error);
|
|
548
|
+
throw error;
|
|
549
|
+
}
|
|
503
550
|
if (this._disposed) {
|
|
504
551
|
throw new Error(`Context is closed! Call site [${callSite}]`);
|
|
505
552
|
}
|
|
506
553
|
if (checkTombstone && this.tombstoned) {
|
|
507
554
|
const messageString = `Context is tombstoned! Call site [${callSite}]`;
|
|
508
|
-
const error = new container_utils_1.DataCorruptionError(messageString,
|
|
509
|
-
|
|
510
|
-
// throwOnTombstoneUsage is set.
|
|
511
|
-
this.mc.logger.sendErrorEvent({
|
|
555
|
+
const error = new container_utils_1.DataCorruptionError(messageString, safeTelemetryProps);
|
|
556
|
+
(0, gc_1.sendGCUnexpectedUsageEvent)(this.mc, {
|
|
512
557
|
eventName: "GC_Tombstone_DataStore_Changed",
|
|
558
|
+
category: this.throwOnTombstoneUsage ? "error" : "generic",
|
|
559
|
+
gcTombstoneEnforcementAllowed: this._containerRuntime.gcTombstoneEnforcementAllowed,
|
|
513
560
|
callSite,
|
|
514
|
-
|
|
515
|
-
}, error);
|
|
516
|
-
// Always log an error when tombstoned data store is used. However, throw an error only if
|
|
517
|
-
// throwOnTombstoneUsage is set and the client is not a summarizer.
|
|
561
|
+
}, this.pkg, error);
|
|
518
562
|
if (this.throwOnTombstoneUsage) {
|
|
519
563
|
throw error;
|
|
520
564
|
}
|
|
521
565
|
}
|
|
522
566
|
}
|
|
567
|
+
/**
|
|
568
|
+
* Summarizer client should not have local changes. These changes can become part of the summary and can break
|
|
569
|
+
* eventual consistency. For example, the next summary (say at ref seq# 100) may contain these changes whereas
|
|
570
|
+
* other clients that are up-to-date till seq# 100 may not have them yet.
|
|
571
|
+
*/
|
|
572
|
+
identifyLocalChangeInSummarizer(eventName, type) {
|
|
573
|
+
var _a, _b;
|
|
574
|
+
if (this.clientDetails.type !== summary_1.summarizerClientType ||
|
|
575
|
+
this.localChangesTelemetryCount <= 0) {
|
|
576
|
+
return;
|
|
577
|
+
}
|
|
578
|
+
// Log a telemetry if there are local changes in the summarizer. This will give us data on how often
|
|
579
|
+
// this is happening and which data stores do this. The eventual goal is to disallow local changes
|
|
580
|
+
// in the summarizer and the data will help us plan this.
|
|
581
|
+
this.mc.logger.sendTelemetryEvent({
|
|
582
|
+
eventName,
|
|
583
|
+
type,
|
|
584
|
+
fluidDataStoreId: {
|
|
585
|
+
value: this.id,
|
|
586
|
+
tag: telemetry_utils_1.TelemetryDataTag.CodeArtifact,
|
|
587
|
+
},
|
|
588
|
+
packageName: (0, runtime_utils_1.packagePathToTelemetryProperty)(this.pkg),
|
|
589
|
+
isSummaryInProgress: (_b = (_a = this.summarizerNode).isSummaryInProgress) === null || _b === void 0 ? void 0 : _b.call(_a),
|
|
590
|
+
stack: (0, telemetry_utils_1.generateStack)(),
|
|
591
|
+
});
|
|
592
|
+
this.localChangesTelemetryCount--;
|
|
593
|
+
}
|
|
523
594
|
getCreateChildSummarizerNodeFn(id, createParam) {
|
|
524
|
-
return (summarizeInternal, getGCDataFn
|
|
595
|
+
return (summarizeInternal, getGCDataFn) => this.summarizerNode.createChild(summarizeInternal, id, createParam,
|
|
525
596
|
// DDS will not create failure summaries
|
|
526
|
-
{ throwOnFailure: true }, getGCDataFn
|
|
597
|
+
{ throwOnFailure: true }, getGCDataFn);
|
|
527
598
|
}
|
|
528
599
|
async uploadBlob(blob) {
|
|
529
600
|
return this.containerRuntime.uploadBlob(blob);
|
|
@@ -533,24 +604,25 @@ exports.FluidDataStoreContext = FluidDataStoreContext;
|
|
|
533
604
|
FluidDataStoreContext.pendingOpsCountThreshold = 1000;
|
|
534
605
|
class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
535
606
|
constructor(props) {
|
|
536
|
-
super(props, true /* existing */,
|
|
607
|
+
super(props, true /* existing */, false /* isLocalDataStore */, () => {
|
|
537
608
|
throw new Error("Already attached");
|
|
538
609
|
});
|
|
539
610
|
this.initialSnapshotDetailsP = new common_utils_1.LazyPromise(async () => {
|
|
540
611
|
var _a;
|
|
541
612
|
let tree = this.initSnapshotValue;
|
|
542
613
|
let isRootDataStore = true;
|
|
543
|
-
if (!!tree && tree.blobs[
|
|
614
|
+
if (!!tree && tree.blobs[summary_1.dataStoreAttributesBlobName] !== undefined) {
|
|
544
615
|
// Need to get through snapshot and use that to populate extraBlobs
|
|
545
|
-
const attributes = await (0, driver_utils_1.readAndParse)(this.storage, tree.blobs[
|
|
616
|
+
const attributes = await (0, driver_utils_1.readAndParse)(this.storage, tree.blobs[summary_1.dataStoreAttributesBlobName]);
|
|
546
617
|
let pkgFromSnapshot;
|
|
547
618
|
// Use the snapshotFormatVersion to determine how the pkg is encoded in the snapshot.
|
|
548
619
|
// For snapshotFormatVersion = "0.1" (1) or above, pkg is jsonified, otherwise it is just a string.
|
|
549
|
-
const formatVersion = (0,
|
|
620
|
+
const formatVersion = (0, summary_1.getAttributesFormatVersion)(attributes);
|
|
550
621
|
if (formatVersion < 1) {
|
|
551
|
-
pkgFromSnapshot =
|
|
552
|
-
|
|
553
|
-
|
|
622
|
+
pkgFromSnapshot =
|
|
623
|
+
attributes.pkg.startsWith('["') && attributes.pkg.endsWith('"]')
|
|
624
|
+
? JSON.parse(attributes.pkg)
|
|
625
|
+
: [attributes.pkg];
|
|
554
626
|
}
|
|
555
627
|
else {
|
|
556
628
|
pkgFromSnapshot = JSON.parse(attributes.pkg);
|
|
@@ -562,7 +634,7 @@ class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
|
562
634
|
* roots in the document but they won't break.
|
|
563
635
|
*/
|
|
564
636
|
isRootDataStore = (_a = attributes.isRootDataStore) !== null && _a !== void 0 ? _a : true;
|
|
565
|
-
if ((0,
|
|
637
|
+
if ((0, summary_1.hasIsolatedChannels)(attributes)) {
|
|
566
638
|
tree = tree.trees[runtime_definitions_1.channelsTreeName];
|
|
567
639
|
(0, common_utils_1.assert)(tree !== undefined, 0x1fe /* "isolated channels subtree should exist in remote datastore snapshot" */);
|
|
568
640
|
}
|
|
@@ -575,10 +647,6 @@ class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
|
575
647
|
};
|
|
576
648
|
});
|
|
577
649
|
this.initSnapshotValue = props.snapshotTree;
|
|
578
|
-
this.baseGCDetailsP = new common_utils_1.LazyPromise(async () => {
|
|
579
|
-
var _a;
|
|
580
|
-
return (_a = (await props.getBaseGCDetails())) !== null && _a !== void 0 ? _a : {};
|
|
581
|
-
});
|
|
582
650
|
if (props.snapshotTree !== undefined) {
|
|
583
651
|
this.summarizerNode.updateBaseSummaryState(props.snapshotTree);
|
|
584
652
|
}
|
|
@@ -586,9 +654,6 @@ class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
|
586
654
|
async getInitialSnapshotDetails() {
|
|
587
655
|
return this.initialSnapshotDetailsP;
|
|
588
656
|
}
|
|
589
|
-
async getBaseGCDetails() {
|
|
590
|
-
return this.baseGCDetailsP;
|
|
591
|
-
}
|
|
592
657
|
generateAttachMessage() {
|
|
593
658
|
throw new Error("Cannot attach remote store");
|
|
594
659
|
}
|
|
@@ -599,7 +664,9 @@ exports.RemoteFluidDataStoreContext = RemoteFluidDataStoreContext;
|
|
|
599
664
|
*/
|
|
600
665
|
class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
601
666
|
constructor(props) {
|
|
602
|
-
super(props, props.snapshotTree !== undefined ? true : false /* existing */,
|
|
667
|
+
super(props, props.snapshotTree !== undefined ? true : false /* existing */, true /* isLocalDataStore */, props.makeLocallyVisibleFn);
|
|
668
|
+
// Summarizer client should not create local data stores.
|
|
669
|
+
this.identifyLocalChangeInSummarizer("DataStoreCreatedInSummarizer");
|
|
603
670
|
this.snapshotTree = props.snapshotTree;
|
|
604
671
|
if (props.isRootDataStore === true) {
|
|
605
672
|
this.setInMemoryRoot();
|
|
@@ -622,10 +689,10 @@ class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
622
689
|
(0, common_utils_1.assert)(this.pkg !== undefined, 0x150 /* "pkg should be available in local data store context" */);
|
|
623
690
|
const summarizeResult = this.channel.getAttachSummary();
|
|
624
691
|
// Wrap dds summaries in .channels subtree.
|
|
625
|
-
(0,
|
|
692
|
+
(0, summary_1.wrapSummaryInChannelsTree)(summarizeResult);
|
|
626
693
|
// Add data store's attributes to the summary.
|
|
627
694
|
const attributes = createAttributes(this.pkg, this.isInMemoryRoot());
|
|
628
|
-
(0, runtime_utils_1.addBlobToSummary)(summarizeResult,
|
|
695
|
+
(0, runtime_utils_1.addBlobToSummary)(summarizeResult, summary_1.dataStoreAttributesBlobName, JSON.stringify(attributes));
|
|
629
696
|
// Attach message needs the summary in ITree format. Convert the ISummaryTree into an ITree.
|
|
630
697
|
const snapshot = (0, runtime_utils_1.convertSummaryTreeToITree)(summarizeResult.summary);
|
|
631
698
|
const message = {
|
|
@@ -643,8 +710,8 @@ class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
643
710
|
if (snapshot !== undefined) {
|
|
644
711
|
// Get the dataStore attributes.
|
|
645
712
|
// Note: storage can be undefined in special case while detached.
|
|
646
|
-
attributes = await (0,
|
|
647
|
-
if ((0,
|
|
713
|
+
attributes = await (0, summary_1.getFluidDataStoreAttributes)(this.storage, snapshot);
|
|
714
|
+
if ((0, summary_1.hasIsolatedChannels)(attributes)) {
|
|
648
715
|
snapshot = snapshot.trees[runtime_definitions_1.channelsTreeName];
|
|
649
716
|
(0, common_utils_1.assert)(snapshot !== undefined, 0x1ff /* "isolated channels subtree should exist in local datastore snapshot" */);
|
|
650
717
|
}
|
|
@@ -666,9 +733,22 @@ class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
666
733
|
snapshot,
|
|
667
734
|
};
|
|
668
735
|
}
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
736
|
+
/**
|
|
737
|
+
* A context should only be marked as deleted when its a remote context.
|
|
738
|
+
* Session Expiry at the runtime level should have closed the container creating the local data store context
|
|
739
|
+
* before delete is even possible. Session Expiry is at 30 days, and sweep is done 36+ days later from the time
|
|
740
|
+
* it was unreferenced. Thus the sweeping container should have loaded from a snapshot and thus creating a remote
|
|
741
|
+
* context.
|
|
742
|
+
*/
|
|
743
|
+
delete() {
|
|
744
|
+
// TODO: GC:Validation - potentially prevent this from happening or asserting. Maybe throw here.
|
|
745
|
+
(0, gc_1.sendGCUnexpectedUsageEvent)(this.mc, {
|
|
746
|
+
eventName: "GC_Deleted_DataStore_Unexpected_Delete",
|
|
747
|
+
message: "Unexpected deletion of a local data store context",
|
|
748
|
+
category: "error",
|
|
749
|
+
gcTombstoneEnforcementAllowed: undefined,
|
|
750
|
+
}, this.pkg);
|
|
751
|
+
super.delete();
|
|
672
752
|
}
|
|
673
753
|
}
|
|
674
754
|
exports.LocalFluidDataStoreContextBase = LocalFluidDataStoreContextBase;
|