@fluidframework/container-runtime 2.118.0 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +68 -4
- package/README.md +53 -50
- package/{api-extractor.json → api-extractor/api-extractor-model.json} +1 -1
- package/api-report/container-runtime.legacy.alpha.api.md +3 -1
- package/api-report/container-runtime.legacy.beta.api.md +3 -1
- package/container-runtime.test-files.tar +0 -0
- package/dist/batchTracker.d.ts.map +1 -1
- package/dist/batchTracker.js +5 -1
- package/dist/batchTracker.js.map +1 -1
- package/dist/blobManager/blobManager.d.ts +1 -1
- package/dist/blobManager/blobManager.d.ts.map +1 -1
- package/dist/blobManager/blobManager.js +264 -231
- package/dist/blobManager/blobManager.js.map +1 -1
- package/dist/blobManager/blobManagerSnapSum.d.ts.map +1 -1
- package/dist/channelCollection.d.ts.map +1 -1
- package/dist/channelCollection.js +70 -58
- package/dist/channelCollection.js.map +1 -1
- package/dist/connectionTelemetry.js +38 -20
- package/dist/connectionTelemetry.js.map +1 -1
- package/dist/containerCompatibility.d.ts +3 -3
- package/dist/containerCompatibility.d.ts.map +1 -1
- package/dist/containerCompatibility.js +36 -45
- package/dist/containerCompatibility.js.map +1 -1
- package/dist/containerHandleContext.d.ts.map +1 -1
- package/dist/containerHandleContext.js +4 -0
- package/dist/containerHandleContext.js.map +1 -1
- package/dist/containerRuntime.d.ts +4 -4
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +346 -223
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStore.d.ts.map +1 -1
- package/dist/dataStore.js +9 -1
- package/dist/dataStore.js.map +1 -1
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +184 -127
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStoreContexts.js +43 -42
- package/dist/dataStoreContexts.js.map +1 -1
- package/dist/dataStoreRegistry.js +1 -0
- package/dist/dataStoreRegistry.js.map +1 -1
- package/dist/deltaManagerProxies.js +5 -0
- package/dist/deltaManagerProxies.js.map +1 -1
- package/dist/deltaScheduler.js +104 -99
- package/dist/deltaScheduler.js.map +1 -1
- package/dist/error.js +2 -1
- package/dist/error.js.map +1 -1
- package/dist/gc/garbageCollection.js +85 -55
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcConfigs.js +2 -3
- package/dist/gc/gcConfigs.js.map +1 -1
- package/dist/gc/gcHelpers.js +12 -13
- package/dist/gc/gcHelpers.js.map +1 -1
- package/dist/gc/gcReferenceGraphAlgorithm.js +1 -2
- package/dist/gc/gcReferenceGraphAlgorithm.js.map +1 -1
- package/dist/gc/gcSummaryStateTracker.js +8 -3
- package/dist/gc/gcSummaryStateTracker.js.map +1 -1
- package/dist/gc/gcTelemetry.js +12 -5
- package/dist/gc/gcTelemetry.js.map +1 -1
- package/dist/gc/gcUnreferencedStateTracker.js +18 -1
- package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
- package/dist/inboundBatchAggregator.js +122 -117
- package/dist/inboundBatchAggregator.js.map +1 -1
- package/dist/metadata.d.ts.map +1 -1
- package/dist/metadata.js +3 -3
- package/dist/metadata.js.map +1 -1
- package/dist/opLifecycle/batchManager.d.ts.map +1 -1
- package/dist/opLifecycle/batchManager.js +11 -5
- package/dist/opLifecycle/batchManager.js.map +1 -1
- package/dist/opLifecycle/duplicateBatchDetector.js +18 -18
- package/dist/opLifecycle/duplicateBatchDetector.js.map +1 -1
- package/dist/opLifecycle/index.d.ts +2 -2
- package/dist/opLifecycle/index.d.ts.map +1 -1
- package/dist/opLifecycle/index.js +2 -1
- package/dist/opLifecycle/index.js.map +1 -1
- package/dist/opLifecycle/opCompressor.js +2 -1
- package/dist/opLifecycle/opCompressor.js.map +1 -1
- package/dist/opLifecycle/opDecompressor.js +10 -6
- package/dist/opLifecycle/opDecompressor.js.map +1 -1
- package/dist/opLifecycle/opGroupingManager.js +5 -3
- package/dist/opLifecycle/opGroupingManager.js.map +1 -1
- package/dist/opLifecycle/opSerialization.d.ts +11 -1
- package/dist/opLifecycle/opSerialization.d.ts.map +1 -1
- package/dist/opLifecycle/opSerialization.js +22 -6
- package/dist/opLifecycle/opSerialization.js.map +1 -1
- package/dist/opLifecycle/opSplitter.d.ts +17 -1
- package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
- package/dist/opLifecycle/opSplitter.js +46 -9
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +17 -13
- package/dist/opLifecycle/outbox.js.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.js +6 -3
- package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/dist/opProperties.d.ts.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/pendingStateManager.js +54 -47
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/runCounter.js +10 -30
- package/dist/runCounter.js.map +1 -1
- package/dist/runtimeLayerCompatState.d.ts +1 -1
- package/dist/runtimeLayerCompatState.d.ts.map +1 -1
- package/dist/runtimeLayerCompatState.js +31 -11
- package/dist/runtimeLayerCompatState.js.map +1 -1
- package/dist/signalTelemetryProcessing.js +15 -17
- package/dist/signalTelemetryProcessing.js.map +1 -1
- package/dist/storageServiceWithAttachBlobs.js +2 -0
- package/dist/storageServiceWithAttachBlobs.js.map +1 -1
- package/dist/summary/documentSchema.d.ts.map +1 -1
- package/dist/summary/documentSchema.js +51 -13
- package/dist/summary/documentSchema.js.map +1 -1
- package/dist/summary/orderedClientElection.js +25 -17
- package/dist/summary/orderedClientElection.js.map +1 -1
- package/dist/summary/summarizerClientElection.d.ts.map +1 -1
- package/dist/summary/summarizerClientElection.js +18 -7
- package/dist/summary/summarizerClientElection.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.js +22 -13
- package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js +20 -6
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/dist/summary/summarizerUtils.d.ts.map +1 -1
- package/dist/summary/summarizerUtils.js +4 -3
- package/dist/summary/summarizerUtils.js.map +1 -1
- package/dist/summary/summaryCollection.js +23 -11
- package/dist/summary/summaryCollection.js.map +1 -1
- package/dist/summary/summaryDelayLoadedModule/runWhileConnectedCoordinator.js +4 -2
- package/dist/summary/summaryDelayLoadedModule/runWhileConnectedCoordinator.js.map +1 -1
- package/dist/summary/summaryDelayLoadedModule/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/summaryDelayLoadedModule/runningSummarizer.js +65 -46
- package/dist/summary/summaryDelayLoadedModule/runningSummarizer.js.map +1 -1
- package/dist/summary/summaryDelayLoadedModule/summarizer.d.ts.map +1 -1
- package/dist/summary/summaryDelayLoadedModule/summarizer.js +15 -6
- package/dist/summary/summaryDelayLoadedModule/summarizer.js.map +1 -1
- package/dist/summary/summaryDelayLoadedModule/summarizerHeuristics.js +30 -25
- package/dist/summary/summaryDelayLoadedModule/summarizerHeuristics.js.map +1 -1
- package/dist/summary/summaryDelayLoadedModule/summaryGenerator.js +9 -0
- package/dist/summary/summaryDelayLoadedModule/summaryGenerator.js.map +1 -1
- package/dist/summary/summaryDelayLoadedModule/summaryResultBuilder.js +3 -5
- package/dist/summary/summaryDelayLoadedModule/summaryResultBuilder.js.map +1 -1
- package/dist/summary/summaryFormat.d.ts.map +1 -1
- package/dist/summary/summaryFormat.js +7 -7
- package/dist/summary/summaryFormat.js.map +1 -1
- package/dist/summary/summaryHelpers.js +5 -5
- package/dist/summary/summaryHelpers.js.map +1 -1
- package/dist/summary/summaryManager.js +66 -54
- package/dist/summary/summaryManager.js.map +1 -1
- package/dist/throttler.d.ts.map +1 -1
- package/dist/throttler.js +4 -1
- package/dist/throttler.js.map +1 -1
- package/dist/versionMarks/inboundBatch.d.ts +8 -6
- package/dist/versionMarks/inboundBatch.d.ts.map +1 -1
- package/dist/versionMarks/inboundBatch.js +11 -7
- package/dist/versionMarks/inboundBatch.js.map +1 -1
- package/dist/versionMarks/versionMarkResolver.d.ts +30 -23
- package/dist/versionMarks/versionMarkResolver.d.ts.map +1 -1
- package/dist/versionMarks/versionMarkResolver.js +112 -63
- package/dist/versionMarks/versionMarkResolver.js.map +1 -1
- package/lib/batchTracker.d.ts.map +1 -1
- package/lib/batchTracker.js +5 -1
- package/lib/batchTracker.js.map +1 -1
- package/lib/blobManager/blobManager.d.ts +1 -1
- package/lib/blobManager/blobManager.d.ts.map +1 -1
- package/lib/blobManager/blobManager.js +264 -231
- package/lib/blobManager/blobManager.js.map +1 -1
- package/lib/blobManager/blobManagerSnapSum.d.ts.map +1 -1
- package/lib/channelCollection.d.ts.map +1 -1
- package/lib/channelCollection.js +65 -53
- package/lib/channelCollection.js.map +1 -1
- package/lib/connectionTelemetry.js +36 -18
- package/lib/connectionTelemetry.js.map +1 -1
- package/lib/containerCompatibility.d.ts +3 -3
- package/lib/containerCompatibility.d.ts.map +1 -1
- package/lib/containerCompatibility.js +33 -42
- package/lib/containerCompatibility.js.map +1 -1
- package/lib/containerHandleContext.d.ts.map +1 -1
- package/lib/containerHandleContext.js +4 -0
- package/lib/containerHandleContext.js.map +1 -1
- package/lib/containerRuntime.d.ts +4 -4
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +341 -218
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStore.d.ts.map +1 -1
- package/lib/dataStore.js +9 -1
- package/lib/dataStore.js.map +1 -1
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +182 -125
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/dataStoreContexts.js +43 -42
- package/lib/dataStoreContexts.js.map +1 -1
- package/lib/dataStoreRegistry.js +1 -0
- package/lib/dataStoreRegistry.js.map +1 -1
- package/lib/deltaManagerProxies.js +5 -0
- package/lib/deltaManagerProxies.js.map +1 -1
- package/lib/deltaScheduler.js +104 -99
- package/lib/deltaScheduler.js.map +1 -1
- package/lib/error.js +2 -1
- package/lib/error.js.map +1 -1
- package/lib/gc/garbageCollection.js +85 -55
- package/lib/gc/garbageCollection.js.map +1 -1
- package/lib/gc/gcSummaryStateTracker.js +8 -3
- package/lib/gc/gcSummaryStateTracker.js.map +1 -1
- package/lib/gc/gcTelemetry.js +12 -5
- package/lib/gc/gcTelemetry.js.map +1 -1
- package/lib/gc/gcUnreferencedStateTracker.js +18 -1
- package/lib/gc/gcUnreferencedStateTracker.js.map +1 -1
- package/lib/inboundBatchAggregator.js +122 -117
- package/lib/inboundBatchAggregator.js.map +1 -1
- package/lib/legacy.d.ts +1 -1
- package/lib/legacyAlpha.d.ts +1 -1
- package/lib/metadata.d.ts.map +1 -1
- package/lib/opLifecycle/batchManager.d.ts.map +1 -1
- package/lib/opLifecycle/batchManager.js +8 -2
- package/lib/opLifecycle/batchManager.js.map +1 -1
- package/lib/opLifecycle/duplicateBatchDetector.js +18 -18
- package/lib/opLifecycle/duplicateBatchDetector.js.map +1 -1
- package/lib/opLifecycle/index.d.ts +2 -2
- package/lib/opLifecycle/index.d.ts.map +1 -1
- package/lib/opLifecycle/index.js +2 -2
- package/lib/opLifecycle/index.js.map +1 -1
- package/lib/opLifecycle/opCompressor.js +3 -2
- package/lib/opLifecycle/opCompressor.js.map +1 -1
- package/lib/opLifecycle/opDecompressor.js +10 -6
- package/lib/opLifecycle/opDecompressor.js.map +1 -1
- package/lib/opLifecycle/opGroupingManager.js +3 -1
- package/lib/opLifecycle/opGroupingManager.js.map +1 -1
- package/lib/opLifecycle/opSerialization.d.ts +11 -1
- package/lib/opLifecycle/opSerialization.d.ts.map +1 -1
- package/lib/opLifecycle/opSerialization.js +16 -0
- package/lib/opLifecycle/opSerialization.js.map +1 -1
- package/lib/opLifecycle/opSplitter.d.ts +17 -1
- package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
- package/lib/opLifecycle/opSplitter.js +44 -7
- package/lib/opLifecycle/opSplitter.js.map +1 -1
- package/lib/opLifecycle/outbox.d.ts.map +1 -1
- package/lib/opLifecycle/outbox.js +14 -10
- package/lib/opLifecycle/outbox.js.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.js +4 -1
- package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/lib/opProperties.d.ts.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/pendingStateManager.js +52 -45
- package/lib/pendingStateManager.js.map +1 -1
- package/lib/public.d.ts +1 -1
- package/lib/runCounter.js +10 -30
- package/lib/runCounter.js.map +1 -1
- package/lib/runtimeLayerCompatState.d.ts +1 -1
- package/lib/runtimeLayerCompatState.d.ts.map +1 -1
- package/lib/runtimeLayerCompatState.js +28 -8
- package/lib/runtimeLayerCompatState.js.map +1 -1
- package/lib/signalTelemetryProcessing.js +15 -17
- package/lib/signalTelemetryProcessing.js.map +1 -1
- package/lib/storageServiceWithAttachBlobs.js +2 -0
- package/lib/storageServiceWithAttachBlobs.js.map +1 -1
- package/lib/summary/documentSchema.d.ts.map +1 -1
- package/lib/summary/documentSchema.js +51 -13
- package/lib/summary/documentSchema.js.map +1 -1
- package/lib/summary/orderedClientElection.js +25 -17
- package/lib/summary/orderedClientElection.js.map +1 -1
- package/lib/summary/summarizerClientElection.d.ts.map +1 -1
- package/lib/summary/summarizerClientElection.js +18 -7
- package/lib/summary/summarizerClientElection.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.js +22 -13
- package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js +20 -6
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/lib/summary/summarizerUtils.d.ts.map +1 -1
- package/lib/summary/summarizerUtils.js +1 -0
- package/lib/summary/summarizerUtils.js.map +1 -1
- package/lib/summary/summaryCollection.js +23 -11
- package/lib/summary/summaryCollection.js.map +1 -1
- package/lib/summary/summaryDelayLoadedModule/runWhileConnectedCoordinator.js +4 -2
- package/lib/summary/summaryDelayLoadedModule/runWhileConnectedCoordinator.js.map +1 -1
- package/lib/summary/summaryDelayLoadedModule/runningSummarizer.d.ts.map +1 -1
- package/lib/summary/summaryDelayLoadedModule/runningSummarizer.js +65 -46
- package/lib/summary/summaryDelayLoadedModule/runningSummarizer.js.map +1 -1
- package/lib/summary/summaryDelayLoadedModule/summarizer.d.ts.map +1 -1
- package/lib/summary/summaryDelayLoadedModule/summarizer.js +15 -6
- package/lib/summary/summaryDelayLoadedModule/summarizer.js.map +1 -1
- package/lib/summary/summaryDelayLoadedModule/summarizerHeuristics.js +30 -25
- package/lib/summary/summaryDelayLoadedModule/summarizerHeuristics.js.map +1 -1
- package/lib/summary/summaryDelayLoadedModule/summaryGenerator.js +9 -0
- package/lib/summary/summaryDelayLoadedModule/summaryGenerator.js.map +1 -1
- package/lib/summary/summaryDelayLoadedModule/summaryResultBuilder.js +3 -5
- package/lib/summary/summaryDelayLoadedModule/summaryResultBuilder.js.map +1 -1
- package/lib/summary/summaryFormat.d.ts.map +1 -1
- package/lib/summary/summaryManager.js +66 -54
- package/lib/summary/summaryManager.js.map +1 -1
- package/lib/throttler.d.ts.map +1 -1
- package/lib/throttler.js +4 -1
- package/lib/throttler.js.map +1 -1
- package/lib/versionMarks/inboundBatch.d.ts +8 -6
- package/lib/versionMarks/inboundBatch.d.ts.map +1 -1
- package/lib/versionMarks/inboundBatch.js +10 -5
- package/lib/versionMarks/inboundBatch.js.map +1 -1
- package/lib/versionMarks/versionMarkResolver.d.ts +30 -23
- package/lib/versionMarks/versionMarkResolver.d.ts.map +1 -1
- package/lib/versionMarks/versionMarkResolver.js +112 -63
- package/lib/versionMarks/versionMarkResolver.js.map +1 -1
- package/package.json +60 -102
- package/src/containerCompatibility.ts +33 -42
- package/src/containerRuntime.ts +15 -12
- package/src/opLifecycle/index.ts +7 -1
- package/src/opLifecycle/opCompressor.ts +2 -2
- package/src/opLifecycle/opSerialization.ts +22 -1
- package/src/opLifecycle/opSplitter.ts +63 -6
- package/src/packageVersion.ts +1 -1
- package/src/runtimeLayerCompatState.ts +28 -21
- package/src/summary/documentSchema.ts +31 -6
- package/src/versionMarks/DEV.md +595 -157
- package/src/versionMarks/inboundBatch.ts +18 -8
- package/src/versionMarks/versionMarkResolver.ts +144 -75
- package/tsconfig.json +1 -1
- package/internal.d.ts +0 -11
- package/legacy/alpha.d.ts +0 -11
- package/legacy.d.ts +0 -11
- /package/api-extractor/{api-extractor.current.json → api-extractor-report.current.json} +0 -0
- /package/api-extractor/{api-extractor.legacy.json → api-extractor-report.legacy.json} +0 -0
package/lib/dataStore.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataStore.d.ts","sourceRoot":"","sources":["../src/dataStore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAEX,UAAU,EACV,sBAAsB,EACtB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAEN,KAAK,kBAAkB,EAEvB,MAAM,0CAA0C,CAAC;AAElD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAGhE;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACtC;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB
|
|
1
|
+
{"version":3,"file":"dataStore.d.ts","sourceRoot":"","sources":["../src/dataStore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAEX,UAAU,EACV,sBAAsB,EACtB,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAEN,KAAK,kBAAkB,EAEvB,MAAM,0CAA0C,CAAC;AAElD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAGhE;;;;;GAKG;AACH,MAAM,WAAW,sBAAsB;IACtC;;OAEG;IACH,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,GACnC,4BAA4B,OAAO,KACjC,0BAA0B,IAAI,sBAMhC,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAC9B,uBAAuB,sBAAsB,EAC7C,YAAY,MAAM,EAClB,mBAAmB,iBAAiB,EACpC,QAAQ,kBAAkB,KACxB,UAAyF,CAAC"}
|
package/lib/dataStore.js
CHANGED
|
@@ -25,6 +25,15 @@ var AliasState;
|
|
|
25
25
|
AliasState["None"] = "None";
|
|
26
26
|
})(AliasState || (AliasState = {}));
|
|
27
27
|
class DataStore {
|
|
28
|
+
fluidDataStoreChannel;
|
|
29
|
+
internalId;
|
|
30
|
+
channelCollection;
|
|
31
|
+
logger;
|
|
32
|
+
parentContext;
|
|
33
|
+
aliasState = AliasState.None;
|
|
34
|
+
alias;
|
|
35
|
+
pendingAliases;
|
|
36
|
+
aliasResult;
|
|
28
37
|
/**
|
|
29
38
|
* {@inheritDoc @fluidframework/runtime-definitions#IDataStore.trySetAlias}
|
|
30
39
|
*/
|
|
@@ -122,7 +131,6 @@ class DataStore {
|
|
|
122
131
|
this.channelCollection = channelCollection;
|
|
123
132
|
this.logger = logger;
|
|
124
133
|
this.parentContext = parentContext;
|
|
125
|
-
this.aliasState = AliasState.None;
|
|
126
134
|
this.pendingAliases = channelCollection.pendingAliases;
|
|
127
135
|
}
|
|
128
136
|
async ackBasedPromise(executor) {
|
package/lib/dataStore.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataStore.js","sourceRoot":"","sources":["../src/dataStore.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AttachState } from \"@fluidframework/container-definitions\";\nimport type { FluidObject } from \"@fluidframework/core-interfaces\";\nimport type { IFluidHandleInternal } from \"@fluidframework/core-interfaces/internal\";\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport type {\n\tAliasResult,\n\tIDataStore,\n\tIFluidDataStoreChannel,\n} from \"@fluidframework/runtime-definitions/internal\";\nimport {\n\tTelemetryDataTag,\n\ttype TelemetryLoggerExt,\n\tUsageError,\n} from \"@fluidframework/telemetry-utils/internal\";\n\nimport type { ChannelCollection } from \"./channelCollection.js\";\nimport { ContainerMessageType } from \"./messageTypes.js\";\n\n/**\n * Interface for an op to be used for assigning an\n * alias to a datastore\n * @internal\n * @privateRemarks exported per ContainerRuntime export for testing purposes\n */\nexport interface IDataStoreAliasMessage {\n\t/**\n\t * The internal id of the datastore\n\t */\n\treadonly internalId: string;\n\t/**\n\t * The alias name to be assigned to the datastore\n\t */\n\treadonly alias: string;\n}\n\n/**\n * Type guard that returns true if the given alias message is actually an instance of\n * a class which implements {@link IDataStoreAliasMessage}\n * @param maybeDataStoreAliasMessage - message object to be validated\n * @returns True if the {@link IDataStoreAliasMessage} is fully implemented, false otherwise\n */\nexport const isDataStoreAliasMessage = (\n\tmaybeDataStoreAliasMessage: unknown,\n): maybeDataStoreAliasMessage is IDataStoreAliasMessage => {\n\treturn (\n\t\ttypeof (maybeDataStoreAliasMessage as Partial<IDataStoreAliasMessage>)?.internalId ===\n\t\t\t\"string\" &&\n\t\ttypeof (maybeDataStoreAliasMessage as Partial<IDataStoreAliasMessage>)?.alias === \"string\"\n\t);\n};\n\nexport const channelToDataStore = (\n\tfluidDataStoreChannel: IFluidDataStoreChannel,\n\tinternalId: string,\n\tchannelCollection: ChannelCollection,\n\tlogger: TelemetryLoggerExt,\n): IDataStore => new DataStore(fluidDataStoreChannel, internalId, channelCollection, logger);\n\nenum AliasState {\n\tAliased = \"Aliased\",\n\tAliasing = \"Aliasing\",\n\tNone = \"None\",\n}\n\nclass DataStore implements IDataStore {\n\tprivate aliasState: AliasState = AliasState.None;\n\tprivate alias: string | undefined;\n\tprivate readonly pendingAliases: Map<string, Promise<AliasResult>>;\n\tprivate aliasResult: Promise<AliasResult> | undefined;\n\n\t/**\n\t * {@inheritDoc @fluidframework/runtime-definitions#IDataStore.trySetAlias}\n\t */\n\tasync trySetAlias(alias: string): Promise<AliasResult> {\n\t\tif (alias.includes(\"/\")) {\n\t\t\tthrow new UsageError(`The alias cannot contain slashes: '${alias}'`);\n\t\t}\n\t\tif (this.parentContext.containerRuntime.inStagingMode === true) {\n\t\t\tthrow new UsageError(\"Cannot set aliases while in staging mode\");\n\t\t}\n\n\t\tswitch (this.aliasState) {\n\t\t\t// If we're already aliasing, check if it's for the same value and return\n\t\t\t// the stored promise, otherwise return 'AlreadyAliased'\n\t\t\tcase AliasState.Aliasing: {\n\t\t\t\tassert(\n\t\t\t\t\tthis.aliasResult !== undefined,\n\t\t\t\t\t0x316 /* There should be a cached promise of in-progress aliasing */,\n\t\t\t\t);\n\t\t\t\tawait this.aliasResult;\n\t\t\t\treturn this.alias === alias ? \"Success\" : \"AlreadyAliased\";\n\t\t\t}\n\n\t\t\t// If this datastore is already aliased, return true only if this\n\t\t\t// is a repeated call for the same alias\n\t\t\tcase AliasState.Aliased: {\n\t\t\t\treturn this.alias === alias ? \"Success\" : \"AlreadyAliased\";\n\t\t\t}\n\n\t\t\tcase AliasState.None: {\n\t\t\t\tconst existingAlias = this.pendingAliases.get(alias);\n\t\t\t\tif (existingAlias !== undefined) {\n\t\t\t\t\t// There is already another datastore which will be aliased\n\t\t\t\t\t// to the same name\n\t\t\t\t\treturn \"Conflict\";\n\t\t\t\t}\n\n\t\t\t\t// There is no current or past alias operation for this datastore,\n\t\t\t\t// or for this alias, so it is safe to continue execution\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tdefault: {\n\t\t\t\tunreachableCase(this.aliasState);\n\t\t\t}\n\t\t}\n\n\t\tthis.aliasState = AliasState.Aliasing;\n\t\tthis.aliasResult = this.trySetAliasInternal(alias);\n\t\tthis.pendingAliases.set(alias, this.aliasResult);\n\t\treturn this.aliasResult;\n\t}\n\n\tasync trySetAliasInternal(alias: string): Promise<AliasResult> {\n\t\tconst message: IDataStoreAliasMessage = {\n\t\t\tinternalId: this.internalId,\n\t\t\talias,\n\t\t};\n\t\tthis.fluidDataStoreChannel.makeVisibleAndAttachGraph();\n\n\t\tif (this.parentContext.attachState === AttachState.Detached) {\n\t\t\tconst localResult = this.channelCollection.processAliasMessageCore(\n\t\t\t\tthis.internalId,\n\t\t\t\talias,\n\t\t\t);\n\t\t\t// Explicitly lock-out future attempts of aliasing,\n\t\t\t// regardless of result\n\t\t\tthis.aliasState = AliasState.Aliased;\n\t\t\treturn localResult ? \"Success\" : \"Conflict\";\n\t\t}\n\n\t\tconst aliased = await this.ackBasedPromise<boolean>((resolve) => {\n\t\t\tthis.parentContext.submitMessage(\n\t\t\t\t{ type: ContainerMessageType.Alias, contents: message },\n\t\t\t\tresolve,\n\t\t\t);\n\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tthis.logger.sendErrorEvent(\n\t\t\t\t\t{\n\t\t\t\t\t\teventName: \"AliasingException\",\n\t\t\t\t\t\talias: {\n\t\t\t\t\t\t\tvalue: alias,\n\t\t\t\t\t\t\ttag: TelemetryDataTag.UserData,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tinternalId: {\n\t\t\t\t\t\t\tvalue: this.internalId,\n\t\t\t\t\t\t\ttag: TelemetryDataTag.CodeArtifact,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\terror,\n\t\t\t\t);\n\n\t\t\t\treturn false;\n\t\t\t})\n\t\t\t.finally(() => {\n\t\t\t\tthis.pendingAliases.delete(alias);\n\t\t\t});\n\n\t\tif (!aliased) {\n\t\t\tthis.aliasState = AliasState.None;\n\t\t\tthis.aliasResult = undefined;\n\t\t\treturn \"Conflict\";\n\t\t}\n\n\t\tthis.alias = alias;\n\t\tthis.aliasState = AliasState.Aliased;\n\t\treturn \"Success\";\n\t}\n\n\t/**\n\t * {@inheritDoc @fluidframework/runtime-definitions#IDataStore.entryPoint}\n\t */\n\tget entryPoint(): IFluidHandleInternal<FluidObject> {\n\t\treturn this.fluidDataStoreChannel.entryPoint;\n\t}\n\n\tconstructor(\n\t\tprivate readonly fluidDataStoreChannel: IFluidDataStoreChannel,\n\t\tprivate readonly internalId: string,\n\t\tprivate readonly channelCollection: ChannelCollection,\n\t\tprivate readonly logger: TelemetryLoggerExt,\n\t\tprivate readonly parentContext = channelCollection.parentContext,\n\t) {\n\t\tthis.pendingAliases = channelCollection.pendingAliases;\n\t}\n\n\tprivate async ackBasedPromise<T>(\n\t\texecutor: (\n\t\t\tresolve: (value: T | PromiseLike<T>) => void,\n\t\t\treject: (reason?: unknown) => void,\n\t\t) => void,\n\t): Promise<T> {\n\t\tlet rejectBecauseDispose: () => void;\n\t\treturn new Promise<T>((resolve, reject) => {\n\t\t\trejectBecauseDispose = () =>\n\t\t\t\treject(\n\t\t\t\t\tnew Error(\"ContainerRuntime disposed while this ack-based Promise was pending\"),\n\t\t\t\t);\n\n\t\t\tif (this.parentContext.containerRuntime.disposed) {\n\t\t\t\trejectBecauseDispose();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.parentContext.containerRuntime.on(\"dispose\", rejectBecauseDispose);\n\t\t\texecutor(resolve, reject);\n\t\t}).finally(() => {\n\t\t\tthis.parentContext.containerRuntime.off(\"dispose\", rejectBecauseDispose);\n\t\t});\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"dataStore.js","sourceRoot":"","sources":["../src/dataStore.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { AttachState } from \"@fluidframework/container-definitions\";\nimport type { FluidObject } from \"@fluidframework/core-interfaces\";\nimport type { IFluidHandleInternal } from \"@fluidframework/core-interfaces/internal\";\nimport { assert, unreachableCase } from \"@fluidframework/core-utils/internal\";\nimport type {\n\tAliasResult,\n\tIDataStore,\n\tIFluidDataStoreChannel,\n} from \"@fluidframework/runtime-definitions/internal\";\nimport {\n\tTelemetryDataTag,\n\ttype TelemetryLoggerExt,\n\tUsageError,\n} from \"@fluidframework/telemetry-utils/internal\";\n\nimport type { ChannelCollection } from \"./channelCollection.js\";\nimport { ContainerMessageType } from \"./messageTypes.js\";\n\n/**\n * Interface for an op to be used for assigning an\n * alias to a datastore\n * @internal\n * @privateRemarks exported per ContainerRuntime export for testing purposes\n */\nexport interface IDataStoreAliasMessage {\n\t/**\n\t * The internal id of the datastore\n\t */\n\treadonly internalId: string;\n\t/**\n\t * The alias name to be assigned to the datastore\n\t */\n\treadonly alias: string;\n}\n\n/**\n * Type guard that returns true if the given alias message is actually an instance of\n * a class which implements {@link IDataStoreAliasMessage}\n * @param maybeDataStoreAliasMessage - message object to be validated\n * @returns True if the {@link IDataStoreAliasMessage} is fully implemented, false otherwise\n */\nexport const isDataStoreAliasMessage = (\n\tmaybeDataStoreAliasMessage: unknown,\n): maybeDataStoreAliasMessage is IDataStoreAliasMessage => {\n\treturn (\n\t\ttypeof (maybeDataStoreAliasMessage as Partial<IDataStoreAliasMessage>)?.internalId ===\n\t\t\t\"string\" &&\n\t\ttypeof (maybeDataStoreAliasMessage as Partial<IDataStoreAliasMessage>)?.alias === \"string\"\n\t);\n};\n\nexport const channelToDataStore = (\n\tfluidDataStoreChannel: IFluidDataStoreChannel,\n\tinternalId: string,\n\tchannelCollection: ChannelCollection,\n\tlogger: TelemetryLoggerExt,\n): IDataStore => new DataStore(fluidDataStoreChannel, internalId, channelCollection, logger);\n\nenum AliasState {\n\tAliased = \"Aliased\",\n\tAliasing = \"Aliasing\",\n\tNone = \"None\",\n}\n\nclass DataStore implements IDataStore {\n\tprivate aliasState: AliasState = AliasState.None;\n\tprivate alias: string | undefined;\n\tprivate readonly pendingAliases: Map<string, Promise<AliasResult>>;\n\tprivate aliasResult: Promise<AliasResult> | undefined;\n\n\t/**\n\t * {@inheritDoc @fluidframework/runtime-definitions#IDataStore.trySetAlias}\n\t */\n\tasync trySetAlias(alias: string): Promise<AliasResult> {\n\t\tif (alias.includes(\"/\")) {\n\t\t\tthrow new UsageError(`The alias cannot contain slashes: '${alias}'`);\n\t\t}\n\t\tif (this.parentContext.containerRuntime.inStagingMode === true) {\n\t\t\tthrow new UsageError(\"Cannot set aliases while in staging mode\");\n\t\t}\n\n\t\tswitch (this.aliasState) {\n\t\t\t// If we're already aliasing, check if it's for the same value and return\n\t\t\t// the stored promise, otherwise return 'AlreadyAliased'\n\t\t\tcase AliasState.Aliasing: {\n\t\t\t\tassert(\n\t\t\t\t\tthis.aliasResult !== undefined,\n\t\t\t\t\t0x316 /* There should be a cached promise of in-progress aliasing */,\n\t\t\t\t);\n\t\t\t\tawait this.aliasResult;\n\t\t\t\treturn this.alias === alias ? \"Success\" : \"AlreadyAliased\";\n\t\t\t}\n\n\t\t\t// If this datastore is already aliased, return true only if this\n\t\t\t// is a repeated call for the same alias\n\t\t\tcase AliasState.Aliased: {\n\t\t\t\treturn this.alias === alias ? \"Success\" : \"AlreadyAliased\";\n\t\t\t}\n\n\t\t\tcase AliasState.None: {\n\t\t\t\tconst existingAlias = this.pendingAliases.get(alias);\n\t\t\t\tif (existingAlias !== undefined) {\n\t\t\t\t\t// There is already another datastore which will be aliased\n\t\t\t\t\t// to the same name\n\t\t\t\t\treturn \"Conflict\";\n\t\t\t\t}\n\n\t\t\t\t// There is no current or past alias operation for this datastore,\n\t\t\t\t// or for this alias, so it is safe to continue execution\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tdefault: {\n\t\t\t\tunreachableCase(this.aliasState);\n\t\t\t}\n\t\t}\n\n\t\tthis.aliasState = AliasState.Aliasing;\n\t\tthis.aliasResult = this.trySetAliasInternal(alias);\n\t\tthis.pendingAliases.set(alias, this.aliasResult);\n\t\treturn this.aliasResult;\n\t}\n\n\tasync trySetAliasInternal(alias: string): Promise<AliasResult> {\n\t\tconst message: IDataStoreAliasMessage = {\n\t\t\tinternalId: this.internalId,\n\t\t\talias,\n\t\t};\n\t\tthis.fluidDataStoreChannel.makeVisibleAndAttachGraph();\n\n\t\tif (this.parentContext.attachState === AttachState.Detached) {\n\t\t\tconst localResult = this.channelCollection.processAliasMessageCore(\n\t\t\t\tthis.internalId,\n\t\t\t\talias,\n\t\t\t);\n\t\t\t// Explicitly lock-out future attempts of aliasing,\n\t\t\t// regardless of result\n\t\t\tthis.aliasState = AliasState.Aliased;\n\t\t\treturn localResult ? \"Success\" : \"Conflict\";\n\t\t}\n\n\t\tconst aliased = await this.ackBasedPromise<boolean>((resolve) => {\n\t\t\tthis.parentContext.submitMessage(\n\t\t\t\t{ type: ContainerMessageType.Alias, contents: message },\n\t\t\t\tresolve,\n\t\t\t);\n\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tthis.logger.sendErrorEvent(\n\t\t\t\t\t{\n\t\t\t\t\t\teventName: \"AliasingException\",\n\t\t\t\t\t\talias: {\n\t\t\t\t\t\t\tvalue: alias,\n\t\t\t\t\t\t\ttag: TelemetryDataTag.UserData,\n\t\t\t\t\t\t},\n\t\t\t\t\t\tinternalId: {\n\t\t\t\t\t\t\tvalue: this.internalId,\n\t\t\t\t\t\t\ttag: TelemetryDataTag.CodeArtifact,\n\t\t\t\t\t\t},\n\t\t\t\t\t},\n\t\t\t\t\terror,\n\t\t\t\t);\n\n\t\t\t\treturn false;\n\t\t\t})\n\t\t\t.finally(() => {\n\t\t\t\tthis.pendingAliases.delete(alias);\n\t\t\t});\n\n\t\tif (!aliased) {\n\t\t\tthis.aliasState = AliasState.None;\n\t\t\tthis.aliasResult = undefined;\n\t\t\treturn \"Conflict\";\n\t\t}\n\n\t\tthis.alias = alias;\n\t\tthis.aliasState = AliasState.Aliased;\n\t\treturn \"Success\";\n\t}\n\n\t/**\n\t * {@inheritDoc @fluidframework/runtime-definitions#IDataStore.entryPoint}\n\t */\n\tget entryPoint(): IFluidHandleInternal<FluidObject> {\n\t\treturn this.fluidDataStoreChannel.entryPoint;\n\t}\n\n\tconstructor(\n\t\tprivate readonly fluidDataStoreChannel: IFluidDataStoreChannel,\n\t\tprivate readonly internalId: string,\n\t\tprivate readonly channelCollection: ChannelCollection,\n\t\tprivate readonly logger: TelemetryLoggerExt,\n\t\tprivate readonly parentContext = channelCollection.parentContext,\n\t) {\n\t\tthis.pendingAliases = channelCollection.pendingAliases;\n\t}\n\n\tprivate async ackBasedPromise<T>(\n\t\texecutor: (\n\t\t\tresolve: (value: T | PromiseLike<T>) => void,\n\t\t\treject: (reason?: unknown) => void,\n\t\t) => void,\n\t): Promise<T> {\n\t\tlet rejectBecauseDispose: () => void;\n\t\treturn new Promise<T>((resolve, reject) => {\n\t\t\trejectBecauseDispose = () =>\n\t\t\t\treject(\n\t\t\t\t\tnew Error(\"ContainerRuntime disposed while this ack-based Promise was pending\"),\n\t\t\t\t);\n\n\t\t\tif (this.parentContext.containerRuntime.disposed) {\n\t\t\t\trejectBecauseDispose();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.parentContext.containerRuntime.on(\"dispose\", rejectBecauseDispose);\n\t\t\texecutor(resolve, reject);\n\t\t}).finally(() => {\n\t\t\tthis.parentContext.containerRuntime.off(\"dispose\", rejectBecauseDispose);\n\t\t});\n\t}\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataStoreContext.d.ts","sourceRoot":"","sources":["../src/dataStoreContext.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"dataStoreContext.d.ts","sourceRoot":"","sources":["../src/dataStoreContext.ts"],"names":[],"mappings":"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"}
|
package/lib/dataStoreContext.js
CHANGED
|
@@ -35,6 +35,7 @@ export function createAttributesBlob(pkg, isRootDataStore) {
|
|
|
35
35
|
*
|
|
36
36
|
*/
|
|
37
37
|
class ContextDeltaManagerProxy extends BaseDeltaManagerProxy {
|
|
38
|
+
isReadOnly;
|
|
38
39
|
constructor(base, isReadOnly) {
|
|
39
40
|
super(base, {
|
|
40
41
|
onReadonly: () => {
|
|
@@ -74,6 +75,9 @@ class ContextDeltaManagerProxy extends BaseDeltaManagerProxy {
|
|
|
74
75
|
* {@link IFluidDataStoreContext} for the implementations of {@link IFluidDataStoreChannel} which powers the {@link IDataStore}s.
|
|
75
76
|
*/
|
|
76
77
|
export class FluidDataStoreContext extends TypedEventEmitter {
|
|
78
|
+
existing;
|
|
79
|
+
isLocalDataStore;
|
|
80
|
+
makeLocallyVisibleFn;
|
|
77
81
|
get packagePath() {
|
|
78
82
|
assert(this.pkg !== undefined, 0x139 /* "Undefined package path" */);
|
|
79
83
|
return this.pkg;
|
|
@@ -90,9 +94,13 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
90
94
|
get baseLogger() {
|
|
91
95
|
return this.parentContext.baseLogger;
|
|
92
96
|
}
|
|
97
|
+
_contextDeltaManagerProxy;
|
|
93
98
|
get deltaManager() {
|
|
94
99
|
return this._contextDeltaManagerProxy;
|
|
95
100
|
}
|
|
101
|
+
isStagingMode = false;
|
|
102
|
+
isReadOnly = () => (this.isStagingMode && this.channel?.policies?.readonlyInStagingMode === true) ||
|
|
103
|
+
this.parentContext.isReadOnly();
|
|
96
104
|
get connected() {
|
|
97
105
|
return this.parentContext.connected;
|
|
98
106
|
}
|
|
@@ -111,12 +119,31 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
111
119
|
get idCompressor() {
|
|
112
120
|
return this.parentContext.idCompressor;
|
|
113
121
|
}
|
|
122
|
+
_disposed = false;
|
|
114
123
|
get disposed() {
|
|
115
124
|
return this._disposed;
|
|
116
125
|
}
|
|
126
|
+
/**
|
|
127
|
+
* A Tombstoned object has been unreferenced long enough that GC knows it won't be referenced again.
|
|
128
|
+
* Tombstoned objects are eventually deleted by GC.
|
|
129
|
+
*/
|
|
130
|
+
_tombstoned = false;
|
|
117
131
|
get tombstoned() {
|
|
118
132
|
return this._tombstoned;
|
|
119
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* If true, throw an error when a tombstone data store is used.
|
|
136
|
+
* @deprecated NOT SUPPORTED - hardcoded to return false since it's deprecated.
|
|
137
|
+
*/
|
|
138
|
+
gcThrowOnTombstoneUsage = false;
|
|
139
|
+
/**
|
|
140
|
+
* @deprecated NOT SUPPORTED - hardcoded to return false since it's deprecated.
|
|
141
|
+
*/
|
|
142
|
+
gcTombstoneEnforcementAllowed = false;
|
|
143
|
+
/**
|
|
144
|
+
* If true, this means that this data store context and its children have been removed from the runtime
|
|
145
|
+
*/
|
|
146
|
+
deleted = false;
|
|
120
147
|
get attachState() {
|
|
121
148
|
return this._attachState;
|
|
122
149
|
}
|
|
@@ -130,6 +157,11 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
130
157
|
get ILayerCompatDetails() {
|
|
131
158
|
return runtimeCompatDetailsForDataStore;
|
|
132
159
|
}
|
|
160
|
+
/**
|
|
161
|
+
* {@inheritdoc IFluidDataStoreContext.minVersionForCollab}
|
|
162
|
+
*/
|
|
163
|
+
minVersionForCollab;
|
|
164
|
+
baseSnapshotSequenceNumber;
|
|
133
165
|
/**
|
|
134
166
|
* A datastore is considered as root if it
|
|
135
167
|
* 1. is root in memory - see isInMemoryRoot
|
|
@@ -167,43 +199,62 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
167
199
|
get pendingCount() {
|
|
168
200
|
return this.pendingMessagesState?.pendingCount ?? 0;
|
|
169
201
|
}
|
|
202
|
+
registry;
|
|
203
|
+
detachedRuntimeCreation = false;
|
|
204
|
+
channel;
|
|
205
|
+
loaded = false;
|
|
206
|
+
/**
|
|
207
|
+
* Tracks the messages for this data store that are sent while it's not loaded
|
|
208
|
+
*/
|
|
209
|
+
pendingMessagesState = {
|
|
210
|
+
messageCollections: [],
|
|
211
|
+
pendingCount: 0,
|
|
212
|
+
};
|
|
213
|
+
channelP;
|
|
214
|
+
_baseSnapshot;
|
|
215
|
+
_attachState;
|
|
216
|
+
_isInMemoryRoot = false;
|
|
217
|
+
summarizerNode;
|
|
218
|
+
mc;
|
|
219
|
+
thresholdOpsCounter;
|
|
220
|
+
static pendingOpsCountThreshold = 1000;
|
|
221
|
+
/**
|
|
222
|
+
* If the summarizer makes local changes, a telemetry event is logged. This has the potential to be very noisy.
|
|
223
|
+
* So, adding a count of how many telemetry events are logged per data store context. This can be
|
|
224
|
+
* controlled via feature flags.
|
|
225
|
+
*/
|
|
226
|
+
localChangesTelemetryCount;
|
|
227
|
+
id;
|
|
228
|
+
_containerRuntime;
|
|
229
|
+
/**
|
|
230
|
+
* Information for this data store from its parent.
|
|
231
|
+
*
|
|
232
|
+
* @remarks
|
|
233
|
+
* The parent which provided this information currently can be the container runtime or a datastore (if the datastore this context is for is nested under another one).
|
|
234
|
+
*/
|
|
235
|
+
parentContext;
|
|
236
|
+
storage;
|
|
237
|
+
scope;
|
|
238
|
+
/**
|
|
239
|
+
* The loading group to which the data store belongs to.
|
|
240
|
+
*/
|
|
241
|
+
loadingGroupId;
|
|
242
|
+
/**
|
|
243
|
+
* {@link PackagePath} of this data store.
|
|
244
|
+
*
|
|
245
|
+
* This can be undefined when a data store is delay loaded, i.e., the attributes of this data store in the snapshot are not fetched until this data store is actually used.
|
|
246
|
+
* At that time, the attributes blob is fetched and the pkg is updated from it.
|
|
247
|
+
*
|
|
248
|
+
* @see {@link PackagePath}.
|
|
249
|
+
* @see {@link IFluidDataStoreContext.packagePath}.
|
|
250
|
+
* @see {@link factoryFromPackagePath}.
|
|
251
|
+
*/
|
|
252
|
+
pkg;
|
|
170
253
|
constructor(props, existing, isLocalDataStore, makeLocallyVisibleFn) {
|
|
171
254
|
super();
|
|
172
255
|
this.existing = existing;
|
|
173
256
|
this.isLocalDataStore = isLocalDataStore;
|
|
174
257
|
this.makeLocallyVisibleFn = makeLocallyVisibleFn;
|
|
175
|
-
this.isStagingMode = false;
|
|
176
|
-
this.isReadOnly = () => (this.isStagingMode && this.channel?.policies?.readonlyInStagingMode === true) ||
|
|
177
|
-
this.parentContext.isReadOnly();
|
|
178
|
-
this._disposed = false;
|
|
179
|
-
/**
|
|
180
|
-
* A Tombstoned object has been unreferenced long enough that GC knows it won't be referenced again.
|
|
181
|
-
* Tombstoned objects are eventually deleted by GC.
|
|
182
|
-
*/
|
|
183
|
-
this._tombstoned = false;
|
|
184
|
-
/**
|
|
185
|
-
* If true, throw an error when a tombstone data store is used.
|
|
186
|
-
* @deprecated NOT SUPPORTED - hardcoded to return false since it's deprecated.
|
|
187
|
-
*/
|
|
188
|
-
this.gcThrowOnTombstoneUsage = false;
|
|
189
|
-
/**
|
|
190
|
-
* @deprecated NOT SUPPORTED - hardcoded to return false since it's deprecated.
|
|
191
|
-
*/
|
|
192
|
-
this.gcTombstoneEnforcementAllowed = false;
|
|
193
|
-
/**
|
|
194
|
-
* If true, this means that this data store context and its children have been removed from the runtime
|
|
195
|
-
*/
|
|
196
|
-
this.deleted = false;
|
|
197
|
-
this.detachedRuntimeCreation = false;
|
|
198
|
-
this.loaded = false;
|
|
199
|
-
/**
|
|
200
|
-
* Tracks the messages for this data store that are sent while it's not loaded
|
|
201
|
-
*/
|
|
202
|
-
this.pendingMessagesState = {
|
|
203
|
-
messageCollections: [],
|
|
204
|
-
pendingCount: 0,
|
|
205
|
-
};
|
|
206
|
-
this._isInMemoryRoot = false;
|
|
207
258
|
this._containerRuntime = props.parentContext.containerRuntime;
|
|
208
259
|
this.parentContext = props.parentContext;
|
|
209
260
|
this.minVersionForCollab = props.parentContext.minVersionForCollab;
|
|
@@ -725,75 +776,19 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
725
776
|
return this.parentContext.getExtension(id, requirements, ...context);
|
|
726
777
|
}
|
|
727
778
|
}
|
|
728
|
-
FluidDataStoreContext.pendingOpsCountThreshold = 1000;
|
|
729
779
|
/**
|
|
730
780
|
* @internal
|
|
731
781
|
*/
|
|
732
782
|
export class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
783
|
+
// Tells whether we need to fetch the snapshot before use. This is to support Data Virtualization.
|
|
784
|
+
snapshotFetchRequired;
|
|
785
|
+
runtime;
|
|
786
|
+
blobContents;
|
|
787
|
+
isSnapshotInISnapshotFormat;
|
|
733
788
|
constructor(props) {
|
|
734
789
|
super(props, true /* existing */, false /* isLocalDataStore */, () => {
|
|
735
790
|
throw new Error("Already attached");
|
|
736
791
|
});
|
|
737
|
-
// eslint-disable-next-line unicorn/consistent-function-scoping -- Property is defined once; no need to extract inner lambda
|
|
738
|
-
this.initialSnapshotDetailsP = new LazyPromise(async () => {
|
|
739
|
-
// Sequence number of the snapshot.
|
|
740
|
-
let sequenceNumber;
|
|
741
|
-
// Check whether we need to fetch the snapshot first to load. The snapshot should be in new format to see
|
|
742
|
-
// whether we want to evaluate to fetch snapshot or not for loadingGroupId. Otherwise, the snapshot
|
|
743
|
-
// will contain all the blobs.
|
|
744
|
-
if (this.snapshotFetchRequired === undefined &&
|
|
745
|
-
this._baseSnapshot?.groupId !== undefined &&
|
|
746
|
-
this.isSnapshotInISnapshotFormat) {
|
|
747
|
-
assert(this.blobContents !== undefined, 0x97a /* Blob contents should be present to evaluate */);
|
|
748
|
-
assert(this._baseSnapshot !== undefined, 0x97b /* snapshotTree should be present to evaluate */);
|
|
749
|
-
this.snapshotFetchRequired = isSnapshotFetchRequiredForLoadingGroupId(this._baseSnapshot, this.blobContents);
|
|
750
|
-
}
|
|
751
|
-
if (this.snapshotFetchRequired === true) {
|
|
752
|
-
assert(this.loadingGroupId !== undefined, 0x8f5 /* groupId should be present to fetch snapshot */);
|
|
753
|
-
const snapshot = await this.runtime.getSnapshotForLoadingGroupId([this.loadingGroupId], [this.id]);
|
|
754
|
-
this._baseSnapshot = snapshot.snapshotTree;
|
|
755
|
-
sequenceNumber = snapshot.sequenceNumber;
|
|
756
|
-
this.snapshotFetchRequired = false;
|
|
757
|
-
}
|
|
758
|
-
let tree = this.baseSnapshot;
|
|
759
|
-
let isRootDataStore = true;
|
|
760
|
-
if (!!tree && tree.blobs[dataStoreAttributesBlobName] !== undefined) {
|
|
761
|
-
// Need to get through snapshot and use that to populate extraBlobs
|
|
762
|
-
// eslint-disable-next-line import-x/no-deprecated
|
|
763
|
-
const attributes = await readAndParse(this.storage, tree.blobs[dataStoreAttributesBlobName]);
|
|
764
|
-
let pkgFromSnapshot;
|
|
765
|
-
// Use the snapshotFormatVersion to determine how the pkg is encoded in the snapshot.
|
|
766
|
-
// For snapshotFormatVersion = "0.1" (1) or above, pkg is jsonified, otherwise it is just a string.
|
|
767
|
-
const formatVersion = getAttributesFormatVersion(attributes);
|
|
768
|
-
if (formatVersion < 1) {
|
|
769
|
-
pkgFromSnapshot =
|
|
770
|
-
attributes.pkg.startsWith('["') && attributes.pkg.endsWith('"]')
|
|
771
|
-
? JSON.parse(attributes.pkg)
|
|
772
|
-
: [attributes.pkg];
|
|
773
|
-
}
|
|
774
|
-
else {
|
|
775
|
-
pkgFromSnapshot = JSON.parse(attributes.pkg);
|
|
776
|
-
}
|
|
777
|
-
this.pkg = pkgFromSnapshot;
|
|
778
|
-
/**
|
|
779
|
-
* If there is no isRootDataStore in the attributes blob, set it to true. This will ensure that
|
|
780
|
-
* data stores in older documents are not garbage collected incorrectly. This may lead to additional
|
|
781
|
-
* roots in the document but they won't break.
|
|
782
|
-
*/
|
|
783
|
-
isRootDataStore = attributes.isRootDataStore ?? true;
|
|
784
|
-
if (hasIsolatedChannels(attributes)) {
|
|
785
|
-
tree = tree.trees[channelsTreeName];
|
|
786
|
-
assert(tree !== undefined, 0x1fe /* "isolated channels subtree should exist in remote datastore snapshot" */);
|
|
787
|
-
}
|
|
788
|
-
}
|
|
789
|
-
assert(this.pkg !== undefined, 0x8f6 /* The datastore context package should be defined */);
|
|
790
|
-
return {
|
|
791
|
-
pkg: this.pkg,
|
|
792
|
-
isRootDataStore,
|
|
793
|
-
snapshot: tree,
|
|
794
|
-
sequenceNumber,
|
|
795
|
-
};
|
|
796
|
-
});
|
|
797
792
|
this.runtime = props.parentContext.containerRuntime;
|
|
798
793
|
if (isInstanceOfISnapshot(props.snapshot)) {
|
|
799
794
|
this.blobContents = props.snapshot.blobContents;
|
|
@@ -820,6 +815,66 @@ export class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
|
820
815
|
* 4. attach op for this data store is processed - setAttachState() is called.
|
|
821
816
|
*/
|
|
822
817
|
setAttachState(attachState) { }
|
|
818
|
+
// eslint-disable-next-line unicorn/consistent-function-scoping -- Property is defined once; no need to extract inner lambda
|
|
819
|
+
initialSnapshotDetailsP = new LazyPromise(async () => {
|
|
820
|
+
// Sequence number of the snapshot.
|
|
821
|
+
let sequenceNumber;
|
|
822
|
+
// Check whether we need to fetch the snapshot first to load. The snapshot should be in new format to see
|
|
823
|
+
// whether we want to evaluate to fetch snapshot or not for loadingGroupId. Otherwise, the snapshot
|
|
824
|
+
// will contain all the blobs.
|
|
825
|
+
if (this.snapshotFetchRequired === undefined &&
|
|
826
|
+
this._baseSnapshot?.groupId !== undefined &&
|
|
827
|
+
this.isSnapshotInISnapshotFormat) {
|
|
828
|
+
assert(this.blobContents !== undefined, 0x97a /* Blob contents should be present to evaluate */);
|
|
829
|
+
assert(this._baseSnapshot !== undefined, 0x97b /* snapshotTree should be present to evaluate */);
|
|
830
|
+
this.snapshotFetchRequired = isSnapshotFetchRequiredForLoadingGroupId(this._baseSnapshot, this.blobContents);
|
|
831
|
+
}
|
|
832
|
+
if (this.snapshotFetchRequired === true) {
|
|
833
|
+
assert(this.loadingGroupId !== undefined, 0x8f5 /* groupId should be present to fetch snapshot */);
|
|
834
|
+
const snapshot = await this.runtime.getSnapshotForLoadingGroupId([this.loadingGroupId], [this.id]);
|
|
835
|
+
this._baseSnapshot = snapshot.snapshotTree;
|
|
836
|
+
sequenceNumber = snapshot.sequenceNumber;
|
|
837
|
+
this.snapshotFetchRequired = false;
|
|
838
|
+
}
|
|
839
|
+
let tree = this.baseSnapshot;
|
|
840
|
+
let isRootDataStore = true;
|
|
841
|
+
if (!!tree && tree.blobs[dataStoreAttributesBlobName] !== undefined) {
|
|
842
|
+
// Need to get through snapshot and use that to populate extraBlobs
|
|
843
|
+
// eslint-disable-next-line import-x/no-deprecated
|
|
844
|
+
const attributes = await readAndParse(this.storage, tree.blobs[dataStoreAttributesBlobName]);
|
|
845
|
+
let pkgFromSnapshot;
|
|
846
|
+
// Use the snapshotFormatVersion to determine how the pkg is encoded in the snapshot.
|
|
847
|
+
// For snapshotFormatVersion = "0.1" (1) or above, pkg is jsonified, otherwise it is just a string.
|
|
848
|
+
const formatVersion = getAttributesFormatVersion(attributes);
|
|
849
|
+
if (formatVersion < 1) {
|
|
850
|
+
pkgFromSnapshot =
|
|
851
|
+
attributes.pkg.startsWith('["') && attributes.pkg.endsWith('"]')
|
|
852
|
+
? JSON.parse(attributes.pkg)
|
|
853
|
+
: [attributes.pkg];
|
|
854
|
+
}
|
|
855
|
+
else {
|
|
856
|
+
pkgFromSnapshot = JSON.parse(attributes.pkg);
|
|
857
|
+
}
|
|
858
|
+
this.pkg = pkgFromSnapshot;
|
|
859
|
+
/**
|
|
860
|
+
* If there is no isRootDataStore in the attributes blob, set it to true. This will ensure that
|
|
861
|
+
* data stores in older documents are not garbage collected incorrectly. This may lead to additional
|
|
862
|
+
* roots in the document but they won't break.
|
|
863
|
+
*/
|
|
864
|
+
isRootDataStore = attributes.isRootDataStore ?? true;
|
|
865
|
+
if (hasIsolatedChannels(attributes)) {
|
|
866
|
+
tree = tree.trees[channelsTreeName];
|
|
867
|
+
assert(tree !== undefined, 0x1fe /* "isolated channels subtree should exist in remote datastore snapshot" */);
|
|
868
|
+
}
|
|
869
|
+
}
|
|
870
|
+
assert(this.pkg !== undefined, 0x8f6 /* The datastore context package should be defined */);
|
|
871
|
+
return {
|
|
872
|
+
pkg: this.pkg,
|
|
873
|
+
isRootDataStore,
|
|
874
|
+
snapshot: tree,
|
|
875
|
+
sequenceNumber,
|
|
876
|
+
};
|
|
877
|
+
});
|
|
823
878
|
async getInitialSnapshotDetails() {
|
|
824
879
|
return this.initialSnapshotDetailsP;
|
|
825
880
|
}
|
|
@@ -841,40 +896,9 @@ export class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
|
841
896
|
* @internal
|
|
842
897
|
*/
|
|
843
898
|
export class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
899
|
+
snapshotTree;
|
|
844
900
|
constructor(props) {
|
|
845
901
|
super(props, props.snapshotTree !== undefined /* existing */, true /* isLocalDataStore */, props.makeLocallyVisibleFn);
|
|
846
|
-
// eslint-disable-next-line unicorn/consistent-function-scoping -- Property is defined once; no need to extract inner lambda
|
|
847
|
-
this.initialSnapshotDetailsP = new LazyPromise(async () => {
|
|
848
|
-
let snapshot = this.snapshotTree;
|
|
849
|
-
// eslint-disable-next-line import-x/no-deprecated
|
|
850
|
-
let attributes;
|
|
851
|
-
let isRootDataStore = false;
|
|
852
|
-
if (snapshot !== undefined) {
|
|
853
|
-
// Get the dataStore attributes.
|
|
854
|
-
// Note: storage can be undefined in special case while detached.
|
|
855
|
-
attributes = await getFluidDataStoreAttributes(this.storage, snapshot);
|
|
856
|
-
if (hasIsolatedChannels(attributes)) {
|
|
857
|
-
snapshot = snapshot.trees[channelsTreeName];
|
|
858
|
-
assert(snapshot !== undefined, 0x1ff /* "isolated channels subtree should exist in local datastore snapshot" */);
|
|
859
|
-
}
|
|
860
|
-
if (this.pkg === undefined) {
|
|
861
|
-
this.pkg = JSON.parse(attributes.pkg);
|
|
862
|
-
// If there is no isRootDataStore in the attributes blob, set it to true. This ensures that data
|
|
863
|
-
// stores in older documents are not garbage collected incorrectly. This may lead to additional
|
|
864
|
-
// roots in the document but they won't break.
|
|
865
|
-
if (attributes.isRootDataStore ?? true) {
|
|
866
|
-
isRootDataStore = true;
|
|
867
|
-
this.setInMemoryRoot();
|
|
868
|
-
}
|
|
869
|
-
}
|
|
870
|
-
}
|
|
871
|
-
assert(this.pkg !== undefined, 0x152 /* "pkg should be available in local data store" */);
|
|
872
|
-
return {
|
|
873
|
-
pkg: this.pkg,
|
|
874
|
-
isRootDataStore,
|
|
875
|
-
snapshot,
|
|
876
|
-
};
|
|
877
|
-
});
|
|
878
902
|
// Summarizer client should not create local data stores.
|
|
879
903
|
this.identifyLocalChangeIfReadonly("DataStoreCreatedWhileReadonly");
|
|
880
904
|
this.snapshotTree = props.snapshotTree;
|
|
@@ -946,6 +970,38 @@ export class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
946
970
|
assert(this.channel !== undefined, 0x9a6 /* There should be a channel when generating attach GC data */);
|
|
947
971
|
return this.channel.getAttachGCData(telemetryContext);
|
|
948
972
|
}
|
|
973
|
+
// eslint-disable-next-line unicorn/consistent-function-scoping -- Property is defined once; no need to extract inner lambda
|
|
974
|
+
initialSnapshotDetailsP = new LazyPromise(async () => {
|
|
975
|
+
let snapshot = this.snapshotTree;
|
|
976
|
+
// eslint-disable-next-line import-x/no-deprecated
|
|
977
|
+
let attributes;
|
|
978
|
+
let isRootDataStore = false;
|
|
979
|
+
if (snapshot !== undefined) {
|
|
980
|
+
// Get the dataStore attributes.
|
|
981
|
+
// Note: storage can be undefined in special case while detached.
|
|
982
|
+
attributes = await getFluidDataStoreAttributes(this.storage, snapshot);
|
|
983
|
+
if (hasIsolatedChannels(attributes)) {
|
|
984
|
+
snapshot = snapshot.trees[channelsTreeName];
|
|
985
|
+
assert(snapshot !== undefined, 0x1ff /* "isolated channels subtree should exist in local datastore snapshot" */);
|
|
986
|
+
}
|
|
987
|
+
if (this.pkg === undefined) {
|
|
988
|
+
this.pkg = JSON.parse(attributes.pkg);
|
|
989
|
+
// If there is no isRootDataStore in the attributes blob, set it to true. This ensures that data
|
|
990
|
+
// stores in older documents are not garbage collected incorrectly. This may lead to additional
|
|
991
|
+
// roots in the document but they won't break.
|
|
992
|
+
if (attributes.isRootDataStore ?? true) {
|
|
993
|
+
isRootDataStore = true;
|
|
994
|
+
this.setInMemoryRoot();
|
|
995
|
+
}
|
|
996
|
+
}
|
|
997
|
+
}
|
|
998
|
+
assert(this.pkg !== undefined, 0x152 /* "pkg should be available in local data store" */);
|
|
999
|
+
return {
|
|
1000
|
+
pkg: this.pkg,
|
|
1001
|
+
isRootDataStore,
|
|
1002
|
+
snapshot,
|
|
1003
|
+
};
|
|
1004
|
+
});
|
|
949
1005
|
async getInitialSnapshotDetails() {
|
|
950
1006
|
return this.initialSnapshotDetailsP;
|
|
951
1007
|
}
|
|
@@ -989,6 +1045,7 @@ export class LocalDetachedFluidDataStoreContext extends LocalFluidDataStoreConte
|
|
|
989
1045
|
this.detachedRuntimeCreation = true;
|
|
990
1046
|
this.channelToDataStoreFn = props.channelToDataStoreFn;
|
|
991
1047
|
}
|
|
1048
|
+
channelToDataStoreFn;
|
|
992
1049
|
async attachRuntime(registry, dataStoreChannel) {
|
|
993
1050
|
assert(this.detachedRuntimeCreation, 0x154 /* "runtime creation is already attached" */);
|
|
994
1051
|
this.detachedRuntimeCreation = false;
|