@fluidframework/container-runtime 2.0.0-dev.4.4.0.162574 → 2.0.0-dev.5.3.2.178189
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 +69 -0
- package/dist/batchTracker.d.ts +4 -4
- package/dist/batchTracker.d.ts.map +1 -1
- package/dist/batchTracker.js +2 -2
- package/dist/batchTracker.js.map +1 -1
- package/dist/blobManager.d.ts +5 -2
- package/dist/blobManager.d.ts.map +1 -1
- package/dist/blobManager.js +53 -24
- package/dist/blobManager.js.map +1 -1
- package/dist/connectionTelemetry.d.ts +2 -2
- package/dist/connectionTelemetry.d.ts.map +1 -1
- package/dist/connectionTelemetry.js +8 -1
- package/dist/connectionTelemetry.js.map +1 -1
- package/dist/containerRuntime.d.ts +19 -7
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +98 -22
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStore.d.ts +2 -2
- package/dist/dataStore.d.ts.map +1 -1
- package/dist/dataStore.js +1 -1
- package/dist/dataStore.js.map +1 -1
- package/dist/dataStoreContext.d.ts +3 -4
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +5 -5
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStoreContexts.d.ts +2 -1
- package/dist/dataStoreContexts.d.ts.map +1 -1
- package/dist/dataStoreContexts.js +2 -1
- package/dist/dataStoreContexts.js.map +1 -1
- package/dist/dataStores.d.ts +1 -1
- package/dist/dataStores.d.ts.map +1 -1
- package/dist/dataStores.js +2 -1
- package/dist/dataStores.js.map +1 -1
- package/dist/deltaScheduler.d.ts +2 -2
- package/dist/deltaScheduler.d.ts.map +1 -1
- package/dist/deltaScheduler.js +1 -1
- package/dist/deltaScheduler.js.map +1 -1
- package/dist/gc/garbageCollection.d.ts +2 -2
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +4 -3
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +3 -4
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js.map +1 -1
- package/dist/gc/gcTelemetry.d.ts +5 -5
- package/dist/gc/gcTelemetry.d.ts.map +1 -1
- package/dist/gc/gcTelemetry.js.map +1 -1
- package/dist/id-compressor/idCompressor.d.ts +2 -2
- package/dist/id-compressor/idCompressor.d.ts.map +1 -1
- package/dist/id-compressor/idCompressor.js.map +1 -1
- package/dist/id-compressor/uuidUtilities.d.ts +0 -2
- package/dist/id-compressor/uuidUtilities.d.ts.map +1 -1
- package/dist/id-compressor/uuidUtilities.js +1 -3
- package/dist/id-compressor/uuidUtilities.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/metadata.d.ts +18 -0
- package/dist/metadata.d.ts.map +1 -0
- package/dist/metadata.js +7 -0
- package/dist/metadata.js.map +1 -0
- package/dist/opLifecycle/batchManager.d.ts +2 -1
- package/dist/opLifecycle/batchManager.d.ts.map +1 -1
- package/dist/opLifecycle/batchManager.js +5 -1
- package/dist/opLifecycle/batchManager.js.map +1 -1
- package/dist/opLifecycle/definitions.d.ts +13 -2
- package/dist/opLifecycle/definitions.d.ts.map +1 -1
- package/dist/opLifecycle/definitions.js.map +1 -1
- package/dist/opLifecycle/index.d.ts +1 -1
- package/dist/opLifecycle/index.d.ts.map +1 -1
- package/dist/opLifecycle/index.js +2 -1
- package/dist/opLifecycle/index.js.map +1 -1
- package/dist/opLifecycle/opCompressor.d.ts +2 -2
- package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opCompressor.js +3 -6
- package/dist/opLifecycle/opCompressor.js.map +1 -1
- package/dist/opLifecycle/opDecompressor.d.ts +2 -2
- package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opDecompressor.js +14 -8
- package/dist/opLifecycle/opDecompressor.js.map +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/dist/opLifecycle/opGroupingManager.js +6 -11
- package/dist/opLifecycle/opGroupingManager.js.map +1 -1
- package/dist/opLifecycle/opSplitter.d.ts +2 -2
- package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
- package/dist/opLifecycle/opSplitter.js +5 -3
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +35 -4
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +135 -45
- package/dist/opLifecycle/outbox.js.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.js +3 -1
- package/dist/opLifecycle/remoteMessageProcessor.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 +24 -15
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +67 -72
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/scheduleManager.d.ts +2 -2
- package/dist/scheduleManager.d.ts.map +1 -1
- package/dist/scheduleManager.js +8 -2
- package/dist/scheduleManager.js.map +1 -1
- package/dist/summary/index.d.ts +2 -2
- package/dist/summary/index.d.ts.map +1 -1
- package/dist/summary/index.js +2 -1
- package/dist/summary/index.js.map +1 -1
- package/dist/summary/orderedClientElection.d.ts +4 -3
- package/dist/summary/orderedClientElection.d.ts.map +1 -1
- package/dist/summary/orderedClientElection.js +3 -18
- package/dist/summary/orderedClientElection.js.map +1 -1
- package/dist/summary/runningSummarizer.d.ts +4 -3
- package/dist/summary/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/runningSummarizer.js +5 -6
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summarizer.d.ts +2 -3
- package/dist/summary/summarizer.d.ts.map +1 -1
- package/dist/summary/summarizer.js +2 -3
- package/dist/summary/summarizer.js.map +1 -1
- package/dist/summary/summarizerClientElection.d.ts +3 -2
- package/dist/summary/summarizerClientElection.d.ts.map +1 -1
- package/dist/summary/summarizerClientElection.js.map +1 -1
- package/dist/summary/summarizerHeuristics.d.ts +2 -2
- package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
- package/dist/summary/summarizerHeuristics.js.map +1 -1
- package/dist/summary/summarizerNode/index.d.ts +1 -1
- package/dist/summary/summarizerNode/index.d.ts.map +1 -1
- package/dist/summary/summarizerNode/index.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.d.ts +41 -14
- package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.js +91 -23
- package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +24 -4
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +23 -8
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js +60 -23
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/dist/summary/summarizerTypes.d.ts +16 -9
- package/dist/summary/summarizerTypes.d.ts.map +1 -1
- package/dist/summary/summarizerTypes.js.map +1 -1
- package/dist/summary/summaryCollection.d.ts +4 -2
- package/dist/summary/summaryCollection.d.ts.map +1 -1
- package/dist/summary/summaryCollection.js +4 -0
- package/dist/summary/summaryCollection.js.map +1 -1
- package/dist/summary/summaryFormat.d.ts +1 -0
- package/dist/summary/summaryFormat.d.ts.map +1 -1
- package/dist/summary/summaryFormat.js +2 -1
- package/dist/summary/summaryFormat.js.map +1 -1
- package/dist/summary/summaryGenerator.d.ts +14 -5
- package/dist/summary/summaryGenerator.d.ts.map +1 -1
- package/dist/summary/summaryGenerator.js +23 -9
- package/dist/summary/summaryGenerator.js.map +1 -1
- package/dist/summary/summaryManager.d.ts +4 -2
- package/dist/summary/summaryManager.d.ts.map +1 -1
- package/dist/summary/summaryManager.js.map +1 -1
- package/dist/tsdoc-metadata.json +11 -0
- package/lib/batchTracker.d.ts +4 -4
- package/lib/batchTracker.d.ts.map +1 -1
- package/lib/batchTracker.js +2 -2
- package/lib/batchTracker.js.map +1 -1
- package/lib/blobManager.d.ts +5 -2
- package/lib/blobManager.d.ts.map +1 -1
- package/lib/blobManager.js +53 -24
- package/lib/blobManager.js.map +1 -1
- package/lib/connectionTelemetry.d.ts +2 -2
- package/lib/connectionTelemetry.d.ts.map +1 -1
- package/lib/connectionTelemetry.js +8 -1
- package/lib/connectionTelemetry.js.map +1 -1
- package/lib/containerRuntime.d.ts +19 -7
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +101 -25
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStore.d.ts +2 -2
- package/lib/dataStore.d.ts.map +1 -1
- package/lib/dataStore.js +1 -1
- package/lib/dataStore.js.map +1 -1
- package/lib/dataStoreContext.d.ts +3 -4
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +5 -5
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/dataStoreContexts.d.ts +2 -1
- package/lib/dataStoreContexts.d.ts.map +1 -1
- package/lib/dataStoreContexts.js +2 -1
- package/lib/dataStoreContexts.js.map +1 -1
- package/lib/dataStores.d.ts +1 -1
- package/lib/dataStores.d.ts.map +1 -1
- package/lib/dataStores.js +2 -1
- package/lib/dataStores.js.map +1 -1
- package/lib/deltaScheduler.d.ts +2 -2
- package/lib/deltaScheduler.d.ts.map +1 -1
- package/lib/deltaScheduler.js +1 -1
- package/lib/deltaScheduler.js.map +1 -1
- package/lib/gc/garbageCollection.d.ts +2 -2
- package/lib/gc/garbageCollection.d.ts.map +1 -1
- package/lib/gc/garbageCollection.js +2 -1
- package/lib/gc/garbageCollection.js.map +1 -1
- package/lib/gc/gcDefinitions.d.ts +3 -4
- package/lib/gc/gcDefinitions.d.ts.map +1 -1
- package/lib/gc/gcDefinitions.js.map +1 -1
- package/lib/gc/gcTelemetry.d.ts +5 -5
- package/lib/gc/gcTelemetry.d.ts.map +1 -1
- package/lib/gc/gcTelemetry.js +1 -1
- package/lib/gc/gcTelemetry.js.map +1 -1
- package/lib/id-compressor/idCompressor.d.ts +2 -2
- package/lib/id-compressor/idCompressor.d.ts.map +1 -1
- package/lib/id-compressor/idCompressor.js.map +1 -1
- package/lib/id-compressor/uuidUtilities.d.ts +0 -2
- package/lib/id-compressor/uuidUtilities.d.ts.map +1 -1
- package/lib/id-compressor/uuidUtilities.js +1 -3
- package/lib/id-compressor/uuidUtilities.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/metadata.d.ts +18 -0
- package/lib/metadata.d.ts.map +1 -0
- package/lib/metadata.js +6 -0
- package/lib/metadata.js.map +1 -0
- package/lib/opLifecycle/batchManager.d.ts +2 -1
- package/lib/opLifecycle/batchManager.d.ts.map +1 -1
- package/lib/opLifecycle/batchManager.js +5 -1
- package/lib/opLifecycle/batchManager.js.map +1 -1
- package/lib/opLifecycle/definitions.d.ts +13 -2
- package/lib/opLifecycle/definitions.d.ts.map +1 -1
- package/lib/opLifecycle/definitions.js.map +1 -1
- package/lib/opLifecycle/index.d.ts +1 -1
- package/lib/opLifecycle/index.d.ts.map +1 -1
- package/lib/opLifecycle/index.js +1 -1
- package/lib/opLifecycle/index.js.map +1 -1
- package/lib/opLifecycle/opCompressor.d.ts +2 -2
- package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opCompressor.js +3 -6
- package/lib/opLifecycle/opCompressor.js.map +1 -1
- package/lib/opLifecycle/opDecompressor.d.ts +2 -2
- package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opDecompressor.js +14 -8
- package/lib/opLifecycle/opDecompressor.js.map +1 -1
- package/lib/opLifecycle/opGroupingManager.d.ts +1 -1
- package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/lib/opLifecycle/opGroupingManager.js +6 -11
- package/lib/opLifecycle/opGroupingManager.js.map +1 -1
- package/lib/opLifecycle/opSplitter.d.ts +2 -2
- package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
- package/lib/opLifecycle/opSplitter.js +5 -3
- package/lib/opLifecycle/opSplitter.js.map +1 -1
- package/lib/opLifecycle/outbox.d.ts +35 -4
- package/lib/opLifecycle/outbox.d.ts.map +1 -1
- package/lib/opLifecycle/outbox.js +133 -44
- package/lib/opLifecycle/outbox.js.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.js +3 -1
- package/lib/opLifecycle/remoteMessageProcessor.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 +24 -15
- package/lib/pendingStateManager.d.ts.map +1 -1
- package/lib/pendingStateManager.js +67 -72
- package/lib/pendingStateManager.js.map +1 -1
- package/lib/scheduleManager.d.ts +2 -2
- package/lib/scheduleManager.d.ts.map +1 -1
- package/lib/scheduleManager.js +8 -2
- package/lib/scheduleManager.js.map +1 -1
- package/lib/summary/index.d.ts +2 -2
- package/lib/summary/index.d.ts.map +1 -1
- package/lib/summary/index.js +1 -1
- package/lib/summary/index.js.map +1 -1
- package/lib/summary/orderedClientElection.d.ts +4 -3
- package/lib/summary/orderedClientElection.d.ts.map +1 -1
- package/lib/summary/orderedClientElection.js +3 -18
- package/lib/summary/orderedClientElection.js.map +1 -1
- package/lib/summary/runningSummarizer.d.ts +4 -3
- package/lib/summary/runningSummarizer.d.ts.map +1 -1
- package/lib/summary/runningSummarizer.js +5 -6
- package/lib/summary/runningSummarizer.js.map +1 -1
- package/lib/summary/summarizer.d.ts +2 -3
- package/lib/summary/summarizer.d.ts.map +1 -1
- package/lib/summary/summarizer.js +2 -3
- package/lib/summary/summarizer.js.map +1 -1
- package/lib/summary/summarizerClientElection.d.ts +3 -2
- package/lib/summary/summarizerClientElection.d.ts.map +1 -1
- package/lib/summary/summarizerClientElection.js.map +1 -1
- package/lib/summary/summarizerHeuristics.d.ts +2 -2
- package/lib/summary/summarizerHeuristics.d.ts.map +1 -1
- package/lib/summary/summarizerHeuristics.js.map +1 -1
- package/lib/summary/summarizerNode/index.d.ts +1 -1
- package/lib/summary/summarizerNode/index.d.ts.map +1 -1
- package/lib/summary/summarizerNode/index.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.d.ts +41 -14
- package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.js +91 -23
- package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts +24 -4
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +23 -8
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js +59 -22
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/lib/summary/summarizerTypes.d.ts +16 -9
- package/lib/summary/summarizerTypes.d.ts.map +1 -1
- package/lib/summary/summarizerTypes.js.map +1 -1
- package/lib/summary/summaryCollection.d.ts +4 -2
- package/lib/summary/summaryCollection.d.ts.map +1 -1
- package/lib/summary/summaryCollection.js +4 -0
- package/lib/summary/summaryCollection.js.map +1 -1
- package/lib/summary/summaryFormat.d.ts +1 -0
- package/lib/summary/summaryFormat.d.ts.map +1 -1
- package/lib/summary/summaryFormat.js +2 -1
- package/lib/summary/summaryFormat.js.map +1 -1
- package/lib/summary/summaryGenerator.d.ts +14 -5
- package/lib/summary/summaryGenerator.d.ts.map +1 -1
- package/lib/summary/summaryGenerator.js +21 -8
- package/lib/summary/summaryGenerator.js.map +1 -1
- package/lib/summary/summaryManager.d.ts +4 -2
- package/lib/summary/summaryManager.d.ts.map +1 -1
- package/lib/summary/summaryManager.js +1 -1
- package/lib/summary/summaryManager.js.map +1 -1
- package/package.json +25 -41
- package/src/batchTracker.ts +5 -6
- package/src/blobManager.ts +70 -29
- package/src/connectionTelemetry.ts +14 -6
- package/src/containerRuntime.ts +124 -38
- package/src/dataStore.ts +3 -4
- package/src/dataStoreContext.ts +12 -9
- package/src/dataStoreContexts.ts +6 -8
- package/src/dataStores.ts +8 -3
- package/src/deltaScheduler.ts +2 -3
- package/src/gc/garbageCollection.ts +7 -6
- package/src/gc/gcDefinitions.ts +3 -4
- package/src/gc/gcTelemetry.ts +9 -5
- package/src/id-compressor/idCompressor.ts +2 -2
- package/src/id-compressor/uuidUtilities.ts +1 -4
- package/src/index.ts +2 -0
- package/src/metadata.ts +19 -0
- package/src/opLifecycle/README.md +20 -0
- package/src/opLifecycle/batchManager.ts +9 -1
- package/src/opLifecycle/definitions.ts +13 -2
- package/src/opLifecycle/index.ts +1 -1
- package/src/opLifecycle/opCompressor.ts +4 -8
- package/src/opLifecycle/opDecompressor.ts +43 -16
- package/src/opLifecycle/opGroupingManager.ts +19 -13
- package/src/opLifecycle/opSplitter.ts +7 -6
- package/src/opLifecycle/outbox.ts +172 -57
- package/src/opLifecycle/remoteMessageProcessor.ts +5 -1
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +113 -129
- package/src/scheduleManager.ts +18 -10
- package/src/summary/index.ts +3 -1
- package/src/summary/orderedClientElection.ts +7 -20
- package/src/summary/runningSummarizer.ts +11 -10
- package/src/summary/summarizer.ts +8 -8
- package/src/summary/summarizerClientElection.ts +3 -2
- package/src/summary/summarizerHeuristics.ts +2 -2
- package/src/summary/summarizerNode/index.ts +1 -0
- package/src/summary/summarizerNode/summarizerNode.ts +121 -38
- package/src/summary/summarizerNode/summarizerNodeUtils.ts +27 -4
- package/src/summary/summarizerNode/summarizerNodeWithGc.ts +73 -27
- package/src/summary/summarizerTypes.ts +19 -14
- package/src/summary/summaryCollection.ts +10 -4
- package/src/summary/summaryFormat.ts +5 -1
- package/src/summary/summaryGenerator.ts +38 -11
- package/src/summary/summaryManager.ts +9 -9
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/container-runtime",
|
|
3
|
-
"version": "2.0.0-dev.
|
|
3
|
+
"version": "2.0.0-dev.5.3.2.178189",
|
|
4
4
|
"description": "Fluid container runtime",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -37,19 +37,18 @@
|
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@fluidframework/common-definitions": "^0.20.1",
|
|
39
39
|
"@fluidframework/common-utils": "^1.1.1",
|
|
40
|
-
"@fluidframework/container-definitions": "2.0.0-dev.
|
|
41
|
-
"@fluidframework/container-runtime-definitions": "2.0.0-dev.
|
|
42
|
-
"@fluidframework/container-utils": "2.0.0-dev.
|
|
43
|
-
"@fluidframework/core-interfaces": "2.0.0-dev.
|
|
44
|
-
"@fluidframework/
|
|
45
|
-
"@fluidframework/
|
|
46
|
-
"@fluidframework/driver-
|
|
47
|
-
"@fluidframework/
|
|
48
|
-
"@fluidframework/protocol-base": "^0.1039.1000",
|
|
40
|
+
"@fluidframework/container-definitions": "2.0.0-dev.5.3.2.178189",
|
|
41
|
+
"@fluidframework/container-runtime-definitions": "2.0.0-dev.5.3.2.178189",
|
|
42
|
+
"@fluidframework/container-utils": "2.0.0-dev.5.3.2.178189",
|
|
43
|
+
"@fluidframework/core-interfaces": "2.0.0-dev.5.3.2.178189",
|
|
44
|
+
"@fluidframework/core-utils": "2.0.0-dev.5.3.2.178189",
|
|
45
|
+
"@fluidframework/datastore": "2.0.0-dev.5.3.2.178189",
|
|
46
|
+
"@fluidframework/driver-definitions": "2.0.0-dev.5.3.2.178189",
|
|
47
|
+
"@fluidframework/driver-utils": "2.0.0-dev.5.3.2.178189",
|
|
49
48
|
"@fluidframework/protocol-definitions": "^1.1.0",
|
|
50
|
-
"@fluidframework/runtime-definitions": "2.0.0-dev.
|
|
51
|
-
"@fluidframework/runtime-utils": "2.0.0-dev.
|
|
52
|
-
"@fluidframework/telemetry-utils": "2.0.0-dev.
|
|
49
|
+
"@fluidframework/runtime-definitions": "2.0.0-dev.5.3.2.178189",
|
|
50
|
+
"@fluidframework/runtime-utils": "2.0.0-dev.5.3.2.178189",
|
|
51
|
+
"@fluidframework/telemetry-utils": "2.0.0-dev.5.3.2.178189",
|
|
53
52
|
"double-ended-queue": "^2.1.0-0",
|
|
54
53
|
"events": "^3.1.0",
|
|
55
54
|
"lz4js": "^0.2.0",
|
|
@@ -57,15 +56,15 @@
|
|
|
57
56
|
"uuid": "^8.3.1"
|
|
58
57
|
},
|
|
59
58
|
"devDependencies": {
|
|
60
|
-
"@fluid-internal/stochastic-test-utils": "2.0.0-dev.
|
|
61
|
-
"@fluid-tools/benchmark": "^0.
|
|
62
|
-
"@fluid-tools/build-cli": "^0.
|
|
63
|
-
"@fluidframework/build-common": "^1.
|
|
64
|
-
"@fluidframework/build-tools": "^0.
|
|
65
|
-
"@fluidframework/container-runtime-previous": "npm:@fluidframework/container-runtime@2.0.0-internal.
|
|
59
|
+
"@fluid-internal/stochastic-test-utils": "2.0.0-dev.5.3.2.178189",
|
|
60
|
+
"@fluid-tools/benchmark": "^0.48.0",
|
|
61
|
+
"@fluid-tools/build-cli": "^0.21.0",
|
|
62
|
+
"@fluidframework/build-common": "^1.2.0",
|
|
63
|
+
"@fluidframework/build-tools": "^0.21.0",
|
|
64
|
+
"@fluidframework/container-runtime-previous": "npm:@fluidframework/container-runtime@2.0.0-internal.5.2.0",
|
|
66
65
|
"@fluidframework/eslint-config-fluid": "^2.0.0",
|
|
67
|
-
"@fluidframework/mocha-test-setup": "2.0.0-dev.
|
|
68
|
-
"@fluidframework/test-runtime-utils": "2.0.0-dev.
|
|
66
|
+
"@fluidframework/mocha-test-setup": "2.0.0-dev.5.3.2.178189",
|
|
67
|
+
"@fluidframework/test-runtime-utils": "2.0.0-dev.5.3.2.178189",
|
|
69
68
|
"@microsoft/api-extractor": "^7.34.4",
|
|
70
69
|
"@types/double-ended-queue": "^2.1.0",
|
|
71
70
|
"@types/events": "^3.0.0",
|
|
@@ -87,29 +86,14 @@
|
|
|
87
86
|
"typescript": "~4.5.5"
|
|
88
87
|
},
|
|
89
88
|
"typeValidation": {
|
|
90
|
-
"broken": {
|
|
91
|
-
"EnumDeclaration_ContainerMessageType": {
|
|
92
|
-
"backCompat": false
|
|
93
|
-
},
|
|
94
|
-
"ClassDeclaration_ContainerRuntime": {
|
|
95
|
-
"forwardCompat": false
|
|
96
|
-
},
|
|
97
|
-
"InterfaceDeclaration_ContainerRuntimeMessage": {
|
|
98
|
-
"backCompat": false
|
|
99
|
-
},
|
|
100
|
-
"InterfaceDeclaration_IChunkedOp": {
|
|
101
|
-
"backCompat": false
|
|
102
|
-
}
|
|
103
|
-
}
|
|
89
|
+
"broken": {}
|
|
104
90
|
},
|
|
105
91
|
"scripts": {
|
|
106
|
-
"build": "
|
|
107
|
-
"build:commonjs": "
|
|
108
|
-
"build:compile": "
|
|
92
|
+
"build": "fluid-build . --task build",
|
|
93
|
+
"build:commonjs": "fluid-build . --task commonjs",
|
|
94
|
+
"build:compile": "fluid-build . --task compile",
|
|
109
95
|
"build:docs": "api-extractor run --local --typescript-compiler-folder ../../../node_modules/typescript && copyfiles -u 1 ./_api-extractor-temp/doc-models/* ../../../_api-extractor-temp/",
|
|
110
96
|
"build:esnext": "tsc --project ./tsconfig.esnext.json",
|
|
111
|
-
"build:full": "npm run build",
|
|
112
|
-
"build:full:compile": "npm run build:compile",
|
|
113
97
|
"build:genver": "gen-version",
|
|
114
98
|
"build:test": "tsc --project ./src/test/tsconfig.json",
|
|
115
99
|
"ci:build:docs": "api-extractor run --typescript-compiler-folder ../../../node_modules/typescript && copyfiles -u 1 ./_api-extractor-temp/doc-models/* ../../../_api-extractor-temp/",
|
|
@@ -129,6 +113,6 @@
|
|
|
129
113
|
"tsc": "tsc",
|
|
130
114
|
"tsc:watch": "tsc --watch",
|
|
131
115
|
"typetests:gen": "fluid-type-test-generator",
|
|
132
|
-
"typetests:prepare": "flub
|
|
116
|
+
"typetests:prepare": "flub typetests --dir . --reset --previous --normalize"
|
|
133
117
|
}
|
|
134
118
|
}
|
package/src/batchTracker.ts
CHANGED
|
@@ -4,20 +4,19 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { EventEmitter } from "events";
|
|
7
|
-
import {
|
|
7
|
+
import { ITelemetryLoggerExt, ChildLogger } from "@fluidframework/telemetry-utils";
|
|
8
8
|
import { assert, performance } from "@fluidframework/common-utils";
|
|
9
9
|
import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
|
|
10
|
-
import { ChildLogger } from "@fluidframework/telemetry-utils";
|
|
11
10
|
|
|
12
11
|
export class BatchTracker {
|
|
13
|
-
private readonly logger:
|
|
12
|
+
private readonly logger: ITelemetryLoggerExt;
|
|
14
13
|
private startBatchSequenceNumber: number | undefined;
|
|
15
14
|
private trackedBatchCount: number = 0;
|
|
16
15
|
private batchProcessingStartTimeStamp: number | undefined;
|
|
17
16
|
|
|
18
17
|
constructor(
|
|
19
18
|
private readonly batchEventEmitter: EventEmitter,
|
|
20
|
-
logger:
|
|
19
|
+
logger: ITelemetryLoggerExt,
|
|
21
20
|
batchLengthThreshold: number,
|
|
22
21
|
batchCountSamplingRate: number,
|
|
23
22
|
dateTimeProvider: () => number = () => performance.now(),
|
|
@@ -72,13 +71,13 @@ export class BatchTracker {
|
|
|
72
71
|
* Track batch sizes in terms of op counts and processing times
|
|
73
72
|
*
|
|
74
73
|
* @param batchEventEmitter - event emitter which tracks the lifecycle of batch operations
|
|
75
|
-
* @param logger - See {@link @fluidframework/common-definitions#
|
|
74
|
+
* @param logger - See {@link @fluidframework/common-definitions#ITelemetryLoggerExt}
|
|
76
75
|
* @param batchLengthThreshold - threshold for the length of a batch when to send an error event
|
|
77
76
|
* @param batchCountSamplingRate - rate for batches for which to send an event with its characteristics
|
|
78
77
|
*/
|
|
79
78
|
export const BindBatchTracker = (
|
|
80
79
|
batchEventEmitter: EventEmitter,
|
|
81
|
-
logger:
|
|
80
|
+
logger: ITelemetryLoggerExt,
|
|
82
81
|
batchLengthThreshold: number = 1000,
|
|
83
82
|
batchCountSamplingRate: number = 1000,
|
|
84
83
|
) => new BatchTracker(batchEventEmitter, logger, batchLengthThreshold, batchCountSamplingRate);
|
package/src/blobManager.ts
CHANGED
|
@@ -45,6 +45,7 @@ import { ContainerRuntime, TombstoneResponseHeaderKey } from "./containerRuntime
|
|
|
45
45
|
import { sendGCUnexpectedUsageEvent, sweepAttachmentBlobsKey, throwOnTombstoneLoadKey } from "./gc";
|
|
46
46
|
import { Throttler, formExponentialFn, IThrottler } from "./throttler";
|
|
47
47
|
import { summarizerClientType } from "./summary";
|
|
48
|
+
import { IBlobMetadata } from "./metadata";
|
|
48
49
|
|
|
49
50
|
/**
|
|
50
51
|
* This class represents blob (long string)
|
|
@@ -61,7 +62,7 @@ export class BlobHandle implements IFluidHandle<ArrayBufferLike> {
|
|
|
61
62
|
}
|
|
62
63
|
|
|
63
64
|
public get isAttached(): boolean {
|
|
64
|
-
return this.attached;
|
|
65
|
+
return this.routeContext.isAttached && this.attached;
|
|
65
66
|
}
|
|
66
67
|
|
|
67
68
|
public readonly absolutePath: string;
|
|
@@ -70,12 +71,16 @@ export class BlobHandle implements IFluidHandle<ArrayBufferLike> {
|
|
|
70
71
|
public readonly path: string,
|
|
71
72
|
public readonly routeContext: IFluidHandleContext,
|
|
72
73
|
public get: () => Promise<any>,
|
|
74
|
+
private readonly onAttachGraph?: () => void,
|
|
73
75
|
) {
|
|
74
76
|
this.absolutePath = generateHandleContextPath(path, this.routeContext);
|
|
75
77
|
}
|
|
76
78
|
|
|
77
79
|
public attachGraph() {
|
|
78
|
-
this.attached
|
|
80
|
+
if (!this.attached) {
|
|
81
|
+
this.attached = true;
|
|
82
|
+
this.onAttachGraph?.();
|
|
83
|
+
}
|
|
79
84
|
}
|
|
80
85
|
|
|
81
86
|
public bind(handle: IFluidHandle) {
|
|
@@ -132,14 +137,22 @@ interface PendingBlob {
|
|
|
132
137
|
blob: ArrayBufferLike;
|
|
133
138
|
status: PendingBlobStatus;
|
|
134
139
|
storageId?: string;
|
|
135
|
-
handleP: Deferred<
|
|
140
|
+
handleP: Deferred<BlobHandle>;
|
|
136
141
|
uploadP?: Promise<ICreateBlobResponse>;
|
|
137
142
|
uploadTime?: number;
|
|
138
143
|
minTTLInSeconds?: number;
|
|
144
|
+
attached?: boolean;
|
|
145
|
+
acked?: boolean;
|
|
139
146
|
}
|
|
140
147
|
|
|
141
148
|
export interface IPendingBlobs {
|
|
142
|
-
[id: string]: {
|
|
149
|
+
[id: string]: {
|
|
150
|
+
blob: string;
|
|
151
|
+
uploadTime?: number;
|
|
152
|
+
minTTLInSeconds?: number;
|
|
153
|
+
attached?: boolean;
|
|
154
|
+
acked?: boolean;
|
|
155
|
+
};
|
|
143
156
|
}
|
|
144
157
|
|
|
145
158
|
export interface IBlobManagerEvents {
|
|
@@ -227,11 +240,14 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
227
240
|
this.runtime.clientDetails.type !== summarizerClientType;
|
|
228
241
|
|
|
229
242
|
this.runtime.on("disconnected", () => this.onDisconnected());
|
|
243
|
+
|
|
230
244
|
this.redirectTable = this.load(snapshot);
|
|
231
245
|
|
|
232
246
|
// Begin uploading stashed blobs from previous container instance
|
|
233
247
|
Object.entries(stashedBlobs).forEach(([localId, entry]) => {
|
|
234
248
|
const blob = stringToBuffer(entry.blob, "base64");
|
|
249
|
+
const attached = entry.attached;
|
|
250
|
+
const acked = entry.acked;
|
|
235
251
|
if (entry.minTTLInSeconds && entry.uploadTime) {
|
|
236
252
|
const timeLapseSinceLocalUpload = (Date.now() - entry.uploadTime) / 1000;
|
|
237
253
|
// stashed entries with more than half-life in storage will not be reuploaded
|
|
@@ -243,6 +259,8 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
243
259
|
uploadP: undefined,
|
|
244
260
|
uploadTime: entry.uploadTime,
|
|
245
261
|
minTTLInSeconds: entry.minTTLInSeconds,
|
|
262
|
+
attached,
|
|
263
|
+
acked,
|
|
246
264
|
});
|
|
247
265
|
return;
|
|
248
266
|
}
|
|
@@ -252,6 +270,8 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
252
270
|
status: PendingBlobStatus.OfflinePendingUpload,
|
|
253
271
|
handleP: new Deferred(),
|
|
254
272
|
uploadP: this.uploadBlob(localId, blob),
|
|
273
|
+
attached,
|
|
274
|
+
acked,
|
|
255
275
|
});
|
|
256
276
|
});
|
|
257
277
|
|
|
@@ -391,13 +411,23 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
391
411
|
);
|
|
392
412
|
}
|
|
393
413
|
|
|
394
|
-
private getBlobHandle(id: string):
|
|
414
|
+
private getBlobHandle(id: string): BlobHandle {
|
|
395
415
|
assert(
|
|
396
416
|
this.redirectTable.has(id) || this.pendingBlobs.has(id),
|
|
397
417
|
0x384 /* requesting handle for unknown blob */,
|
|
398
418
|
);
|
|
399
|
-
|
|
400
|
-
|
|
419
|
+
const pending = this.pendingBlobs.get(id);
|
|
420
|
+
const callback = pending
|
|
421
|
+
? () => {
|
|
422
|
+
pending.attached = true;
|
|
423
|
+
this.deletePendingBlobMaybe(id);
|
|
424
|
+
}
|
|
425
|
+
: undefined;
|
|
426
|
+
return new BlobHandle(
|
|
427
|
+
`${BlobManager.basePath}/${id}`,
|
|
428
|
+
this.routeContext,
|
|
429
|
+
async () => this.getBlob(id),
|
|
430
|
+
callback,
|
|
401
431
|
);
|
|
402
432
|
}
|
|
403
433
|
|
|
@@ -433,6 +463,8 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
433
463
|
status: PendingBlobStatus.OnlinePendingUpload,
|
|
434
464
|
handleP: new Deferred(),
|
|
435
465
|
uploadP: this.uploadBlob(localId, blob),
|
|
466
|
+
attached: false,
|
|
467
|
+
acked: false,
|
|
436
468
|
};
|
|
437
469
|
this.pendingBlobs.set(localId, pendingEntry);
|
|
438
470
|
|
|
@@ -459,18 +491,21 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
459
491
|
this.redirectTable.set(fromId, toId);
|
|
460
492
|
}
|
|
461
493
|
|
|
462
|
-
private
|
|
494
|
+
private deletePendingBlobMaybe(id: string) {
|
|
463
495
|
if (this.pendingBlobs.has(id)) {
|
|
464
|
-
this.pendingBlobs.
|
|
465
|
-
if (
|
|
466
|
-
this.
|
|
496
|
+
const entry = this.pendingBlobs.get(id);
|
|
497
|
+
if (entry?.attached && entry?.acked) {
|
|
498
|
+
this.pendingBlobs.delete(id);
|
|
499
|
+
if (!this.hasPendingBlobs) {
|
|
500
|
+
this.emit("noPendingBlobs");
|
|
501
|
+
}
|
|
467
502
|
}
|
|
468
503
|
}
|
|
469
504
|
}
|
|
470
505
|
|
|
471
506
|
private onUploadResolve(localId: string, response: ICreateBlobResponseWithTTL) {
|
|
472
507
|
const entry = this.pendingBlobs.get(localId);
|
|
473
|
-
assert(entry !== undefined,
|
|
508
|
+
assert(entry !== undefined, 0x6c8 /* pending blob entry not found for uploaded blob */);
|
|
474
509
|
assert(
|
|
475
510
|
entry.status === PendingBlobStatus.OnlinePendingUpload ||
|
|
476
511
|
entry.status === PendingBlobStatus.OfflinePendingUpload,
|
|
@@ -493,7 +528,7 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
493
528
|
// happened before and so, the server won't delete it.
|
|
494
529
|
this.setRedirection(localId, response.id);
|
|
495
530
|
entry.handleP.resolve(this.getBlobHandle(localId));
|
|
496
|
-
this.
|
|
531
|
+
this.deletePendingBlobMaybe(localId);
|
|
497
532
|
} else {
|
|
498
533
|
// If there is already an op for this storage ID, append the local ID to the list. Once any op for
|
|
499
534
|
// this storage ID is ack'd, all pending blobs for it can be resolved since the op will keep the
|
|
@@ -594,8 +629,8 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
594
629
|
}
|
|
595
630
|
|
|
596
631
|
public processBlobAttachOp(message: ISequencedDocumentMessage, local: boolean) {
|
|
597
|
-
const localId = message.metadata?.localId;
|
|
598
|
-
const blobId = message.metadata?.blobId;
|
|
632
|
+
const localId = (message.metadata as IBlobMetadata | undefined)?.localId;
|
|
633
|
+
const blobId = (message.metadata as IBlobMetadata | undefined)?.blobId;
|
|
599
634
|
assert(blobId !== undefined, 0x12a /* "Missing blob id on metadata" */);
|
|
600
635
|
|
|
601
636
|
// Set up a mapping from local ID to storage ID. This is crucial since without this the blob cannot be
|
|
@@ -616,23 +651,29 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
616
651
|
// This is safe because the server will keep the blob alive and the op containing the local ID to
|
|
617
652
|
// storage ID is already in flight and any op containing this local ID will be sequenced after that.
|
|
618
653
|
waitingBlobs.forEach((pendingLocalId) => {
|
|
619
|
-
const
|
|
654
|
+
const entry = this.pendingBlobs.get(pendingLocalId);
|
|
620
655
|
assert(
|
|
621
|
-
|
|
656
|
+
entry !== undefined,
|
|
622
657
|
0x38f /* local online BlobAttach op with no pending blob entry */,
|
|
623
658
|
);
|
|
624
659
|
|
|
625
660
|
// It's possible we transitioned to offline flow while waiting for this op.
|
|
626
|
-
if (
|
|
661
|
+
if (entry.status === PendingBlobStatus.OnlinePendingOp) {
|
|
627
662
|
this.setRedirection(pendingLocalId, blobId);
|
|
628
|
-
|
|
629
|
-
this.
|
|
663
|
+
entry.acked = true;
|
|
664
|
+
entry.handleP.resolve(this.getBlobHandle(pendingLocalId));
|
|
665
|
+
this.deletePendingBlobMaybe(pendingLocalId);
|
|
630
666
|
}
|
|
631
667
|
});
|
|
632
668
|
this.opsInFlight.delete(blobId);
|
|
633
669
|
}
|
|
634
|
-
//
|
|
635
|
-
|
|
670
|
+
// offline flow does not resolve the handle (since it was already resolved)
|
|
671
|
+
// but we still need to delete the entry in case is acked and attached.
|
|
672
|
+
const localEntry = this.pendingBlobs.get(localId);
|
|
673
|
+
if (localEntry) {
|
|
674
|
+
localEntry.acked = true;
|
|
675
|
+
this.deletePendingBlobMaybe(localId);
|
|
676
|
+
}
|
|
636
677
|
}
|
|
637
678
|
}
|
|
638
679
|
|
|
@@ -905,13 +946,13 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
905
946
|
public getPendingBlobs(): IPendingBlobs {
|
|
906
947
|
const blobs = {};
|
|
907
948
|
for (const [key, entry] of this.pendingBlobs) {
|
|
908
|
-
blobs[key] =
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
949
|
+
blobs[key] = {
|
|
950
|
+
blob: bufferToString(entry.blob, "base64"),
|
|
951
|
+
attached: entry.attached,
|
|
952
|
+
acked: entry.acked,
|
|
953
|
+
minTTLInSeconds: entry.minTTLInSeconds,
|
|
954
|
+
uploadTime: entry.uploadTime,
|
|
955
|
+
};
|
|
915
956
|
}
|
|
916
957
|
return blobs;
|
|
917
958
|
}
|
|
@@ -3,8 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import {
|
|
7
|
-
import { ChildLogger, TelemetryLogger } from "@fluidframework/telemetry-utils";
|
|
6
|
+
import { ITelemetryLoggerExt, ChildLogger, TelemetryLogger } from "@fluidframework/telemetry-utils";
|
|
8
7
|
import { IDeltaManager } from "@fluidframework/container-definitions";
|
|
9
8
|
import {
|
|
10
9
|
IDocumentMessage,
|
|
@@ -69,12 +68,12 @@ class OpPerfTelemetry {
|
|
|
69
68
|
private connectionStartTime = 0;
|
|
70
69
|
private gap = 0;
|
|
71
70
|
|
|
72
|
-
private readonly logger:
|
|
71
|
+
private readonly logger: ITelemetryLoggerExt;
|
|
73
72
|
|
|
74
73
|
public constructor(
|
|
75
74
|
private clientId: string | undefined,
|
|
76
75
|
private readonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>,
|
|
77
|
-
logger:
|
|
76
|
+
logger: ITelemetryLoggerExt,
|
|
78
77
|
) {
|
|
79
78
|
this.logger = ChildLogger.create(logger, "OpPerf");
|
|
80
79
|
|
|
@@ -188,7 +187,16 @@ class OpPerfTelemetry {
|
|
|
188
187
|
|
|
189
188
|
private recordPingTime(latency: number) {
|
|
190
189
|
this.pingLatency = latency;
|
|
191
|
-
|
|
190
|
+
|
|
191
|
+
// Log if latency is longer than 1 min
|
|
192
|
+
if (latency > 1000 * 60) {
|
|
193
|
+
this.logger.sendErrorEvent({
|
|
194
|
+
eventName: "LatencyTooLong",
|
|
195
|
+
duration: latency,
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// logging one in every 100 pongs, including the first time, if it is a "write" client.
|
|
192
200
|
if (this.pongCount % 100 === 0 && this.deltaManager.active) {
|
|
193
201
|
this.logger.sendPerformanceEvent({
|
|
194
202
|
eventName: "DeltaLatency",
|
|
@@ -314,7 +322,7 @@ export interface IPerfSignalReport {
|
|
|
314
322
|
export function ReportOpPerfTelemetry(
|
|
315
323
|
clientId: string | undefined,
|
|
316
324
|
deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>,
|
|
317
|
-
logger:
|
|
325
|
+
logger: ITelemetryLoggerExt,
|
|
318
326
|
) {
|
|
319
327
|
new OpPerfTelemetry(clientId, deltaManager, logger);
|
|
320
328
|
}
|