@fluidframework/container-runtime 2.0.0-internal.3.1.0 → 2.0.0-internal.3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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":"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,EAEN,2BAA2B,EAC3B,8BAA8B,EAE9B,cAAc,EACd,sBAAsB,EACtB,sBAAsB,EACtB,8BAA8B,EAC9B,4BAA4B,EAC5B,uBAAuB,EACvB,sBAAsB,EACtB,6BAA6B,EAC7B,qBAAqB,EACrB,6BAA6B,EAE7B,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EAEjB,MAAM,qCAAqC,CAAC;AAM7C,OAAO,EAKN,iBAAiB,EAGjB,MAAM,iCAAiC,CAAC;AAiBzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AActD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,SAAS,MAAM,EAAE,EAAE,eAAe,EAAE,OAAO,GAAG,UAAU,CAGjG;AAED,UAAU,gBAAgB;IACzB,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,EAAE,aAAa,CAAC;CACzB;AAOD,gEAAgE;AAChE,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,sBAAsB,EAAE,2BAA2B,CAAC;IAC7D,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;CAClC;AAED,sEAAsE;AACtE,MAAM,WAAW,gCAAiC,SAAQ,2BAA2B;IACpF,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,YAAY,EAAE,aAAa,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,eAAe,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,oBAAoB,EAAE,MAAM,IAAI,CAAC;IAC1C;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;CAC3B;AAED,uEAAuE;AACvE,MAAM,WAAW,iCAAkC,SAAQ,2BAA2B;IACrF,QAAQ,CAAC,YAAY,EAAE,aAAa,GAAG,SAAS,CAAC;CACjD;AAED;;GAEG;AACH,8BAAsB,qBACrB,SAAQ,iBAAiB,CAAC,4BAA4B,CACtD,YAAW,sBAAsB,EAAE,WAAW;IAqI7C,OAAO,CAAC,QAAQ,CAAC,QAAQ;aACT,gBAAgB,EAAE,OAAO;IACzC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IArItC,IAAW,WAAW,IAAI,SAAS,MAAM,EAAE,CAG1C;IAED,IAAW,OAAO,IAAI,cAAc,CAEnC;IAED,IAAW,QAAQ,IAAI,MAAM,GAAG,SAAS,CAExC;IAED,IAAW,aAAa,IAAI,cAAc,CAEzC;IAED,IAAW,MAAM,IAAI,gBAAgB,CAEpC;IAED,IAAW,YAAY,IAAI,aAAa,CAAC,yBAAyB,EAAE,gBAAgB,CAAC,CAEpF;IAED,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED,IAAW,mBAAmB,kEAE7B;IAED,IAAW,gBAAgB,IAAI,iBAAiB,CAE/C;IAEM,wBAAwB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC;IAIxD,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAED,IAAW,YAAY,IAAI,aAAa,GAAG,SAAS,CAEnD;IAED,OAAO,CAAC,SAAS,CAAS;IAC1B,IAAW,QAAQ,YAElB;IAED;;;OAGG;IACH,OAAO,CAAC,WAAW,CAAS;IAC5B,IAAW,UAAU,YAEpB;IACD,mEAAmE;IACnE,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAU;IAEhD,2GAA2G;IAC3G,OAAO,CAAC,OAAO,CAAkB;IAEjC,IAAW,WAAW,IAAI,WAAW,CAEpC;IAED,IAAW,uBAAuB,IAAI,uBAAuB,GAAG,SAAS,CAExE;IAED;;;;;OAKG;IACU,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC;IAIvC;;;;;;OAMG;IACH,SAAS,CAAC,cAAc,IAAI,OAAO;IAInC,SAAS,CAAC,QAAQ,EAAE,uBAAuB,GAAG,SAAS,CAAC;IAExD,SAAS,CAAC,uBAAuB,UAAS;IAC1C,SAAS,CAAC,OAAO,EAAE,sBAAsB,GAAG,SAAS,CAAC;IACtD,OAAO,CAAC,MAAM,CAAS;IACvB,SAAS,CAAC,OAAO,EAAE,yBAAyB,EAAE,GAAG,SAAS,CAAM;IAChE,SAAS,CAAC,eAAe,EAAE,QAAQ,CAAC,sBAAsB,CAAC,GAAG,SAAS,CAAC;IACxE,OAAO,CAAC,aAAa,CAA4B;IACjD,SAAS,CAAC,YAAY,EAAE,WAAW,CAAC;IACpC,OAAO,CAAC,eAAe,CAAkB;IACzC,SAAS,CAAC,QAAQ,CAAC,cAAc,EAAE,qBAAqB,CAAC;IACzD,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,iBAAiB,CAAC;IACzC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAmB;IACvD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,wBAAwB,CAAQ;IAExD;;;;OAIG;IACH,OAAO,CAAC,0BAA0B,CAAS;IAI3C,OAAO,CAAC,cAAc,CAAuB;IAE7C,SAAgB,EAAE,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,SAAgB,OAAO,EAAE,uBAAuB,CAAC;IACjD,SAAgB,KAAK,EAAE,WAAW,CAAC;IACnC,SAAS,CAAC,GAAG,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;gBAGjC,KAAK,EAAE,2BAA2B,EACjB,QAAQ,EAAE,OAAO,EAClB,gBAAgB,EAAE,OAAO,EACxB,oBAAoB,EAAE,MAAM,IAAI;IAiD3C,OAAO,IAAI,IAAI;IAiBtB;;;;OAIG;IACI,MAAM;IAIN,YAAY,CAAC,SAAS,EAAE,OAAO;IAQtC,OAAO,CAAC,qBAAqB;IAWhB,OAAO,IAAI,OAAO,CAAC,sBAAsB,CAAC;cAuBvC,sBAAsB,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE;;;;YAiCrD,WAAW;IAqBzB;;;;;OAKG;IACI,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM;IAexD,OAAO,CACb,UAAU,EAAE,yBAAyB,EACrC,KAAK,EAAE,OAAO,EACd,eAAe,EAAE,OAAO,GACtB,IAAI;IAsBA,aAAa,CAAC,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAWnE,SAAS,IAAI,cAAc;IAI3B,WAAW,IAAI,SAAS;IAI/B;;;;;OAKG;IACU,SAAS,CACrB,QAAQ,GAAE,OAAe,EACzB,UAAU,GAAE,OAAc,EAC1B,gBAAgB,CAAC,EAAE,iBAAiB,GAClC,OAAO,CAAC,gBAAgB,CAAC;YAId,iBAAiB;IAsC/B;;;;;;;OAOG;IACU,SAAS,CAAC,MAAM,GAAE,OAAe,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAIhF;;;;OAIG;YACW,iBAAiB;IAU/B;;;;;;;;;;;;;;;OAeG;IACI,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE;IAkB5C;;;;;OAKG;IACI,wBAAwB,CAAC,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY;IAIrF;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IAmB/B;;OAEG;IACU,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;IAKpD,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO,GAAG,IAAI;IAchF;;;;;;;;OAQG;IACI,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAetC,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG;IAO9C;;;OAGG;IACI,kBAAkB;IASzB,2EAA2E;IACpE,aAAa;IAIpB,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,sBAAsB;IA0DxC,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;aAO7D,qBAAqB,IAAI,cAAc;aAEvC,yBAAyB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAEtE;;;;OAIG;IACI,eAAe,IAAI,IAAI;IAI9B;;OAEG;IACU,gBAAgB,IAAI,OAAO,CAAC,6BAA6B,CAAC;IAIhE,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO;IAMhD,QAAQ,CAAC,QAAQ,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO;IAW1C,cAAc,CAAC,QAAQ,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAS5D,OAAO,CAAC,eAAe;IA6CvB;;;;OAIG;IACH,SAAS,CAAC,+BAA+B,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM;IAyBnE,8BAA8B,CAAC,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,8BAA8B,uBAExE,mBAAmB,iDACH,QAAQ,sBAAsB,CAAC;IAYvD,UAAU,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,YAAY,CAAC,eAAe,CAAC,CAAC;CAGtF;AAED,qBAAa,2BAA4B,SAAQ,qBAAqB;IACrE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA4B;gBAElD,KAAK,EAAE,iCAAiC;IAYpD,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CA+CrC;IAEU,yBAAyB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAI5D,qBAAqB,IAAI,cAAc;CAG9C;AAED;;GAEG;AACH,qBAAa,8BAA+B,SAAQ,qBAAqB;IACxE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA4B;IACzD;;OAEG;IACH,SAAgB,WAAW,CAAC,EAAE,GAAG,CAAC;gBAEtB,KAAK,EAAE,gCAAgC;IAmBnD,OAAO,CAAC,eAAe;IAiBhB,qBAAqB,IAAI,cAAc;IA+BjC,yBAAyB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAmCnE;;;;;;OAMG;IACI,MAAM;CAcb;AAED;;;;;GAKG;AACH,qBAAa,0BAA2B,SAAQ,8BAA8B;gBACjE,KAAK,EAAE,gCAAgC;CAGnD;AAED;;;;;GAKG;AACH,qBAAa,kCACZ,SAAQ,8BACR,YAAW,8BAA8B;gBAE7B,KAAK,EAAE,gCAAgC;IAKtC,aAAa,CACzB,QAAQ,EAAE,6BAA6B,EACvC,gBAAgB,EAAE,sBAAsB;IAgC5B,yBAAyB,IAAI,OAAO,CAAC,gBAAgB,CAAC;CAQnE"}
|
package/dist/dataStoreContext.js
CHANGED
|
@@ -13,10 +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 garbageCollectionHelpers_1 = require("./garbageCollectionHelpers");
|
|
19
|
-
const summarizerClientElection_1 = require("./summarizerClientElection");
|
|
16
|
+
const summary_1 = require("./summary");
|
|
17
|
+
const gc_1 = require("./gc");
|
|
20
18
|
function createAttributes(pkg, isRootDataStore) {
|
|
21
19
|
const stringifiedPkg = JSON.stringify(pkg);
|
|
22
20
|
return {
|
|
@@ -27,18 +25,17 @@ function createAttributes(pkg, isRootDataStore) {
|
|
|
27
25
|
}
|
|
28
26
|
function createAttributesBlob(pkg, isRootDataStore) {
|
|
29
27
|
const attributes = createAttributes(pkg, isRootDataStore);
|
|
30
|
-
return new protocol_base_1.BlobTreeEntry(
|
|
28
|
+
return new protocol_base_1.BlobTreeEntry(summary_1.dataStoreAttributesBlobName, JSON.stringify(attributes));
|
|
31
29
|
}
|
|
32
30
|
exports.createAttributesBlob = createAttributesBlob;
|
|
33
31
|
/**
|
|
34
32
|
* Represents the context for the store. This context is passed to the store runtime.
|
|
35
33
|
*/
|
|
36
34
|
class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
37
|
-
constructor(props, existing,
|
|
38
|
-
|
|
35
|
+
constructor(props, existing, isLocalDataStore, makeLocallyVisibleFn) {
|
|
36
|
+
var _a;
|
|
39
37
|
super();
|
|
40
38
|
this.existing = existing;
|
|
41
|
-
this.bindState = bindState;
|
|
42
39
|
this.isLocalDataStore = isLocalDataStore;
|
|
43
40
|
this.makeLocallyVisibleFn = makeLocallyVisibleFn;
|
|
44
41
|
this._disposed = false;
|
|
@@ -65,22 +62,18 @@ class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
|
65
62
|
this.containerRuntime.attachState !== container_definitions_1.AttachState.Detached && this.existing
|
|
66
63
|
? this.containerRuntime.attachState
|
|
67
64
|
: container_definitions_1.AttachState.Detached;
|
|
68
|
-
this.bindToContext = () => {
|
|
69
|
-
(0, common_utils_1.assert)(this.bindState === runtime_definitions_1.BindState.NotBound, 0x13b /* "datastore context is already in bound state" */);
|
|
70
|
-
this.bindState = runtime_definitions_1.BindState.Binding;
|
|
71
|
-
(0, common_utils_1.assert)(this.channel !== undefined, 0x13c /* "undefined channel on datastore context" */);
|
|
72
|
-
this.makeLocallyVisible();
|
|
73
|
-
this.bindState = runtime_definitions_1.BindState.Bound;
|
|
74
|
-
};
|
|
75
65
|
const thisSummarizeInternal = async (fullTree, trackState, telemetryContext) => this.summarizeInternal(fullTree, trackState, telemetryContext);
|
|
76
|
-
this.summarizerNode = props.createSummarizerNodeFn(thisSummarizeInternal, async (fullGC) => this.getGCDataInternal(fullGC)
|
|
66
|
+
this.summarizerNode = props.createSummarizerNodeFn(thisSummarizeInternal, async (fullGC) => this.getGCDataInternal(fullGC));
|
|
77
67
|
this.mc = (0, telemetry_utils_1.loggerToMonitoringContext)(telemetry_utils_1.ChildLogger.create(this.logger, "FluidDataStoreContext"));
|
|
78
68
|
this.thresholdOpsCounter = new telemetry_utils_1.ThresholdCounter(FluidDataStoreContext.pendingOpsCountThreshold, this.mc.logger);
|
|
79
69
|
// Tombstone should only throw when the feature flag is enabled and the client isn't a summarizer
|
|
80
70
|
this.throwOnTombstoneUsage =
|
|
81
|
-
this.mc.config.getBoolean(
|
|
71
|
+
this.mc.config.getBoolean(gc_1.throwOnTombstoneUsageKey) === true &&
|
|
82
72
|
this._containerRuntime.gcTombstoneEnforcementAllowed &&
|
|
83
|
-
this.clientDetails.type !==
|
|
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;
|
|
84
77
|
}
|
|
85
78
|
get packagePath() {
|
|
86
79
|
(0, common_utils_1.assert)(this.pkg !== undefined, 0x139 /* "Undefined package path" */);
|
|
@@ -179,9 +172,10 @@ class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
|
179
172
|
}
|
|
180
173
|
this._tombstoned = tombstone;
|
|
181
174
|
}
|
|
182
|
-
rejectDeferredRealize(reason,
|
|
175
|
+
rejectDeferredRealize(reason, failedPkgPath, fullPackageName) {
|
|
183
176
|
throw new telemetry_utils_1.LoggingError(reason, {
|
|
184
|
-
|
|
177
|
+
failedPkgPath: { value: failedPkgPath, tag: telemetry_utils_1.TelemetryDataTag.CodeArtifact },
|
|
178
|
+
fullPackageName: (0, runtime_utils_1.packagePathToTelemetryProperty)(fullPackageName),
|
|
185
179
|
});
|
|
186
180
|
}
|
|
187
181
|
async realize() {
|
|
@@ -196,6 +190,7 @@ class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
|
196
190
|
value: this.id,
|
|
197
191
|
tag: telemetry_utils_1.TelemetryDataTag.CodeArtifact,
|
|
198
192
|
},
|
|
193
|
+
packageName: (0, runtime_utils_1.packagePathToTelemetryProperty)(this.pkg),
|
|
199
194
|
});
|
|
200
195
|
(_a = this.channelDeferred) === null || _a === void 0 ? void 0 : _a.reject(errorWrapped);
|
|
201
196
|
this.logger.sendErrorEvent({ eventName: "RealizeError" }, errorWrapped);
|
|
@@ -213,18 +208,18 @@ class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
|
213
208
|
let lastPkg;
|
|
214
209
|
for (const pkg of packages) {
|
|
215
210
|
if (!registry) {
|
|
216
|
-
this.rejectDeferredRealize("No registry for package", lastPkg);
|
|
211
|
+
this.rejectDeferredRealize("No registry for package", lastPkg, packages);
|
|
217
212
|
}
|
|
218
213
|
lastPkg = pkg;
|
|
219
214
|
entry = await registry.get(pkg);
|
|
220
215
|
if (!entry) {
|
|
221
|
-
this.rejectDeferredRealize("Registry does not contain entry for the package", pkg);
|
|
216
|
+
this.rejectDeferredRealize("Registry does not contain entry for the package", pkg, packages);
|
|
222
217
|
}
|
|
223
218
|
registry = entry.IFluidDataStoreRegistry;
|
|
224
219
|
}
|
|
225
220
|
const factory = entry === null || entry === void 0 ? void 0 : entry.IFluidDataStoreFactory;
|
|
226
221
|
if (factory === undefined) {
|
|
227
|
-
this.rejectDeferredRealize("Can't find factory for package", lastPkg);
|
|
222
|
+
this.rejectDeferredRealize("Can't find factory for package", lastPkg, packages);
|
|
228
223
|
}
|
|
229
224
|
return { factory, registry };
|
|
230
225
|
}
|
|
@@ -304,13 +299,13 @@ class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
|
304
299
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
305
300
|
const summarizeResult = await this.channel.summarize(fullTree, trackState, telemetryContext);
|
|
306
301
|
// Wrap dds summaries in .channels subtree.
|
|
307
|
-
(0,
|
|
302
|
+
(0, summary_1.wrapSummaryInChannelsTree)(summarizeResult);
|
|
308
303
|
const pathPartsForChildren = [runtime_definitions_1.channelsTreeName];
|
|
309
304
|
// Add data store's attributes to the summary.
|
|
310
305
|
const { pkg } = await this.getInitialSnapshotDetails();
|
|
311
306
|
const isRoot = await this.isRoot();
|
|
312
307
|
const attributes = createAttributes(pkg, isRoot);
|
|
313
|
-
(0, runtime_utils_1.addBlobToSummary)(summarizeResult,
|
|
308
|
+
(0, runtime_utils_1.addBlobToSummary)(summarizeResult, summary_1.dataStoreAttributesBlobName, JSON.stringify(attributes));
|
|
314
309
|
// If we are not referenced, mark the summary tree as unreferenced. Also, update unreferenced blob
|
|
315
310
|
// size in the summary stats with the blobs size of this data store.
|
|
316
311
|
if (!this.summarizerNode.isReferenced()) {
|
|
@@ -413,6 +408,8 @@ class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
|
413
408
|
content,
|
|
414
409
|
type,
|
|
415
410
|
};
|
|
411
|
+
// Summarizer clients should not submit messages.
|
|
412
|
+
this.identifyLocalChangeInSummarizer("DataStoreMessageSubmittedInSummarizer", type);
|
|
416
413
|
this._containerRuntime.submitDataStoreOp(this.id, fluidDataStoreContent, localOpMetadata);
|
|
417
414
|
}
|
|
418
415
|
/**
|
|
@@ -445,6 +442,11 @@ class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
|
445
442
|
*/
|
|
446
443
|
makeLocallyVisible() {
|
|
447
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() {
|
|
448
450
|
this.makeLocallyVisibleFn();
|
|
449
451
|
}
|
|
450
452
|
bindRuntime(channel) {
|
|
@@ -506,6 +508,12 @@ class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
|
506
508
|
setInMemoryRoot() {
|
|
507
509
|
this._isInMemoryRoot = true;
|
|
508
510
|
}
|
|
511
|
+
/**
|
|
512
|
+
* @deprecated - The functionality to get base GC details has been moved to summarizer node.
|
|
513
|
+
*/
|
|
514
|
+
async getBaseGCDetails() {
|
|
515
|
+
return {};
|
|
516
|
+
}
|
|
509
517
|
reSubmit(contents, localOpMetadata) {
|
|
510
518
|
(0, common_utils_1.assert)(!!this.channel, 0x14b /* "Channel must exist when resubmitting ops" */);
|
|
511
519
|
const innerContents = contents;
|
|
@@ -545,7 +553,7 @@ class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
|
545
553
|
if (checkTombstone && this.tombstoned) {
|
|
546
554
|
const messageString = `Context is tombstoned! Call site [${callSite}]`;
|
|
547
555
|
const error = new container_utils_1.DataCorruptionError(messageString, safeTelemetryProps);
|
|
548
|
-
(0,
|
|
556
|
+
(0, gc_1.sendGCUnexpectedUsageEvent)(this.mc, {
|
|
549
557
|
eventName: "GC_Tombstone_DataStore_Changed",
|
|
550
558
|
category: this.throwOnTombstoneUsage ? "error" : "generic",
|
|
551
559
|
gcTombstoneEnforcementAllowed: this._containerRuntime.gcTombstoneEnforcementAllowed,
|
|
@@ -556,10 +564,37 @@ class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
|
556
564
|
}
|
|
557
565
|
}
|
|
558
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
|
+
}
|
|
559
594
|
getCreateChildSummarizerNodeFn(id, createParam) {
|
|
560
|
-
return (summarizeInternal, getGCDataFn
|
|
595
|
+
return (summarizeInternal, getGCDataFn) => this.summarizerNode.createChild(summarizeInternal, id, createParam,
|
|
561
596
|
// DDS will not create failure summaries
|
|
562
|
-
{ throwOnFailure: true }, getGCDataFn
|
|
597
|
+
{ throwOnFailure: true }, getGCDataFn);
|
|
563
598
|
}
|
|
564
599
|
async uploadBlob(blob) {
|
|
565
600
|
return this.containerRuntime.uploadBlob(blob);
|
|
@@ -569,20 +604,20 @@ exports.FluidDataStoreContext = FluidDataStoreContext;
|
|
|
569
604
|
FluidDataStoreContext.pendingOpsCountThreshold = 1000;
|
|
570
605
|
class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
571
606
|
constructor(props) {
|
|
572
|
-
super(props, true /* existing */,
|
|
607
|
+
super(props, true /* existing */, false /* isLocalDataStore */, () => {
|
|
573
608
|
throw new Error("Already attached");
|
|
574
609
|
});
|
|
575
610
|
this.initialSnapshotDetailsP = new common_utils_1.LazyPromise(async () => {
|
|
576
611
|
var _a;
|
|
577
612
|
let tree = this.initSnapshotValue;
|
|
578
613
|
let isRootDataStore = true;
|
|
579
|
-
if (!!tree && tree.blobs[
|
|
614
|
+
if (!!tree && tree.blobs[summary_1.dataStoreAttributesBlobName] !== undefined) {
|
|
580
615
|
// Need to get through snapshot and use that to populate extraBlobs
|
|
581
|
-
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]);
|
|
582
617
|
let pkgFromSnapshot;
|
|
583
618
|
// Use the snapshotFormatVersion to determine how the pkg is encoded in the snapshot.
|
|
584
619
|
// For snapshotFormatVersion = "0.1" (1) or above, pkg is jsonified, otherwise it is just a string.
|
|
585
|
-
const formatVersion = (0,
|
|
620
|
+
const formatVersion = (0, summary_1.getAttributesFormatVersion)(attributes);
|
|
586
621
|
if (formatVersion < 1) {
|
|
587
622
|
pkgFromSnapshot =
|
|
588
623
|
attributes.pkg.startsWith('["') && attributes.pkg.endsWith('"]')
|
|
@@ -599,7 +634,7 @@ class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
|
599
634
|
* roots in the document but they won't break.
|
|
600
635
|
*/
|
|
601
636
|
isRootDataStore = (_a = attributes.isRootDataStore) !== null && _a !== void 0 ? _a : true;
|
|
602
|
-
if ((0,
|
|
637
|
+
if ((0, summary_1.hasIsolatedChannels)(attributes)) {
|
|
603
638
|
tree = tree.trees[runtime_definitions_1.channelsTreeName];
|
|
604
639
|
(0, common_utils_1.assert)(tree !== undefined, 0x1fe /* "isolated channels subtree should exist in remote datastore snapshot" */);
|
|
605
640
|
}
|
|
@@ -612,10 +647,6 @@ class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
|
612
647
|
};
|
|
613
648
|
});
|
|
614
649
|
this.initSnapshotValue = props.snapshotTree;
|
|
615
|
-
this.baseGCDetailsP = new common_utils_1.LazyPromise(async () => {
|
|
616
|
-
var _a;
|
|
617
|
-
return (_a = (await props.getBaseGCDetails())) !== null && _a !== void 0 ? _a : {};
|
|
618
|
-
});
|
|
619
650
|
if (props.snapshotTree !== undefined) {
|
|
620
651
|
this.summarizerNode.updateBaseSummaryState(props.snapshotTree);
|
|
621
652
|
}
|
|
@@ -623,9 +654,6 @@ class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
|
623
654
|
async getInitialSnapshotDetails() {
|
|
624
655
|
return this.initialSnapshotDetailsP;
|
|
625
656
|
}
|
|
626
|
-
async getBaseGCDetails() {
|
|
627
|
-
return this.baseGCDetailsP;
|
|
628
|
-
}
|
|
629
657
|
generateAttachMessage() {
|
|
630
658
|
throw new Error("Cannot attach remote store");
|
|
631
659
|
}
|
|
@@ -636,7 +664,9 @@ exports.RemoteFluidDataStoreContext = RemoteFluidDataStoreContext;
|
|
|
636
664
|
*/
|
|
637
665
|
class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
638
666
|
constructor(props) {
|
|
639
|
-
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");
|
|
640
670
|
this.snapshotTree = props.snapshotTree;
|
|
641
671
|
if (props.isRootDataStore === true) {
|
|
642
672
|
this.setInMemoryRoot();
|
|
@@ -659,10 +689,10 @@ class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
659
689
|
(0, common_utils_1.assert)(this.pkg !== undefined, 0x150 /* "pkg should be available in local data store context" */);
|
|
660
690
|
const summarizeResult = this.channel.getAttachSummary();
|
|
661
691
|
// Wrap dds summaries in .channels subtree.
|
|
662
|
-
(0,
|
|
692
|
+
(0, summary_1.wrapSummaryInChannelsTree)(summarizeResult);
|
|
663
693
|
// Add data store's attributes to the summary.
|
|
664
694
|
const attributes = createAttributes(this.pkg, this.isInMemoryRoot());
|
|
665
|
-
(0, runtime_utils_1.addBlobToSummary)(summarizeResult,
|
|
695
|
+
(0, runtime_utils_1.addBlobToSummary)(summarizeResult, summary_1.dataStoreAttributesBlobName, JSON.stringify(attributes));
|
|
666
696
|
// Attach message needs the summary in ITree format. Convert the ISummaryTree into an ITree.
|
|
667
697
|
const snapshot = (0, runtime_utils_1.convertSummaryTreeToITree)(summarizeResult.summary);
|
|
668
698
|
const message = {
|
|
@@ -680,8 +710,8 @@ class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
680
710
|
if (snapshot !== undefined) {
|
|
681
711
|
// Get the dataStore attributes.
|
|
682
712
|
// Note: storage can be undefined in special case while detached.
|
|
683
|
-
attributes = await (0,
|
|
684
|
-
if ((0,
|
|
713
|
+
attributes = await (0, summary_1.getFluidDataStoreAttributes)(this.storage, snapshot);
|
|
714
|
+
if ((0, summary_1.hasIsolatedChannels)(attributes)) {
|
|
685
715
|
snapshot = snapshot.trees[runtime_definitions_1.channelsTreeName];
|
|
686
716
|
(0, common_utils_1.assert)(snapshot !== undefined, 0x1ff /* "isolated channels subtree should exist in local datastore snapshot" */);
|
|
687
717
|
}
|
|
@@ -703,10 +733,6 @@ class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
703
733
|
snapshot,
|
|
704
734
|
};
|
|
705
735
|
}
|
|
706
|
-
async getBaseGCDetails() {
|
|
707
|
-
// Local data store does not have initial summary.
|
|
708
|
-
return {};
|
|
709
|
-
}
|
|
710
736
|
/**
|
|
711
737
|
* A context should only be marked as deleted when its a remote context.
|
|
712
738
|
* Session Expiry at the runtime level should have closed the container creating the local data store context
|
|
@@ -716,7 +742,7 @@ class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
716
742
|
*/
|
|
717
743
|
delete() {
|
|
718
744
|
// TODO: GC:Validation - potentially prevent this from happening or asserting. Maybe throw here.
|
|
719
|
-
(0,
|
|
745
|
+
(0, gc_1.sendGCUnexpectedUsageEvent)(this.mc, {
|
|
720
746
|
eventName: "GC_Deleted_DataStore_Unexpected_Delete",
|
|
721
747
|
message: "Unexpected deletion of a local data store context",
|
|
722
748
|
category: "error",
|