@fluidframework/container-runtime 2.0.0-internal.3.1.0 → 2.0.0-internal.3.2.1
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/dist/blobManager.d.ts +6 -0
- package/dist/blobManager.d.ts.map +1 -1
- package/dist/blobManager.js +31 -6
- package/dist/blobManager.js.map +1 -1
- package/dist/containerRuntime.d.ts +17 -15
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +158 -121
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStoreContext.d.ts +21 -12
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +76 -50
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStores.d.ts +9 -10
- package/dist/dataStores.d.ts.map +1 -1
- package/dist/dataStores.js +42 -49
- package/dist/dataStores.js.map +1 -1
- package/dist/{garbageCollection.d.ts → gc/garbageCollection.d.ts} +5 -200
- package/dist/gc/garbageCollection.d.ts.map +1 -0
- package/dist/{garbageCollection.js → gc/garbageCollection.js} +77 -353
- package/dist/gc/garbageCollection.js.map +1 -0
- package/dist/gc/gcDefinitions.d.ts +189 -0
- package/dist/gc/gcDefinitions.d.ts.map +1 -0
- package/dist/{garbageCollectionConstants.js → gc/gcDefinitions.js} +24 -2
- package/dist/gc/gcDefinitions.js.map +1 -0
- package/{lib/garbageCollectionHelpers.d.ts → dist/gc/gcHelpers.d.ts} +5 -1
- package/dist/gc/gcHelpers.d.ts.map +1 -0
- package/dist/{garbageCollectionHelpers.js → gc/gcHelpers.js} +27 -7
- package/dist/gc/gcHelpers.js.map +1 -0
- package/dist/gc/gcSummaryStateTracker.d.ts +86 -0
- package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -0
- package/dist/gc/gcSummaryStateTracker.js +246 -0
- package/dist/gc/gcSummaryStateTracker.js.map +1 -0
- package/dist/gc/gcSweepReadyUsageDetection.d.ts.map +1 -0
- package/dist/{gcSweepReadyUsageDetection.js → gc/gcSweepReadyUsageDetection.js} +2 -2
- 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 +11 -0
- package/dist/gc/index.d.ts.map +1 -0
- package/dist/gc/index.js +40 -0
- package/dist/gc/index.js.map +1 -0
- package/dist/index.d.ts +2 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -9
- package/dist/index.js.map +1 -1
- package/dist/opLifecycle/batchManager.d.ts +2 -13
- package/dist/opLifecycle/batchManager.d.ts.map +1 -1
- package/dist/opLifecycle/batchManager.js +7 -36
- package/dist/opLifecycle/batchManager.js.map +1 -1
- package/dist/opLifecycle/definitions.d.ts +4 -0
- package/dist/opLifecycle/definitions.d.ts.map +1 -1
- package/dist/opLifecycle/definitions.js.map +1 -1
- package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opCompressor.js +1 -0
- package/dist/opLifecycle/opCompressor.js.map +1 -1
- package/dist/opLifecycle/opSplitter.d.ts +1 -1
- package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
- package/dist/opLifecycle/opSplitter.js +20 -12
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +19 -3
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +59 -28
- package/dist/opLifecycle/outbox.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 +1 -2
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +14 -9
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/summary/index.d.ts +17 -0
- package/dist/summary/index.d.ts.map +1 -0
- package/dist/summary/index.js +47 -0
- package/dist/summary/index.js.map +1 -0
- package/dist/summary/orderedClientElection.d.ts.map +1 -0
- package/dist/summary/orderedClientElection.js.map +1 -0
- package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -0
- 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} +158 -56
- package/dist/summary/runningSummarizer.js.map +1 -0
- package/dist/{summarizer.d.ts → summary/summarizer.d.ts} +2 -4
- package/dist/summary/summarizer.d.ts.map +1 -0
- package/dist/{summarizer.js → summary/summarizer.js} +1 -61
- package/dist/summary/summarizer.js.map +1 -0
- package/dist/summary/summarizerClientElection.d.ts.map +1 -0
- package/dist/summary/summarizerClientElection.js.map +1 -0
- package/dist/summary/summarizerHandle.d.ts.map +1 -0
- package/dist/summary/summarizerHandle.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/summary/summarizerHeuristics.js.map +1 -0
- package/{lib → dist/summary}/summarizerTypes.d.ts +1 -1
- package/dist/summary/summarizerTypes.d.ts.map +1 -0
- package/dist/summary/summarizerTypes.js.map +1 -0
- package/dist/summary/summaryCollection.d.ts.map +1 -0
- package/dist/summary/summaryCollection.js.map +1 -0
- package/{lib → dist/summary}/summaryFormat.d.ts +1 -43
- package/dist/summary/summaryFormat.d.ts.map +1 -0
- package/dist/{summaryFormat.js → summary/summaryFormat.js} +1 -10
- package/dist/summary/summaryFormat.js.map +1 -0
- package/dist/summary/summaryGenerator.d.ts.map +1 -0
- package/dist/{summaryGenerator.js → summary/summaryGenerator.js} +1 -2
- 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/summary/summaryManager.js.map +1 -0
- package/lib/blobManager.d.ts +6 -0
- package/lib/blobManager.d.ts.map +1 -1
- package/lib/blobManager.js +28 -3
- package/lib/blobManager.js.map +1 -1
- package/lib/containerRuntime.d.ts +17 -15
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +127 -90
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStoreContext.d.ts +21 -12
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +64 -38
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/dataStores.d.ts +9 -10
- package/lib/dataStores.d.ts.map +1 -1
- package/lib/dataStores.js +33 -40
- package/lib/dataStores.js.map +1 -1
- package/lib/{garbageCollection.d.ts → gc/garbageCollection.d.ts} +5 -200
- package/lib/gc/garbageCollection.d.ts.map +1 -0
- package/lib/{garbageCollection.js → gc/garbageCollection.js} +44 -319
- package/lib/gc/garbageCollection.js.map +1 -0
- package/lib/gc/gcDefinitions.d.ts +189 -0
- package/lib/gc/gcDefinitions.d.ts.map +1 -0
- package/lib/{garbageCollectionConstants.js → gc/gcDefinitions.js} +23 -1
- package/lib/gc/gcDefinitions.js.map +1 -0
- package/{dist/garbageCollectionHelpers.d.ts → lib/gc/gcHelpers.d.ts} +5 -1
- package/lib/gc/gcHelpers.d.ts.map +1 -0
- package/lib/{garbageCollectionHelpers.js → gc/gcHelpers.js} +20 -2
- package/lib/gc/gcHelpers.js.map +1 -0
- package/lib/gc/gcSummaryStateTracker.d.ts +86 -0
- package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -0
- package/lib/gc/gcSummaryStateTracker.js +242 -0
- package/lib/gc/gcSummaryStateTracker.js.map +1 -0
- package/lib/gc/gcSweepReadyUsageDetection.d.ts.map +1 -0
- package/lib/{gcSweepReadyUsageDetection.js → gc/gcSweepReadyUsageDetection.js} +1 -1
- 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 +11 -0
- package/lib/gc/index.d.ts.map +1 -0
- package/lib/gc/index.js +11 -0
- package/lib/gc/index.js.map +1 -0
- package/lib/index.d.ts +2 -5
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -4
- package/lib/index.js.map +1 -1
- package/lib/opLifecycle/batchManager.d.ts +2 -13
- package/lib/opLifecycle/batchManager.d.ts.map +1 -1
- package/lib/opLifecycle/batchManager.js +7 -36
- package/lib/opLifecycle/batchManager.js.map +1 -1
- package/lib/opLifecycle/definitions.d.ts +4 -0
- package/lib/opLifecycle/definitions.d.ts.map +1 -1
- package/lib/opLifecycle/definitions.js.map +1 -1
- package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opCompressor.js +1 -0
- package/lib/opLifecycle/opCompressor.js.map +1 -1
- package/lib/opLifecycle/opSplitter.d.ts +1 -1
- package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
- package/lib/opLifecycle/opSplitter.js +20 -12
- package/lib/opLifecycle/opSplitter.js.map +1 -1
- package/lib/opLifecycle/outbox.d.ts +19 -3
- package/lib/opLifecycle/outbox.d.ts.map +1 -1
- package/lib/opLifecycle/outbox.js +60 -29
- package/lib/opLifecycle/outbox.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 +1 -2
- package/lib/pendingStateManager.d.ts.map +1 -1
- package/lib/pendingStateManager.js +14 -9
- package/lib/pendingStateManager.js.map +1 -1
- package/lib/summary/index.d.ts +17 -0
- package/lib/summary/index.d.ts.map +1 -0
- package/lib/summary/index.js +16 -0
- package/lib/summary/index.js.map +1 -0
- package/lib/summary/orderedClientElection.d.ts.map +1 -0
- package/lib/summary/orderedClientElection.js.map +1 -0
- package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -0
- 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} +159 -57
- package/lib/summary/runningSummarizer.js.map +1 -0
- package/lib/{summarizer.d.ts → summary/summarizer.d.ts} +2 -4
- package/lib/summary/summarizer.d.ts.map +1 -0
- package/lib/{summarizer.js → summary/summarizer.js} +3 -63
- package/lib/summary/summarizer.js.map +1 -0
- package/lib/summary/summarizerClientElection.d.ts.map +1 -0
- package/lib/summary/summarizerClientElection.js.map +1 -0
- package/lib/summary/summarizerHandle.d.ts.map +1 -0
- package/lib/summary/summarizerHandle.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/summary/summarizerHeuristics.js.map +1 -0
- package/{dist → lib/summary}/summarizerTypes.d.ts +1 -1
- package/lib/summary/summarizerTypes.d.ts.map +1 -0
- package/lib/summary/summarizerTypes.js.map +1 -0
- package/lib/summary/summaryCollection.d.ts.map +1 -0
- package/lib/summary/summaryCollection.js.map +1 -0
- package/{dist → lib/summary}/summaryFormat.d.ts +1 -43
- package/lib/summary/summaryFormat.d.ts.map +1 -0
- package/lib/{summaryFormat.js → summary/summaryFormat.js} +0 -8
- package/lib/summary/summaryFormat.js.map +1 -0
- package/lib/summary/summaryGenerator.d.ts.map +1 -0
- package/lib/{summaryGenerator.js → summary/summaryGenerator.js} +1 -2
- 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/summary/summaryManager.js.map +1 -0
- package/package.json +125 -122
- package/src/blobManager.ts +33 -3
- package/src/containerRuntime.ts +178 -106
- package/src/dataStoreContext.ts +90 -49
- package/src/dataStores.ts +44 -51
- package/{garbageCollection.md → src/gc/garbageCollection.md} +2 -2
- package/src/{garbageCollection.ts → gc/garbageCollection.ts} +90 -560
- package/src/gc/gcDefinitions.ts +244 -0
- package/src/{garbageCollectionHelpers.ts → gc/gcHelpers.ts} +26 -1
- package/src/gc/gcSummaryStateTracker.ts +339 -0
- package/src/{gcSweepReadyUsageDetection.ts → gc/gcSweepReadyUsageDetection.ts} +1 -1
- package/src/gc/gcUnreferencedStateTracker.ts +114 -0
- package/src/gc/index.ts +40 -0
- package/src/index.ts +10 -14
- package/src/opLifecycle/batchManager.ts +7 -54
- package/src/opLifecycle/definitions.ts +4 -0
- package/src/opLifecycle/opCompressor.ts +1 -0
- package/src/opLifecycle/opSplitter.ts +33 -14
- package/src/opLifecycle/outbox.ts +84 -38
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +26 -14
- package/src/summary/index.ts +99 -0
- package/src/{runningSummarizer.ts → summary/runningSummarizer.ts} +279 -139
- package/src/{summarizer.ts → summary/summarizer.ts} +5 -76
- package/src/{summarizerHeuristics.ts → summary/summarizerHeuristics.ts} +1 -1
- package/src/{summarizerTypes.ts → summary/summarizerTypes.ts} +1 -1
- package/src/{summaryFormat.ts → summary/summaryFormat.ts} +1 -53
- package/src/{summaryGenerator.ts → summary/summaryGenerator.ts} +9 -9
- package/src/{summaryManager.ts → summary/summaryManager.ts} +1 -1
- package/dist/garbageCollection.d.ts.map +0 -1
- package/dist/garbageCollection.js.map +0 -1
- package/dist/garbageCollectionConstants.d.ts +0 -26
- package/dist/garbageCollectionConstants.d.ts.map +0 -1
- package/dist/garbageCollectionConstants.js.map +0 -1
- package/dist/garbageCollectionHelpers.d.ts.map +0 -1
- package/dist/garbageCollectionHelpers.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/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.map +0 -1
- 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.map +0 -1
- package/lib/garbageCollection.js.map +0 -1
- package/lib/garbageCollectionConstants.d.ts +0 -26
- package/lib/garbageCollectionConstants.d.ts.map +0 -1
- package/lib/garbageCollectionConstants.js.map +0 -1
- package/lib/garbageCollectionHelpers.d.ts.map +0 -1
- package/lib/garbageCollectionHelpers.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/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.map +0 -1
- 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.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/garbageCollectionConstants.ts +0 -44
- /package/dist/{gcSweepReadyUsageDetection.d.ts → gc/gcSweepReadyUsageDetection.d.ts} +0 -0
- /package/dist/{orderedClientElection.d.ts → summary/orderedClientElection.d.ts} +0 -0
- /package/dist/{orderedClientElection.js → summary/orderedClientElection.js} +0 -0
- /package/dist/{runWhileConnectedCoordinator.d.ts → summary/runWhileConnectedCoordinator.d.ts} +0 -0
- /package/dist/{runWhileConnectedCoordinator.js → summary/runWhileConnectedCoordinator.js} +0 -0
- /package/dist/{summarizerClientElection.d.ts → summary/summarizerClientElection.d.ts} +0 -0
- /package/dist/{summarizerClientElection.js → summary/summarizerClientElection.js} +0 -0
- /package/dist/{summarizerHandle.d.ts → summary/summarizerHandle.d.ts} +0 -0
- /package/dist/{summarizerHandle.js → summary/summarizerHandle.js} +0 -0
- /package/dist/{summarizerHeuristics.js → summary/summarizerHeuristics.js} +0 -0
- /package/dist/{summarizerTypes.js → summary/summarizerTypes.js} +0 -0
- /package/dist/{summaryCollection.d.ts → summary/summaryCollection.d.ts} +0 -0
- /package/dist/{summaryCollection.js → summary/summaryCollection.js} +0 -0
- /package/dist/{summaryGenerator.d.ts → summary/summaryGenerator.d.ts} +0 -0
- /package/dist/{summaryManager.js → summary/summaryManager.js} +0 -0
- /package/lib/{gcSweepReadyUsageDetection.d.ts → gc/gcSweepReadyUsageDetection.d.ts} +0 -0
- /package/lib/{orderedClientElection.d.ts → summary/orderedClientElection.d.ts} +0 -0
- /package/lib/{orderedClientElection.js → summary/orderedClientElection.js} +0 -0
- /package/lib/{runWhileConnectedCoordinator.d.ts → summary/runWhileConnectedCoordinator.d.ts} +0 -0
- /package/lib/{runWhileConnectedCoordinator.js → summary/runWhileConnectedCoordinator.js} +0 -0
- /package/lib/{summarizerClientElection.d.ts → summary/summarizerClientElection.d.ts} +0 -0
- /package/lib/{summarizerClientElection.js → summary/summarizerClientElection.js} +0 -0
- /package/lib/{summarizerHandle.d.ts → summary/summarizerHandle.d.ts} +0 -0
- /package/lib/{summarizerHandle.js → summary/summarizerHandle.js} +0 -0
- /package/lib/{summarizerHeuristics.js → summary/summarizerHeuristics.js} +0 -0
- /package/lib/{summarizerTypes.js → summary/summarizerTypes.js} +0 -0
- /package/lib/{summaryCollection.d.ts → summary/summaryCollection.d.ts} +0 -0
- /package/lib/{summaryCollection.js → summary/summaryCollection.js} +0 -0
- /package/lib/{summaryGenerator.d.ts → summary/summaryGenerator.d.ts} +0 -0
- /package/lib/{summaryManager.js → summary/summaryManager.js} +0 -0
- /package/src/{orderedClientElection.ts → summary/orderedClientElection.ts} +0 -0
- /package/src/{runWhileConnectedCoordinator.ts → summary/runWhileConnectedCoordinator.ts} +0 -0
- /package/src/{summarizerClientElection.ts → summary/summarizerClientElection.ts} +0 -0
- /package/src/{summarizerHandle.ts → summary/summarizerHandle.ts} +0 -0
- /package/src/{summaryCollection.ts → summary/summaryCollection.ts} +0 -0
|
@@ -9,7 +9,7 @@ import { Deferred, TypedEventEmitter } from "@fluidframework/common-utils";
|
|
|
9
9
|
import { IDocumentStorageService } from "@fluidframework/driver-definitions";
|
|
10
10
|
import { IClientDetails, IDocumentMessage, IQuorumClients, ISequencedDocumentMessage, ISnapshotTree, ITreeEntry } from "@fluidframework/protocol-definitions";
|
|
11
11
|
import { IContainerRuntime } from "@fluidframework/container-runtime-definitions";
|
|
12
|
-
import {
|
|
12
|
+
import { CreateChildSummarizerNodeFn, CreateChildSummarizerNodeParam, IAttachMessage, IFluidDataStoreChannel, IFluidDataStoreContext, IFluidDataStoreContextDetached, IFluidDataStoreContextEvents, IFluidDataStoreRegistry, IGarbageCollectionData, IGarbageCollectionDetailsBase, IInboundSignalMessage, IProvideFluidDataStoreFactory, ISummarizeResult, ISummarizerNodeWithGC, SummarizeInternalFn, ITelemetryContext } from "@fluidframework/runtime-definitions";
|
|
13
13
|
import { MonitoringContext } from "@fluidframework/telemetry-utils";
|
|
14
14
|
import { ContainerRuntime } from "./containerRuntime";
|
|
15
15
|
export declare function createAttributesBlob(pkg: readonly string[], isRootDataStore: boolean): ITreeEntry;
|
|
@@ -41,14 +41,12 @@ export interface ILocalFluidDataStoreContextProps extends IFluidDataStoreContext
|
|
|
41
41
|
/** Properties necessary for creating a remote FluidDataStoreContext */
|
|
42
42
|
export interface IRemoteFluidDataStoreContextProps extends IFluidDataStoreContextProps {
|
|
43
43
|
readonly snapshotTree: ISnapshotTree | undefined;
|
|
44
|
-
readonly getBaseGCDetails: () => Promise<IGarbageCollectionDetailsBase | undefined>;
|
|
45
44
|
}
|
|
46
45
|
/**
|
|
47
46
|
* Represents the context for the store. This context is passed to the store runtime.
|
|
48
47
|
*/
|
|
49
48
|
export declare abstract class FluidDataStoreContext extends TypedEventEmitter<IFluidDataStoreContextEvents> implements IFluidDataStoreContext, IDisposable {
|
|
50
49
|
private readonly existing;
|
|
51
|
-
private bindState;
|
|
52
50
|
readonly isLocalDataStore: boolean;
|
|
53
51
|
private readonly makeLocallyVisibleFn;
|
|
54
52
|
get packagePath(): readonly string[];
|
|
@@ -94,8 +92,6 @@ export declare abstract class FluidDataStoreContext extends TypedEventEmitter<IF
|
|
|
94
92
|
protected isInMemoryRoot(): boolean;
|
|
95
93
|
protected registry: IFluidDataStoreRegistry | undefined;
|
|
96
94
|
protected detachedRuntimeCreation: boolean;
|
|
97
|
-
/** @deprecated - To be replaced by calling makeLocallyVisible directly */
|
|
98
|
-
readonly bindToContext: () => void;
|
|
99
95
|
protected channel: IFluidDataStoreChannel | undefined;
|
|
100
96
|
private loaded;
|
|
101
97
|
protected pending: ISequencedDocumentMessage[] | undefined;
|
|
@@ -107,14 +103,19 @@ export declare abstract class FluidDataStoreContext extends TypedEventEmitter<IF
|
|
|
107
103
|
protected readonly mc: MonitoringContext;
|
|
108
104
|
private readonly thresholdOpsCounter;
|
|
109
105
|
private static readonly pendingOpsCountThreshold;
|
|
106
|
+
/**
|
|
107
|
+
* If the summarizer makes local changes, a telemetry event is logged. This has the potential to be very noisy.
|
|
108
|
+
* So, adding a count of how many telemetry events are logged per data store context. This can be
|
|
109
|
+
* controlled via feature flags.
|
|
110
|
+
*/
|
|
111
|
+
private localChangesTelemetryCount;
|
|
110
112
|
private lastUsedRoutes;
|
|
111
113
|
readonly id: string;
|
|
112
114
|
private readonly _containerRuntime;
|
|
113
115
|
readonly storage: IDocumentStorageService;
|
|
114
116
|
readonly scope: FluidObject;
|
|
115
117
|
protected pkg?: readonly string[];
|
|
116
|
-
constructor(props: IFluidDataStoreContextProps, existing: boolean,
|
|
117
|
-
isLocalDataStore: boolean, makeLocallyVisibleFn: () => void);
|
|
118
|
+
constructor(props: IFluidDataStoreContextProps, existing: boolean, isLocalDataStore: boolean, makeLocallyVisibleFn: () => void);
|
|
118
119
|
dispose(): void;
|
|
119
120
|
/**
|
|
120
121
|
* When delete is called, that means that the data store is permanently removed from the runtime, and will not show up in future summaries
|
|
@@ -216,6 +217,8 @@ export declare abstract class FluidDataStoreContext extends TypedEventEmitter<IF
|
|
|
216
217
|
* globally visible now.
|
|
217
218
|
*/
|
|
218
219
|
makeLocallyVisible(): void;
|
|
220
|
+
/** @deprecated - To be replaced by calling makeLocallyVisible directly */
|
|
221
|
+
bindToContext(): void;
|
|
219
222
|
protected bindRuntime(channel: IFluidDataStoreChannel): void;
|
|
220
223
|
getAbsoluteUrl(relativeUrl: string): Promise<string | undefined>;
|
|
221
224
|
abstract generateAttachMessage(): IAttachMessage;
|
|
@@ -226,21 +229,28 @@ export declare abstract class FluidDataStoreContext extends TypedEventEmitter<IF
|
|
|
226
229
|
* It will be removed, as the source of truth for this flag will be the aliasing blob.
|
|
227
230
|
*/
|
|
228
231
|
setInMemoryRoot(): void;
|
|
229
|
-
|
|
232
|
+
/**
|
|
233
|
+
* @deprecated - The functionality to get base GC details has been moved to summarizer node.
|
|
234
|
+
*/
|
|
235
|
+
getBaseGCDetails(): Promise<IGarbageCollectionDetailsBase>;
|
|
230
236
|
reSubmit(contents: any, localOpMetadata: unknown): void;
|
|
231
237
|
rollback(contents: any, localOpMetadata: unknown): void;
|
|
232
238
|
applyStashedOp(contents: any): Promise<unknown>;
|
|
233
239
|
private verifyNotClosed;
|
|
234
|
-
|
|
240
|
+
/**
|
|
241
|
+
* Summarizer client should not have local changes. These changes can become part of the summary and can break
|
|
242
|
+
* eventual consistency. For example, the next summary (say at ref seq# 100) may contain these changes whereas
|
|
243
|
+
* other clients that are up-to-date till seq# 100 may not have them yet.
|
|
244
|
+
*/
|
|
245
|
+
protected identifyLocalChangeInSummarizer(eventName: string, type?: string): void;
|
|
246
|
+
getCreateChildSummarizerNodeFn(id: string, createParam: CreateChildSummarizerNodeParam): (summarizeInternal: SummarizeInternalFn, getGCDataFn: (fullGC?: boolean | undefined) => Promise<IGarbageCollectionData>) => ISummarizerNodeWithGC;
|
|
235
247
|
uploadBlob(blob: ArrayBufferLike): Promise<IFluidHandle<ArrayBufferLike>>;
|
|
236
248
|
}
|
|
237
249
|
export declare class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
238
250
|
private readonly initSnapshotValue;
|
|
239
|
-
private readonly baseGCDetailsP;
|
|
240
251
|
constructor(props: IRemoteFluidDataStoreContextProps);
|
|
241
252
|
private readonly initialSnapshotDetailsP;
|
|
242
253
|
getInitialSnapshotDetails(): Promise<ISnapshotDetails>;
|
|
243
|
-
getBaseGCDetails(): Promise<IGarbageCollectionDetailsBase>;
|
|
244
254
|
generateAttachMessage(): IAttachMessage;
|
|
245
255
|
}
|
|
246
256
|
/**
|
|
@@ -256,7 +266,6 @@ export declare class LocalFluidDataStoreContextBase extends FluidDataStoreContex
|
|
|
256
266
|
private attachListeners;
|
|
257
267
|
generateAttachMessage(): IAttachMessage;
|
|
258
268
|
getInitialSnapshotDetails(): Promise<ISnapshotDetails>;
|
|
259
|
-
getBaseGCDetails(): Promise<IGarbageCollectionDetailsBase>;
|
|
260
269
|
/**
|
|
261
270
|
* A context should only be marked as deleted when its a remote context.
|
|
262
271
|
* Session Expiry at the runtime level should have closed the container creating the local data store context
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataStoreContext.d.ts","sourceRoot":"","sources":["../src/dataStoreContext.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,WAAW,EACX,gBAAgB,EAEhB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACjG,OAAO,EACN,SAAS,EACT,aAAa,EACb,WAAW,EACX,cAAc,EACd,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAU,QAAQ,EAAe,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAChG,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAG7E,OAAO,EACN,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,yBAAyB,EACzB,aAAa,EACb,UAAU,EACV,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,+CAA+C,CAAC;AAClF,OAAO,
|
|
1
|
+
{"version":3,"file":"dataStoreContext.d.ts","sourceRoot":"","sources":["../src/dataStoreContext.ts"],"names":[],"mappings":"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"}
|
package/lib/dataStoreContext.js
CHANGED
|
@@ -6,14 +6,12 @@ import { AttachState, } from "@fluidframework/container-definitions";
|
|
|
6
6
|
import { assert, Deferred, LazyPromise, TypedEventEmitter } from "@fluidframework/common-utils";
|
|
7
7
|
import { readAndParse } from "@fluidframework/driver-utils";
|
|
8
8
|
import { BlobTreeEntry } from "@fluidframework/protocol-base";
|
|
9
|
-
import {
|
|
10
|
-
import { addBlobToSummary, convertSummaryTreeToITree } from "@fluidframework/runtime-utils";
|
|
11
|
-
import { ChildLogger, loggerToMonitoringContext, LoggingError, TelemetryDataTag, ThresholdCounter, } from "@fluidframework/telemetry-utils";
|
|
9
|
+
import { channelsTreeName, VisibilityState, } from "@fluidframework/runtime-definitions";
|
|
10
|
+
import { addBlobToSummary, convertSummaryTreeToITree, packagePathToTelemetryProperty, } from "@fluidframework/runtime-utils";
|
|
11
|
+
import { ChildLogger, generateStack, loggerToMonitoringContext, LoggingError, TelemetryDataTag, ThresholdCounter, } from "@fluidframework/telemetry-utils";
|
|
12
12
|
import { DataCorruptionError, DataProcessingError, extractSafePropertiesFromMessage, } from "@fluidframework/container-utils";
|
|
13
|
-
import { dataStoreAttributesBlobName, hasIsolatedChannels, wrapSummaryInChannelsTree, getAttributesFormatVersion, getFluidDataStoreAttributes, } from "./
|
|
14
|
-
import { throwOnTombstoneUsageKey } from "./
|
|
15
|
-
import { sendGCUnexpectedUsageEvent } from "./garbageCollectionHelpers";
|
|
16
|
-
import { summarizerClientType } from "./summarizerClientElection";
|
|
13
|
+
import { dataStoreAttributesBlobName, hasIsolatedChannels, wrapSummaryInChannelsTree, getAttributesFormatVersion, getFluidDataStoreAttributes, summarizerClientType, } from "./summary";
|
|
14
|
+
import { sendGCUnexpectedUsageEvent, throwOnTombstoneUsageKey } from "./gc";
|
|
17
15
|
function createAttributes(pkg, isRootDataStore) {
|
|
18
16
|
const stringifiedPkg = JSON.stringify(pkg);
|
|
19
17
|
return {
|
|
@@ -30,11 +28,10 @@ export function createAttributesBlob(pkg, isRootDataStore) {
|
|
|
30
28
|
* Represents the context for the store. This context is passed to the store runtime.
|
|
31
29
|
*/
|
|
32
30
|
export class FluidDataStoreContext extends TypedEventEmitter {
|
|
33
|
-
constructor(props, existing,
|
|
34
|
-
|
|
31
|
+
constructor(props, existing, isLocalDataStore, makeLocallyVisibleFn) {
|
|
32
|
+
var _a;
|
|
35
33
|
super();
|
|
36
34
|
this.existing = existing;
|
|
37
|
-
this.bindState = bindState;
|
|
38
35
|
this.isLocalDataStore = isLocalDataStore;
|
|
39
36
|
this.makeLocallyVisibleFn = makeLocallyVisibleFn;
|
|
40
37
|
this._disposed = false;
|
|
@@ -61,15 +58,8 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
61
58
|
this.containerRuntime.attachState !== AttachState.Detached && this.existing
|
|
62
59
|
? this.containerRuntime.attachState
|
|
63
60
|
: AttachState.Detached;
|
|
64
|
-
this.bindToContext = () => {
|
|
65
|
-
assert(this.bindState === BindState.NotBound, 0x13b /* "datastore context is already in bound state" */);
|
|
66
|
-
this.bindState = BindState.Binding;
|
|
67
|
-
assert(this.channel !== undefined, 0x13c /* "undefined channel on datastore context" */);
|
|
68
|
-
this.makeLocallyVisible();
|
|
69
|
-
this.bindState = BindState.Bound;
|
|
70
|
-
};
|
|
71
61
|
const thisSummarizeInternal = async (fullTree, trackState, telemetryContext) => this.summarizeInternal(fullTree, trackState, telemetryContext);
|
|
72
|
-
this.summarizerNode = props.createSummarizerNodeFn(thisSummarizeInternal, async (fullGC) => this.getGCDataInternal(fullGC)
|
|
62
|
+
this.summarizerNode = props.createSummarizerNodeFn(thisSummarizeInternal, async (fullGC) => this.getGCDataInternal(fullGC));
|
|
73
63
|
this.mc = loggerToMonitoringContext(ChildLogger.create(this.logger, "FluidDataStoreContext"));
|
|
74
64
|
this.thresholdOpsCounter = new ThresholdCounter(FluidDataStoreContext.pendingOpsCountThreshold, this.mc.logger);
|
|
75
65
|
// Tombstone should only throw when the feature flag is enabled and the client isn't a summarizer
|
|
@@ -77,6 +67,9 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
77
67
|
this.mc.config.getBoolean(throwOnTombstoneUsageKey) === true &&
|
|
78
68
|
this._containerRuntime.gcTombstoneEnforcementAllowed &&
|
|
79
69
|
this.clientDetails.type !== summarizerClientType;
|
|
70
|
+
// By default, a data store can log maximum 10 local changes telemetry in summarizer.
|
|
71
|
+
this.localChangesTelemetryCount =
|
|
72
|
+
(_a = this.mc.config.getNumber("Fluid.Telemetry.LocalChangesTelemetryCount")) !== null && _a !== void 0 ? _a : 10;
|
|
80
73
|
}
|
|
81
74
|
get packagePath() {
|
|
82
75
|
assert(this.pkg !== undefined, 0x139 /* "Undefined package path" */);
|
|
@@ -175,9 +168,10 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
175
168
|
}
|
|
176
169
|
this._tombstoned = tombstone;
|
|
177
170
|
}
|
|
178
|
-
rejectDeferredRealize(reason,
|
|
171
|
+
rejectDeferredRealize(reason, failedPkgPath, fullPackageName) {
|
|
179
172
|
throw new LoggingError(reason, {
|
|
180
|
-
|
|
173
|
+
failedPkgPath: { value: failedPkgPath, tag: TelemetryDataTag.CodeArtifact },
|
|
174
|
+
fullPackageName: packagePathToTelemetryProperty(fullPackageName),
|
|
181
175
|
});
|
|
182
176
|
}
|
|
183
177
|
async realize() {
|
|
@@ -192,6 +186,7 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
192
186
|
value: this.id,
|
|
193
187
|
tag: TelemetryDataTag.CodeArtifact,
|
|
194
188
|
},
|
|
189
|
+
packageName: packagePathToTelemetryProperty(this.pkg),
|
|
195
190
|
});
|
|
196
191
|
(_a = this.channelDeferred) === null || _a === void 0 ? void 0 : _a.reject(errorWrapped);
|
|
197
192
|
this.logger.sendErrorEvent({ eventName: "RealizeError" }, errorWrapped);
|
|
@@ -209,18 +204,18 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
209
204
|
let lastPkg;
|
|
210
205
|
for (const pkg of packages) {
|
|
211
206
|
if (!registry) {
|
|
212
|
-
this.rejectDeferredRealize("No registry for package", lastPkg);
|
|
207
|
+
this.rejectDeferredRealize("No registry for package", lastPkg, packages);
|
|
213
208
|
}
|
|
214
209
|
lastPkg = pkg;
|
|
215
210
|
entry = await registry.get(pkg);
|
|
216
211
|
if (!entry) {
|
|
217
|
-
this.rejectDeferredRealize("Registry does not contain entry for the package", pkg);
|
|
212
|
+
this.rejectDeferredRealize("Registry does not contain entry for the package", pkg, packages);
|
|
218
213
|
}
|
|
219
214
|
registry = entry.IFluidDataStoreRegistry;
|
|
220
215
|
}
|
|
221
216
|
const factory = entry === null || entry === void 0 ? void 0 : entry.IFluidDataStoreFactory;
|
|
222
217
|
if (factory === undefined) {
|
|
223
|
-
this.rejectDeferredRealize("Can't find factory for package", lastPkg);
|
|
218
|
+
this.rejectDeferredRealize("Can't find factory for package", lastPkg, packages);
|
|
224
219
|
}
|
|
225
220
|
return { factory, registry };
|
|
226
221
|
}
|
|
@@ -409,6 +404,8 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
409
404
|
content,
|
|
410
405
|
type,
|
|
411
406
|
};
|
|
407
|
+
// Summarizer clients should not submit messages.
|
|
408
|
+
this.identifyLocalChangeInSummarizer("DataStoreMessageSubmittedInSummarizer", type);
|
|
412
409
|
this._containerRuntime.submitDataStoreOp(this.id, fluidDataStoreContent, localOpMetadata);
|
|
413
410
|
}
|
|
414
411
|
/**
|
|
@@ -441,6 +438,11 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
441
438
|
*/
|
|
442
439
|
makeLocallyVisible() {
|
|
443
440
|
assert(this.channel !== undefined, 0x2cf /* "undefined channel on datastore context" */);
|
|
441
|
+
assert(this.channel.visibilityState === VisibilityState.LocallyVisible, 0x590 /* Channel must be locally visible */);
|
|
442
|
+
this.makeLocallyVisibleFn();
|
|
443
|
+
}
|
|
444
|
+
/** @deprecated - To be replaced by calling makeLocallyVisible directly */
|
|
445
|
+
bindToContext() {
|
|
444
446
|
this.makeLocallyVisibleFn();
|
|
445
447
|
}
|
|
446
448
|
bindRuntime(channel) {
|
|
@@ -502,6 +504,12 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
502
504
|
setInMemoryRoot() {
|
|
503
505
|
this._isInMemoryRoot = true;
|
|
504
506
|
}
|
|
507
|
+
/**
|
|
508
|
+
* @deprecated - The functionality to get base GC details has been moved to summarizer node.
|
|
509
|
+
*/
|
|
510
|
+
async getBaseGCDetails() {
|
|
511
|
+
return {};
|
|
512
|
+
}
|
|
505
513
|
reSubmit(contents, localOpMetadata) {
|
|
506
514
|
assert(!!this.channel, 0x14b /* "Channel must exist when resubmitting ops" */);
|
|
507
515
|
const innerContents = contents;
|
|
@@ -552,10 +560,37 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
552
560
|
}
|
|
553
561
|
}
|
|
554
562
|
}
|
|
563
|
+
/**
|
|
564
|
+
* Summarizer client should not have local changes. These changes can become part of the summary and can break
|
|
565
|
+
* eventual consistency. For example, the next summary (say at ref seq# 100) may contain these changes whereas
|
|
566
|
+
* other clients that are up-to-date till seq# 100 may not have them yet.
|
|
567
|
+
*/
|
|
568
|
+
identifyLocalChangeInSummarizer(eventName, type) {
|
|
569
|
+
var _a, _b;
|
|
570
|
+
if (this.clientDetails.type !== summarizerClientType ||
|
|
571
|
+
this.localChangesTelemetryCount <= 0) {
|
|
572
|
+
return;
|
|
573
|
+
}
|
|
574
|
+
// Log a telemetry if there are local changes in the summarizer. This will give us data on how often
|
|
575
|
+
// this is happening and which data stores do this. The eventual goal is to disallow local changes
|
|
576
|
+
// in the summarizer and the data will help us plan this.
|
|
577
|
+
this.mc.logger.sendTelemetryEvent({
|
|
578
|
+
eventName,
|
|
579
|
+
type,
|
|
580
|
+
fluidDataStoreId: {
|
|
581
|
+
value: this.id,
|
|
582
|
+
tag: TelemetryDataTag.CodeArtifact,
|
|
583
|
+
},
|
|
584
|
+
packageName: packagePathToTelemetryProperty(this.pkg),
|
|
585
|
+
isSummaryInProgress: (_b = (_a = this.summarizerNode).isSummaryInProgress) === null || _b === void 0 ? void 0 : _b.call(_a),
|
|
586
|
+
stack: generateStack(),
|
|
587
|
+
});
|
|
588
|
+
this.localChangesTelemetryCount--;
|
|
589
|
+
}
|
|
555
590
|
getCreateChildSummarizerNodeFn(id, createParam) {
|
|
556
|
-
return (summarizeInternal, getGCDataFn
|
|
591
|
+
return (summarizeInternal, getGCDataFn) => this.summarizerNode.createChild(summarizeInternal, id, createParam,
|
|
557
592
|
// DDS will not create failure summaries
|
|
558
|
-
{ throwOnFailure: true }, getGCDataFn
|
|
593
|
+
{ throwOnFailure: true }, getGCDataFn);
|
|
559
594
|
}
|
|
560
595
|
async uploadBlob(blob) {
|
|
561
596
|
return this.containerRuntime.uploadBlob(blob);
|
|
@@ -564,7 +599,7 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
564
599
|
FluidDataStoreContext.pendingOpsCountThreshold = 1000;
|
|
565
600
|
export class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
566
601
|
constructor(props) {
|
|
567
|
-
super(props, true /* existing */,
|
|
602
|
+
super(props, true /* existing */, false /* isLocalDataStore */, () => {
|
|
568
603
|
throw new Error("Already attached");
|
|
569
604
|
});
|
|
570
605
|
this.initialSnapshotDetailsP = new LazyPromise(async () => {
|
|
@@ -607,10 +642,6 @@ export class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
|
607
642
|
};
|
|
608
643
|
});
|
|
609
644
|
this.initSnapshotValue = props.snapshotTree;
|
|
610
|
-
this.baseGCDetailsP = new LazyPromise(async () => {
|
|
611
|
-
var _a;
|
|
612
|
-
return (_a = (await props.getBaseGCDetails())) !== null && _a !== void 0 ? _a : {};
|
|
613
|
-
});
|
|
614
645
|
if (props.snapshotTree !== undefined) {
|
|
615
646
|
this.summarizerNode.updateBaseSummaryState(props.snapshotTree);
|
|
616
647
|
}
|
|
@@ -618,9 +649,6 @@ export class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
|
618
649
|
async getInitialSnapshotDetails() {
|
|
619
650
|
return this.initialSnapshotDetailsP;
|
|
620
651
|
}
|
|
621
|
-
async getBaseGCDetails() {
|
|
622
|
-
return this.baseGCDetailsP;
|
|
623
|
-
}
|
|
624
652
|
generateAttachMessage() {
|
|
625
653
|
throw new Error("Cannot attach remote store");
|
|
626
654
|
}
|
|
@@ -630,7 +658,9 @@ export class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
|
630
658
|
*/
|
|
631
659
|
export class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
632
660
|
constructor(props) {
|
|
633
|
-
super(props, props.snapshotTree !== undefined ? true : false /* existing */,
|
|
661
|
+
super(props, props.snapshotTree !== undefined ? true : false /* existing */, true /* isLocalDataStore */, props.makeLocallyVisibleFn);
|
|
662
|
+
// Summarizer client should not create local data stores.
|
|
663
|
+
this.identifyLocalChangeInSummarizer("DataStoreCreatedInSummarizer");
|
|
634
664
|
this.snapshotTree = props.snapshotTree;
|
|
635
665
|
if (props.isRootDataStore === true) {
|
|
636
666
|
this.setInMemoryRoot();
|
|
@@ -697,10 +727,6 @@ export class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
697
727
|
snapshot,
|
|
698
728
|
};
|
|
699
729
|
}
|
|
700
|
-
async getBaseGCDetails() {
|
|
701
|
-
// Local data store does not have initial summary.
|
|
702
|
-
return {};
|
|
703
|
-
}
|
|
704
730
|
/**
|
|
705
731
|
* A context should only be marked as deleted when its a remote context.
|
|
706
732
|
* Session Expiry at the runtime level should have closed the container creating the local data store context
|