@fluidframework/container-runtime 2.20.0 → 2.21.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/.eslintrc.cjs +36 -6
- package/CHANGELOG.md +38 -0
- package/api-report/container-runtime.legacy.alpha.api.md +31 -31
- package/dist/batchTracker.d.ts +1 -2
- package/dist/batchTracker.d.ts.map +1 -1
- package/dist/batchTracker.js +1 -1
- package/dist/batchTracker.js.map +1 -1
- package/dist/blobManager/blobManager.d.ts.map +1 -1
- package/dist/blobManager/blobManager.js +14 -11
- package/dist/blobManager/blobManager.js.map +1 -1
- package/dist/blobManager/blobManagerSnapSum.d.ts +1 -0
- package/dist/blobManager/blobManagerSnapSum.d.ts.map +1 -1
- package/dist/blobManager/blobManagerSnapSum.js +7 -5
- package/dist/blobManager/blobManagerSnapSum.js.map +1 -1
- package/dist/channelCollection.d.ts.map +1 -1
- package/dist/channelCollection.js +63 -41
- package/dist/channelCollection.js.map +1 -1
- package/dist/connectionTelemetry.d.ts +2 -2
- package/dist/connectionTelemetry.d.ts.map +1 -1
- package/dist/connectionTelemetry.js +4 -4
- package/dist/connectionTelemetry.js.map +1 -1
- package/dist/containerRuntime.d.ts +14 -30
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +264 -194
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStore.js +6 -3
- package/dist/dataStore.js.map +1 -1
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +16 -11
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStoreContexts.d.ts.map +1 -1
- package/dist/dataStoreContexts.js +1 -0
- package/dist/dataStoreContexts.js.map +1 -1
- package/dist/deltaScheduler.d.ts.map +1 -1
- package/dist/deltaScheduler.js +5 -5
- package/dist/deltaScheduler.js.map +1 -1
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +36 -14
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcConfigs.d.ts.map +1 -1
- package/dist/gc/gcConfigs.js +2 -0
- package/dist/gc/gcConfigs.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +8 -0
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js +1 -0
- package/dist/gc/gcDefinitions.js.map +1 -1
- package/dist/gc/gcHelpers.d.ts.map +1 -1
- package/dist/gc/gcHelpers.js +8 -5
- package/dist/gc/gcHelpers.js.map +1 -1
- package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/dist/gc/gcSummaryStateTracker.js +2 -1
- package/dist/gc/gcSummaryStateTracker.js.map +1 -1
- package/dist/gc/gcTelemetry.d.ts.map +1 -1
- package/dist/gc/gcTelemetry.js +29 -15
- package/dist/gc/gcTelemetry.js.map +1 -1
- package/dist/inboundBatchAggregator.js +3 -3
- package/dist/inboundBatchAggregator.js.map +1 -1
- package/dist/layerCompatState.d.ts +19 -0
- package/dist/layerCompatState.d.ts.map +1 -0
- package/dist/layerCompatState.js +64 -0
- package/dist/layerCompatState.js.map +1 -0
- package/dist/messageTypes.d.ts.map +1 -1
- package/dist/messageTypes.js.map +1 -1
- package/dist/opLifecycle/duplicateBatchDetector.js +2 -2
- package/dist/opLifecycle/duplicateBatchDetector.js.map +1 -1
- package/dist/opLifecycle/opCompressor.d.ts +3 -2
- package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opCompressor.js +13 -19
- package/dist/opLifecycle/opCompressor.js.map +1 -1
- package/dist/opLifecycle/opDecompressor.d.ts +3 -0
- package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opDecompressor.js +4 -1
- 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 +5 -3
- package/dist/opLifecycle/opGroupingManager.js.map +1 -1
- package/dist/opLifecycle/opSplitter.d.ts +13 -10
- package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
- package/dist/opLifecycle/opSplitter.js +14 -11
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +3 -3
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +11 -15
- 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 +3 -4
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +11 -10
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/summary/documentSchema.d.ts +7 -0
- package/dist/summary/documentSchema.d.ts.map +1 -1
- package/dist/summary/documentSchema.js +6 -4
- package/dist/summary/documentSchema.js.map +1 -1
- package/dist/summary/orderedClientElection.d.ts +1 -0
- package/dist/summary/orderedClientElection.d.ts.map +1 -1
- package/dist/summary/orderedClientElection.js +13 -11
- package/dist/summary/orderedClientElection.js.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.d.ts +1 -0
- package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.js +7 -2
- package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/dist/summary/runningSummarizer.d.ts +2 -2
- package/dist/summary/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/runningSummarizer.js +38 -17
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summarizer.d.ts +1 -0
- package/dist/summary/summarizer.d.ts.map +1 -1
- package/dist/summary/summarizer.js +18 -9
- package/dist/summary/summarizer.js.map +1 -1
- package/dist/summary/summarizerClientElection.d.ts.map +1 -1
- package/dist/summary/summarizerClientElection.js +1 -0
- package/dist/summary/summarizerClientElection.js.map +1 -1
- package/dist/summary/summarizerHeuristics.js +1 -1
- package/dist/summary/summarizerHeuristics.js.map +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.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.js +30 -31
- package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js +3 -3
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/dist/summary/summarizerTypes.d.ts +7 -0
- package/dist/summary/summarizerTypes.d.ts.map +1 -1
- package/dist/summary/summarizerTypes.js.map +1 -1
- package/dist/summary/summaryCollection.d.ts +3 -4
- package/dist/summary/summaryCollection.d.ts.map +1 -1
- package/dist/summary/summaryCollection.js +9 -6
- package/dist/summary/summaryCollection.js.map +1 -1
- package/dist/summary/summaryFormat.d.ts +4 -1
- package/dist/summary/summaryFormat.d.ts.map +1 -1
- package/dist/summary/summaryFormat.js +3 -2
- package/dist/summary/summaryFormat.js.map +1 -1
- package/dist/summary/summaryGenerator.d.ts.map +1 -1
- package/dist/summary/summaryGenerator.js +19 -8
- package/dist/summary/summaryGenerator.js.map +1 -1
- package/dist/summary/summaryManager.d.ts.map +1 -1
- package/dist/summary/summaryManager.js +12 -9
- package/dist/summary/summaryManager.js.map +1 -1
- package/lib/batchTracker.d.ts +1 -2
- package/lib/batchTracker.d.ts.map +1 -1
- package/lib/batchTracker.js +2 -2
- package/lib/batchTracker.js.map +1 -1
- package/lib/blobManager/blobManager.d.ts.map +1 -1
- package/lib/blobManager/blobManager.js +14 -11
- package/lib/blobManager/blobManager.js.map +1 -1
- package/lib/blobManager/blobManagerSnapSum.d.ts +1 -0
- package/lib/blobManager/blobManagerSnapSum.d.ts.map +1 -1
- package/lib/blobManager/blobManagerSnapSum.js +7 -5
- package/lib/blobManager/blobManagerSnapSum.js.map +1 -1
- package/lib/channelCollection.d.ts.map +1 -1
- package/lib/channelCollection.js +66 -42
- package/lib/channelCollection.js.map +1 -1
- package/lib/connectionTelemetry.d.ts +2 -2
- package/lib/connectionTelemetry.d.ts.map +1 -1
- package/lib/connectionTelemetry.js +5 -5
- package/lib/connectionTelemetry.js.map +1 -1
- package/lib/containerRuntime.d.ts +14 -30
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +271 -196
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStore.js +6 -3
- package/lib/dataStore.js.map +1 -1
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +16 -11
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/dataStoreContexts.d.ts.map +1 -1
- package/lib/dataStoreContexts.js +1 -0
- package/lib/dataStoreContexts.js.map +1 -1
- package/lib/deltaScheduler.d.ts.map +1 -1
- package/lib/deltaScheduler.js +6 -6
- package/lib/deltaScheduler.js.map +1 -1
- package/lib/gc/garbageCollection.d.ts.map +1 -1
- package/lib/gc/garbageCollection.js +39 -15
- package/lib/gc/garbageCollection.js.map +1 -1
- package/lib/gc/gcConfigs.d.ts.map +1 -1
- package/lib/gc/gcConfigs.js +2 -0
- package/lib/gc/gcConfigs.js.map +1 -1
- package/lib/gc/gcDefinitions.d.ts +8 -0
- package/lib/gc/gcDefinitions.d.ts.map +1 -1
- package/lib/gc/gcDefinitions.js +1 -0
- package/lib/gc/gcDefinitions.js.map +1 -1
- package/lib/gc/gcHelpers.d.ts.map +1 -1
- package/lib/gc/gcHelpers.js +8 -5
- package/lib/gc/gcHelpers.js.map +1 -1
- package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/lib/gc/gcSummaryStateTracker.js +2 -1
- package/lib/gc/gcSummaryStateTracker.js.map +1 -1
- package/lib/gc/gcTelemetry.d.ts.map +1 -1
- package/lib/gc/gcTelemetry.js +32 -16
- package/lib/gc/gcTelemetry.js.map +1 -1
- package/lib/inboundBatchAggregator.js +4 -4
- package/lib/inboundBatchAggregator.js.map +1 -1
- package/lib/layerCompatState.d.ts +19 -0
- package/lib/layerCompatState.d.ts.map +1 -0
- package/lib/layerCompatState.js +60 -0
- package/lib/layerCompatState.js.map +1 -0
- package/lib/messageTypes.d.ts.map +1 -1
- package/lib/messageTypes.js.map +1 -1
- package/lib/opLifecycle/duplicateBatchDetector.js +2 -2
- package/lib/opLifecycle/duplicateBatchDetector.js.map +1 -1
- package/lib/opLifecycle/opCompressor.d.ts +3 -2
- package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opCompressor.js +13 -19
- package/lib/opLifecycle/opCompressor.js.map +1 -1
- package/lib/opLifecycle/opDecompressor.d.ts +3 -0
- package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opDecompressor.js +4 -1
- 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 +5 -3
- package/lib/opLifecycle/opGroupingManager.js.map +1 -1
- package/lib/opLifecycle/opSplitter.d.ts +13 -10
- package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
- package/lib/opLifecycle/opSplitter.js +14 -11
- package/lib/opLifecycle/opSplitter.js.map +1 -1
- package/lib/opLifecycle/outbox.d.ts +3 -3
- package/lib/opLifecycle/outbox.d.ts.map +1 -1
- package/lib/opLifecycle/outbox.js +11 -15
- 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 +3 -4
- package/lib/pendingStateManager.d.ts.map +1 -1
- package/lib/pendingStateManager.js +12 -11
- package/lib/pendingStateManager.js.map +1 -1
- package/lib/summary/documentSchema.d.ts +7 -0
- package/lib/summary/documentSchema.d.ts.map +1 -1
- package/lib/summary/documentSchema.js +6 -4
- package/lib/summary/documentSchema.js.map +1 -1
- package/lib/summary/orderedClientElection.d.ts +1 -0
- package/lib/summary/orderedClientElection.d.ts.map +1 -1
- package/lib/summary/orderedClientElection.js +13 -11
- package/lib/summary/orderedClientElection.js.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.d.ts +1 -0
- package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.js +7 -2
- package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/lib/summary/runningSummarizer.d.ts +2 -2
- package/lib/summary/runningSummarizer.d.ts.map +1 -1
- package/lib/summary/runningSummarizer.js +38 -17
- package/lib/summary/runningSummarizer.js.map +1 -1
- package/lib/summary/summarizer.d.ts +1 -0
- package/lib/summary/summarizer.d.ts.map +1 -1
- package/lib/summary/summarizer.js +18 -9
- package/lib/summary/summarizer.js.map +1 -1
- package/lib/summary/summarizerClientElection.d.ts.map +1 -1
- package/lib/summary/summarizerClientElection.js +1 -0
- package/lib/summary/summarizerClientElection.js.map +1 -1
- package/lib/summary/summarizerHeuristics.js +1 -1
- package/lib/summary/summarizerHeuristics.js.map +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.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.js +30 -31
- package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js +3 -3
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/lib/summary/summarizerTypes.d.ts +7 -0
- package/lib/summary/summarizerTypes.d.ts.map +1 -1
- package/lib/summary/summarizerTypes.js.map +1 -1
- package/lib/summary/summaryCollection.d.ts +3 -4
- package/lib/summary/summaryCollection.d.ts.map +1 -1
- package/lib/summary/summaryCollection.js +9 -6
- package/lib/summary/summaryCollection.js.map +1 -1
- package/lib/summary/summaryFormat.d.ts +4 -1
- package/lib/summary/summaryFormat.d.ts.map +1 -1
- package/lib/summary/summaryFormat.js +2 -2
- package/lib/summary/summaryFormat.js.map +1 -1
- package/lib/summary/summaryGenerator.d.ts.map +1 -1
- package/lib/summary/summaryGenerator.js +19 -8
- package/lib/summary/summaryGenerator.js.map +1 -1
- package/lib/summary/summaryManager.d.ts.map +1 -1
- package/lib/summary/summaryManager.js +12 -9
- package/lib/summary/summaryManager.js.map +1 -1
- package/package.json +21 -43
- package/src/batchTracker.ts +3 -3
- package/src/blobManager/blobManager.ts +16 -14
- package/src/blobManager/blobManagerSnapSum.ts +8 -8
- package/src/channelCollection.ts +63 -44
- package/src/connectionTelemetry.ts +12 -6
- package/src/containerRuntime.ts +306 -235
- package/src/dataStore.ts +6 -3
- package/src/dataStoreContext.ts +16 -16
- package/src/dataStoreContexts.ts +1 -0
- package/src/deltaScheduler.ts +6 -6
- package/src/gc/garbageCollection.ts +47 -20
- package/src/gc/gcConfigs.ts +9 -1
- package/src/gc/gcDefinitions.ts +12 -0
- package/src/gc/gcHelpers.ts +9 -4
- package/src/gc/gcSummaryStateTracker.ts +3 -1
- package/src/gc/gcTelemetry.ts +26 -11
- package/src/inboundBatchAggregator.ts +4 -4
- package/src/layerCompatState.ts +75 -0
- package/src/messageTypes.ts +2 -0
- package/src/opLifecycle/README.md +43 -34
- package/src/opLifecycle/duplicateBatchDetector.ts +2 -2
- package/src/opLifecycle/opCompressor.ts +16 -23
- package/src/opLifecycle/opDecompressor.ts +4 -1
- package/src/opLifecycle/opGroupingManager.ts +5 -4
- package/src/opLifecycle/opSplitter.ts +14 -11
- package/src/opLifecycle/outbox.ts +13 -20
- package/src/opLifecycle/remoteMessageProcessor.ts +3 -1
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +15 -10
- package/src/summary/documentSchema.ts +11 -4
- package/src/summary/orderedClientElection.ts +14 -11
- package/src/summary/runWhileConnectedCoordinator.ts +6 -0
- package/src/summary/runningSummarizer.ts +43 -19
- package/src/summary/summarizer.ts +24 -11
- package/src/summary/summarizerClientElection.ts +2 -0
- package/src/summary/summarizerHeuristics.ts +1 -1
- package/src/summary/summarizerNode/index.ts +1 -0
- package/src/summary/summarizerNode/summarizerNode.ts +32 -31
- package/src/summary/summarizerNode/summarizerNodeWithGc.ts +4 -4
- package/src/summary/summarizerTypes.ts +7 -0
- package/src/summary/summaryCollection.ts +19 -8
- package/src/summary/summaryFormat.ts +10 -5
- package/src/summary/summaryGenerator.ts +25 -10
- package/src/summary/summaryManager.ts +14 -12
- package/container-runtime.test-files.tar +0 -0
package/.eslintrc.cjs
CHANGED
|
@@ -4,16 +4,21 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
module.exports = {
|
|
7
|
-
extends: [
|
|
8
|
-
require.resolve("@fluidframework/eslint-config-fluid/minimal-deprecated"),
|
|
9
|
-
"prettier",
|
|
10
|
-
],
|
|
7
|
+
extends: [require.resolve("@fluidframework/eslint-config-fluid"), "prettier"],
|
|
11
8
|
parserOptions: {
|
|
12
9
|
project: ["./tsconfig.json", "./src/test/tsconfig.json"],
|
|
13
10
|
},
|
|
14
11
|
rules: {
|
|
15
12
|
"@typescript-eslint/strict-boolean-expressions": "off",
|
|
13
|
+
|
|
14
|
+
// TODO: fix violations and remove overrides
|
|
16
15
|
"@fluid-internal/fluid/no-unchecked-record-access": "warn",
|
|
16
|
+
"require-atomic-updates": "warn",
|
|
17
|
+
"unicorn/no-array-reduce": "warn",
|
|
18
|
+
|
|
19
|
+
// False positives on non-array `push` methods.
|
|
20
|
+
// TODO:AB#28686: remove this override once this rule has been disabled in the root config.
|
|
21
|
+
"unicorn/no-array-push-push": "off",
|
|
17
22
|
|
|
18
23
|
// #region TODO:AB#3027: remove overrides and upgrade config to `recommended`
|
|
19
24
|
|
|
@@ -38,6 +43,7 @@ module.exports = {
|
|
|
38
43
|
ignoreRestArgs: true,
|
|
39
44
|
},
|
|
40
45
|
],
|
|
46
|
+
"@typescript-eslint/no-unsafe-argument": "error",
|
|
41
47
|
"@typescript-eslint/no-unsafe-assignment": "error",
|
|
42
48
|
"@typescript-eslint/no-unsafe-call": "error",
|
|
43
49
|
"@typescript-eslint/no-unsafe-member-access": "error",
|
|
@@ -46,6 +52,28 @@ module.exports = {
|
|
|
46
52
|
"jsdoc/multiline-blocks": ["error", { noSingleLineBlocks: true }],
|
|
47
53
|
"jsdoc/require-description": ["error", { checkConstructors: false }],
|
|
48
54
|
|
|
55
|
+
"unicorn/catch-error-name": "error",
|
|
56
|
+
"unicorn/consistent-destructuring": "error",
|
|
57
|
+
"unicorn/consistent-function-scoping": "error",
|
|
58
|
+
"unicorn/error-message": "error",
|
|
59
|
+
"unicorn/explicit-length-check": "error",
|
|
60
|
+
"unicorn/new-for-builtins": "error",
|
|
61
|
+
"unicorn/no-array-callback-reference": "error",
|
|
62
|
+
"unicorn/no-array-for-each": "error",
|
|
63
|
+
"unicorn/no-lonely-if": "error",
|
|
64
|
+
"unicorn/no-negated-condition": "error",
|
|
65
|
+
"unicorn/no-new-array": "error",
|
|
66
|
+
"unicorn/no-null": "error",
|
|
67
|
+
"unicorn/no-zero-fractions": "error",
|
|
68
|
+
"unicorn/prefer-includes": "error",
|
|
69
|
+
"unicorn/prefer-node-protocol": "error",
|
|
70
|
+
"unicorn/prefer-number-properties": "error",
|
|
71
|
+
"unicorn/prefer-optional-catch-binding": "error",
|
|
72
|
+
"unicorn/prefer-spread": "error",
|
|
73
|
+
"unicorn/prefer-string-slice": "error",
|
|
74
|
+
"unicorn/switch-case-braces": "error",
|
|
75
|
+
"unicorn/throw-new-error": "error",
|
|
76
|
+
|
|
49
77
|
// #endregion
|
|
50
78
|
},
|
|
51
79
|
overrides: [
|
|
@@ -54,10 +82,12 @@ module.exports = {
|
|
|
54
82
|
files: ["*.spec.ts", "src/test/**"],
|
|
55
83
|
rules: {
|
|
56
84
|
// TODO: remove these overrides and fix violations
|
|
57
|
-
"@typescript-eslint/explicit-function-return-type": "
|
|
85
|
+
"@typescript-eslint/explicit-function-return-type": "warn",
|
|
86
|
+
"unicorn/consistent-function-scoping": "warn",
|
|
87
|
+
"unicorn/error-message": "warn",
|
|
58
88
|
|
|
59
89
|
// Test files are run in node only so additional node libraries can be used.
|
|
60
|
-
"import/no-nodejs-modules": ["error", { allow: ["assert", "crypto"] }],
|
|
90
|
+
"import/no-nodejs-modules": ["error", { allow: ["node:assert", "node:crypto"] }],
|
|
61
91
|
},
|
|
62
92
|
},
|
|
63
93
|
],
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,43 @@
|
|
|
1
1
|
# @fluidframework/container-runtime
|
|
2
2
|
|
|
3
|
+
## 2.21.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- Many unnecessary exports have been deprecated in the container-runtime package ([#23607](https://github.com/microsoft/FluidFramework/pull/23607)) [3da5b427ef](https://github.com/microsoft/FluidFramework/commit/3da5b427ef406799abade04196e43bb6d66d898d)
|
|
8
|
+
|
|
9
|
+
The following types in the `@fluidframework/container-runtime` package are now deprecated. These types are unnecessary for external users of this package.
|
|
10
|
+
|
|
11
|
+
- currentDocumentVersionSchema
|
|
12
|
+
- DeletedResponseHeaderKey
|
|
13
|
+
- DocumentSchemaValueType
|
|
14
|
+
- DocumentsSchemaController
|
|
15
|
+
- GCFeatureMatrix
|
|
16
|
+
- GCNodeType
|
|
17
|
+
- GCVersion
|
|
18
|
+
- IBlobManagerLoadInfo
|
|
19
|
+
- ICancellableSummarizerController
|
|
20
|
+
- ICancellationToken
|
|
21
|
+
- IConnectableRuntime
|
|
22
|
+
- IContainerRuntimeMetadata
|
|
23
|
+
- ICreateContainerMetadata
|
|
24
|
+
- IDocumentSchema
|
|
25
|
+
- IDocumentSchemaChangeMessage
|
|
26
|
+
- IDocumentSchemaCurrent
|
|
27
|
+
- IDocumentSchemaFeatures
|
|
28
|
+
- IGCMetadata
|
|
29
|
+
- IGCStats
|
|
30
|
+
- IMarkPhaseStats
|
|
31
|
+
- IRefreshSummaryAckOptions
|
|
32
|
+
- ISerializedElection
|
|
33
|
+
- ISubmitSummaryOptions
|
|
34
|
+
- ISummarizerInternalsProvider
|
|
35
|
+
- ISummarizerRuntime
|
|
36
|
+
- ISummaryCancellationToken
|
|
37
|
+
- ISummaryMetadataMessage
|
|
38
|
+
- ISweepPhaseStats
|
|
39
|
+
- Summarizer
|
|
40
|
+
|
|
3
41
|
## 2.20.0
|
|
4
42
|
|
|
5
43
|
### Minor Changes
|
|
@@ -32,22 +32,22 @@ export enum ContainerMessageType {
|
|
|
32
32
|
Rejoin = "rejoin"
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
-
// @alpha
|
|
35
|
+
// @alpha @deprecated
|
|
36
36
|
export const currentDocumentVersionSchema = 1;
|
|
37
37
|
|
|
38
38
|
// @alpha (undocumented)
|
|
39
39
|
export const DefaultSummaryConfiguration: ISummaryConfiguration;
|
|
40
40
|
|
|
41
|
-
// @alpha
|
|
41
|
+
// @alpha @deprecated
|
|
42
42
|
export const DeletedResponseHeaderKey = "wasDeleted";
|
|
43
43
|
|
|
44
44
|
// @alpha (undocumented)
|
|
45
45
|
export const disabledCompressionConfig: ICompressionRuntimeOptions;
|
|
46
46
|
|
|
47
|
-
// @alpha
|
|
47
|
+
// @alpha @deprecated
|
|
48
48
|
export type DocumentSchemaValueType = string | string[] | true | number | undefined;
|
|
49
49
|
|
|
50
|
-
// @alpha @sealed
|
|
50
|
+
// @alpha @sealed @deprecated
|
|
51
51
|
export class DocumentsSchemaController {
|
|
52
52
|
constructor(existing: boolean, snapshotSequenceNumber: number, documentMetadataSchema: IDocumentSchema | undefined, features: IDocumentSchemaFeatures, onSchemaChange: (schema: IDocumentSchemaCurrent) => void);
|
|
53
53
|
maybeSendSchemaMessage(): IDocumentSchemaChangeMessage | undefined;
|
|
@@ -73,7 +73,7 @@ export type EnqueueSummarizeResult = (ISummarizeResults & {
|
|
|
73
73
|
readonly overridden?: undefined;
|
|
74
74
|
};
|
|
75
75
|
|
|
76
|
-
// @alpha (undocumented)
|
|
76
|
+
// @alpha @deprecated (undocumented)
|
|
77
77
|
export type GCFeatureMatrix = {
|
|
78
78
|
gcGeneration?: number;
|
|
79
79
|
tombstoneGeneration?: undefined;
|
|
@@ -81,7 +81,7 @@ export type GCFeatureMatrix = {
|
|
|
81
81
|
tombstoneGeneration: number;
|
|
82
82
|
};
|
|
83
83
|
|
|
84
|
-
// @alpha
|
|
84
|
+
// @alpha @deprecated
|
|
85
85
|
export const GCNodeType: {
|
|
86
86
|
readonly DataStore: "DataStore";
|
|
87
87
|
readonly SubDataStore: "SubDataStore";
|
|
@@ -89,10 +89,10 @@ export const GCNodeType: {
|
|
|
89
89
|
readonly Other: "Other";
|
|
90
90
|
};
|
|
91
91
|
|
|
92
|
-
// @alpha (undocumented)
|
|
92
|
+
// @alpha @deprecated (undocumented)
|
|
93
93
|
export type GCNodeType = (typeof GCNodeType)[keyof typeof GCNodeType];
|
|
94
94
|
|
|
95
|
-
// @alpha (undocumented)
|
|
95
|
+
// @alpha @deprecated (undocumented)
|
|
96
96
|
export type GCVersion = number;
|
|
97
97
|
|
|
98
98
|
// @alpha
|
|
@@ -121,7 +121,7 @@ export interface IBaseSummarizeResult {
|
|
|
121
121
|
readonly stage: "base";
|
|
122
122
|
}
|
|
123
123
|
|
|
124
|
-
// @alpha
|
|
124
|
+
// @alpha @deprecated
|
|
125
125
|
export interface IBlobManagerLoadInfo {
|
|
126
126
|
// (undocumented)
|
|
127
127
|
ids?: string[];
|
|
@@ -137,13 +137,13 @@ export interface IBroadcastSummaryResult {
|
|
|
137
137
|
readonly summarizeOp: ISummaryOpMessage;
|
|
138
138
|
}
|
|
139
139
|
|
|
140
|
-
// @alpha
|
|
140
|
+
// @alpha @deprecated
|
|
141
141
|
export interface ICancellableSummarizerController extends ISummaryCancellationToken {
|
|
142
142
|
// (undocumented)
|
|
143
143
|
stop(reason: SummarizerStopReason): void;
|
|
144
144
|
}
|
|
145
145
|
|
|
146
|
-
// @alpha
|
|
146
|
+
// @alpha @deprecated
|
|
147
147
|
export interface ICancellationToken<T> {
|
|
148
148
|
readonly cancelled: boolean;
|
|
149
149
|
readonly waitCancelled: Promise<T>;
|
|
@@ -163,7 +163,7 @@ export interface ICompressionRuntimeOptions {
|
|
|
163
163
|
readonly minimumBatchSizeInBytes: number;
|
|
164
164
|
}
|
|
165
165
|
|
|
166
|
-
// @alpha (undocumented)
|
|
166
|
+
// @alpha @deprecated (undocumented)
|
|
167
167
|
export interface IConnectableRuntime {
|
|
168
168
|
// (undocumented)
|
|
169
169
|
readonly clientId: string | undefined;
|
|
@@ -175,7 +175,7 @@ export interface IConnectableRuntime {
|
|
|
175
175
|
once(event: "connected" | "disconnected" | "dispose", listener: () => void): this;
|
|
176
176
|
}
|
|
177
177
|
|
|
178
|
-
// @alpha (undocumented)
|
|
178
|
+
// @alpha @deprecated (undocumented)
|
|
179
179
|
export interface IContainerRuntimeMetadata extends ICreateContainerMetadata, IGCMetadata {
|
|
180
180
|
readonly disableIsolatedChannels?: true;
|
|
181
181
|
// (undocumented)
|
|
@@ -205,7 +205,7 @@ export interface IContainerRuntimeOptions {
|
|
|
205
205
|
readonly summaryOptions?: ISummaryRuntimeOptions;
|
|
206
206
|
}
|
|
207
207
|
|
|
208
|
-
// @alpha (undocumented)
|
|
208
|
+
// @alpha @deprecated (undocumented)
|
|
209
209
|
export interface ICreateContainerMetadata {
|
|
210
210
|
createContainerRuntimeVersion?: string;
|
|
211
211
|
createContainerTimestamp?: number;
|
|
@@ -214,7 +214,7 @@ export interface ICreateContainerMetadata {
|
|
|
214
214
|
// @alpha
|
|
215
215
|
export type IdCompressorMode = "on" | "delayed" | undefined;
|
|
216
216
|
|
|
217
|
-
// @alpha
|
|
217
|
+
// @alpha @deprecated
|
|
218
218
|
export interface IDocumentSchema {
|
|
219
219
|
// (undocumented)
|
|
220
220
|
refSeq: number;
|
|
@@ -224,10 +224,10 @@ export interface IDocumentSchema {
|
|
|
224
224
|
version: number;
|
|
225
225
|
}
|
|
226
226
|
|
|
227
|
-
// @alpha
|
|
227
|
+
// @alpha @deprecated
|
|
228
228
|
export type IDocumentSchemaChangeMessage = IDocumentSchema;
|
|
229
229
|
|
|
230
|
-
// @alpha
|
|
230
|
+
// @alpha @deprecated
|
|
231
231
|
export type IDocumentSchemaCurrent = {
|
|
232
232
|
version: 1;
|
|
233
233
|
refSeq: number;
|
|
@@ -236,7 +236,7 @@ export type IDocumentSchemaCurrent = {
|
|
|
236
236
|
};
|
|
237
237
|
};
|
|
238
238
|
|
|
239
|
-
// @alpha
|
|
239
|
+
// @alpha @deprecated
|
|
240
240
|
export interface IDocumentSchemaFeatures {
|
|
241
241
|
// (undocumented)
|
|
242
242
|
compressionLz4: boolean;
|
|
@@ -282,7 +282,7 @@ export interface IFluidDataStoreAttributes2 extends OmitAttributesVersions<IFlui
|
|
|
282
282
|
readonly summaryFormatVersion: 2;
|
|
283
283
|
}
|
|
284
284
|
|
|
285
|
-
// @alpha
|
|
285
|
+
// @alpha @deprecated
|
|
286
286
|
export interface IGCMetadata {
|
|
287
287
|
readonly gcFeature?: GCVersion;
|
|
288
288
|
readonly gcFeatureMatrix?: GCFeatureMatrix;
|
|
@@ -301,7 +301,7 @@ export interface IGCRuntimeOptions {
|
|
|
301
301
|
sweepGracePeriodMs?: number;
|
|
302
302
|
}
|
|
303
303
|
|
|
304
|
-
// @alpha
|
|
304
|
+
// @alpha @deprecated
|
|
305
305
|
export interface IGCStats extends IMarkPhaseStats, ISweepPhaseStats {
|
|
306
306
|
}
|
|
307
307
|
|
|
@@ -324,7 +324,7 @@ export interface IGenerateSummaryTreeResult extends Omit<IBaseSummarizeResult, "
|
|
|
324
324
|
readonly summaryTree: ISummaryTree;
|
|
325
325
|
}
|
|
326
326
|
|
|
327
|
-
// @alpha
|
|
327
|
+
// @alpha @deprecated
|
|
328
328
|
export interface IMarkPhaseStats {
|
|
329
329
|
attachmentBlobCount: number;
|
|
330
330
|
dataStoreCount: number;
|
|
@@ -354,7 +354,7 @@ export interface IOnDemandSummarizeOptions extends ISummarizeOptions {
|
|
|
354
354
|
readonly retryOnFailure?: boolean;
|
|
355
355
|
}
|
|
356
356
|
|
|
357
|
-
// @alpha
|
|
357
|
+
// @alpha @deprecated
|
|
358
358
|
export interface IRefreshSummaryAckOptions {
|
|
359
359
|
readonly ackHandle: string;
|
|
360
360
|
readonly proposalHandle: string | undefined;
|
|
@@ -368,7 +368,7 @@ export interface IRetriableFailureError extends Error {
|
|
|
368
368
|
readonly retryAfterSeconds?: number;
|
|
369
369
|
}
|
|
370
370
|
|
|
371
|
-
// @alpha
|
|
371
|
+
// @alpha @deprecated
|
|
372
372
|
export interface ISerializedElection {
|
|
373
373
|
readonly electedClientId: string | undefined;
|
|
374
374
|
readonly electedParentId: string | undefined;
|
|
@@ -383,7 +383,7 @@ export interface ISubmitSummaryOpResult extends Omit<IUploadSummaryResult, "stag
|
|
|
383
383
|
readonly submitOpDuration: number;
|
|
384
384
|
}
|
|
385
385
|
|
|
386
|
-
// @alpha (undocumented)
|
|
386
|
+
// @alpha @deprecated (undocumented)
|
|
387
387
|
export interface ISubmitSummaryOptions extends ISummarizeOptions {
|
|
388
388
|
readonly cancellationToken: ISummaryCancellationToken;
|
|
389
389
|
readonly finalAttempt?: boolean;
|
|
@@ -416,13 +416,13 @@ export interface ISummarizeResults {
|
|
|
416
416
|
readonly summarySubmitted: Promise<SummarizeResultPart<SubmitSummaryResult, SubmitSummaryFailureData>>;
|
|
417
417
|
}
|
|
418
418
|
|
|
419
|
-
// @alpha (undocumented)
|
|
419
|
+
// @alpha @deprecated (undocumented)
|
|
420
420
|
export interface ISummarizerInternalsProvider {
|
|
421
421
|
refreshLatestSummaryAck(options: IRefreshSummaryAckOptions): Promise<void>;
|
|
422
422
|
submitSummary(options: ISubmitSummaryOptions): Promise<SubmitSummaryResult>;
|
|
423
423
|
}
|
|
424
424
|
|
|
425
|
-
// @alpha (undocumented)
|
|
425
|
+
// @alpha @deprecated (undocumented)
|
|
426
426
|
export interface ISummarizerRuntime extends IConnectableRuntime {
|
|
427
427
|
// (undocumented)
|
|
428
428
|
readonly baseLogger: ITelemetryBaseLogger;
|
|
@@ -466,7 +466,7 @@ export interface ISummaryBaseConfiguration {
|
|
|
466
466
|
maxOpsSinceLastSummary: number;
|
|
467
467
|
}
|
|
468
468
|
|
|
469
|
-
// @alpha
|
|
469
|
+
// @alpha @deprecated
|
|
470
470
|
export type ISummaryCancellationToken = ICancellationToken<SummarizerStopReason>;
|
|
471
471
|
|
|
472
472
|
// @alpha (undocumented)
|
|
@@ -504,7 +504,7 @@ export interface ISummaryConfigurationHeuristics extends ISummaryBaseConfigurati
|
|
|
504
504
|
state: "enabled";
|
|
505
505
|
}
|
|
506
506
|
|
|
507
|
-
// @alpha
|
|
507
|
+
// @alpha @deprecated
|
|
508
508
|
export type ISummaryMetadataMessage = Pick<ISequencedDocumentMessage, "clientId" | "clientSequenceNumber" | "minimumSequenceNumber" | "referenceSequenceNumber" | "sequenceNumber" | "timestamp" | "type">;
|
|
509
509
|
|
|
510
510
|
// @alpha
|
|
@@ -530,7 +530,7 @@ export interface ISummaryRuntimeOptions {
|
|
|
530
530
|
summaryConfigOverrides?: ISummaryConfiguration;
|
|
531
531
|
}
|
|
532
532
|
|
|
533
|
-
// @alpha
|
|
533
|
+
// @alpha @deprecated
|
|
534
534
|
export interface ISweepPhaseStats {
|
|
535
535
|
deletedAttachmentBlobCount: number;
|
|
536
536
|
deletedDataStoreCount: number;
|
|
@@ -584,7 +584,7 @@ export interface SubmitSummaryFailureData {
|
|
|
584
584
|
// @alpha
|
|
585
585
|
export type SubmitSummaryResult = IBaseSummarizeResult | IGenerateSummaryTreeResult | IUploadSummaryResult | ISubmitSummaryOpResult;
|
|
586
586
|
|
|
587
|
-
// @alpha
|
|
587
|
+
// @alpha @deprecated
|
|
588
588
|
export class Summarizer extends TypedEventEmitter<ISummarizerEvents> implements ISummarizer {
|
|
589
589
|
constructor(
|
|
590
590
|
runtime: ISummarizerRuntime, configurationGetter: () => ISummaryConfiguration,
|
|
@@ -621,7 +621,7 @@ export type SummarizeResultPart<TSuccess, TFailure = undefined> = {
|
|
|
621
621
|
|
|
622
622
|
// @alpha
|
|
623
623
|
export class SummaryCollection extends TypedEventEmitter<ISummaryCollectionOpEvents> {
|
|
624
|
-
constructor(deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>, logger:
|
|
624
|
+
constructor(deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>, logger: ITelemetryBaseLogger);
|
|
625
625
|
// (undocumented)
|
|
626
626
|
addOpListener(listener: () => void): void;
|
|
627
627
|
createWatcher(clientId: string): IClientSummaryWatcher;
|
package/dist/batchTracker.d.ts
CHANGED
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { EventEmitter } from "@fluid-internal/client-utils";
|
|
6
6
|
import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
|
|
7
|
-
import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils/internal";
|
|
8
7
|
export declare class BatchTracker {
|
|
9
8
|
private readonly batchEventEmitter;
|
|
10
9
|
private readonly logger;
|
|
@@ -21,5 +20,5 @@ export declare class BatchTracker {
|
|
|
21
20
|
* @param batchLengthThreshold - threshold for the length of a batch when to send an error event
|
|
22
21
|
* @param batchCountSamplingRate - rate for batches for which to send an event with its characteristics
|
|
23
22
|
*/
|
|
24
|
-
export declare const BindBatchTracker: (batchEventEmitter: EventEmitter, logger:
|
|
23
|
+
export declare const BindBatchTracker: (batchEventEmitter: EventEmitter, logger: ITelemetryBaseLogger, batchLengthThreshold?: number, batchCountSamplingRate?: number) => BatchTracker;
|
|
25
24
|
//# sourceMappingURL=batchTracker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batchTracker.d.ts","sourceRoot":"","sources":["../src/batchTracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"batchTracker.d.ts","sourceRoot":"","sources":["../src/batchTracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAUvE,qBAAa,YAAY;IAOvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IANnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,wBAAwB,CAAqB;IACrD,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,6BAA6B,CAAqB;gBAGxC,iBAAiB,EAAE,YAAY,EAChD,MAAM,EAAE,oBAAoB,EAC5B,oBAAoB,EAAE,MAAM,EAC5B,sBAAsB,EAAE,MAAM,EAC9B,gBAAgB,GAAE,MAAM,MAA+B;CA2CxD;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,sBACT,YAAY,UACvB,oBAAoB,yBACN,MAAM,2BACJ,MAAM,KAC5B,YACuF,CAAC"}
|
package/dist/batchTracker.js
CHANGED
|
@@ -9,7 +9,7 @@ const client_utils_1 = require("@fluid-internal/client-utils");
|
|
|
9
9
|
const internal_1 = require("@fluidframework/core-utils/internal");
|
|
10
10
|
const internal_2 = require("@fluidframework/telemetry-utils/internal");
|
|
11
11
|
class BatchTracker {
|
|
12
|
-
constructor(batchEventEmitter, logger, batchLengthThreshold, batchCountSamplingRate, dateTimeProvider = () => client_utils_1.
|
|
12
|
+
constructor(batchEventEmitter, logger, batchLengthThreshold, batchCountSamplingRate, dateTimeProvider = () => (0, client_utils_1.performanceNow)()) {
|
|
13
13
|
this.batchEventEmitter = batchEventEmitter;
|
|
14
14
|
this.trackedBatchCount = 0;
|
|
15
15
|
this.logger = (0, internal_2.createChildLogger)({ logger, namespace: "Batching" });
|
package/dist/batchTracker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batchTracker.js","sourceRoot":"","sources":["../src/batchTracker.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,+
|
|
1
|
+
{"version":3,"file":"batchTracker.js","sourceRoot":"","sources":["../src/batchTracker.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,+DAA8D;AAE9D,kEAA6D;AAE7D,uEAGkD;AAIlD,MAAa,YAAY;IAMxB,YACkB,iBAA+B,EAChD,MAA4B,EAC5B,oBAA4B,EAC5B,sBAA8B,EAC9B,mBAAiC,GAAG,EAAE,CAAC,IAAA,6BAAc,GAAE;QAJtC,sBAAiB,GAAjB,iBAAiB,CAAc;QAJzC,sBAAiB,GAAW,CAAC,CAAC;QAUrC,IAAI,CAAC,MAAM,GAAG,IAAA,4BAAiB,EAAC,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;QAEnE,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,OAA4B,EAAE,EAAE;YACxE,IAAI,CAAC,wBAAwB,GAAG,OAAO,CAAC,cAAc,CAAC;YACvD,IAAI,CAAC,6BAA6B,GAAG,gBAAgB,EAAE,CAAC;YACxD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,KAAc,EAAE,OAA4B,EAAE,EAAE;YACtF,IAAA,iBAAM,EACL,IAAI,CAAC,wBAAwB,KAAK,SAAS;gBAC1C,IAAI,CAAC,6BAA6B,KAAK,SAAS,EACjD,KAAK,CAAC,4CAA4C,CAClD,CAAC;YAEF,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,wBAAwB,GAAG,CAAC,CAAC;YAC1E,IAAI,MAAM,IAAI,oBAAoB,EAAE,CAAC;gBACpC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;oBAChC,SAAS,EAAE,cAAc;oBACzB,MAAM;oBACN,SAAS,EAAE,oBAAoB;oBAC/B,sBAAsB,EAAE,OAAO,CAAC,cAAc;oBAC9C,QAAQ,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,6BAA6B;oBACjE,UAAU,EAAE,KAAK,KAAK,SAAS;iBAC/B,CAAC,CAAC;YACJ,CAAC;YAED,IAAI,IAAI,CAAC,iBAAiB,GAAG,sBAAsB,KAAK,CAAC,EAAE,CAAC;gBAC3D,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;oBAChC,SAAS,EAAE,QAAQ;oBACnB,MAAM;oBACN,YAAY,EAAE,sBAAsB;oBACpC,sBAAsB,EAAE,OAAO,CAAC,cAAc;oBAC9C,QAAQ,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,6BAA6B;iBACjE,CAAC,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,wBAAwB,GAAG,SAAS,CAAC;YAC1C,IAAI,CAAC,6BAA6B,GAAG,SAAS,CAAC;QAChD,CAAC,CAAC,CAAC;IACJ,CAAC;CACD;AAtDD,oCAsDC;AAED;;;;;;;GAOG;AACI,MAAM,gBAAgB,GAAG,CAC/B,iBAA+B,EAC/B,MAA4B,EAC5B,uBAA+B,IAAI,EACnC,yBAAiC,IAAI,EACtB,EAAE,CACjB,IAAI,YAAY,CAAC,iBAAiB,EAAE,MAAM,EAAE,oBAAoB,EAAE,sBAAsB,CAAC,CAAC;AAN9E,QAAA,gBAAgB,oBAM8D","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport type { EventEmitter } from \"@fluid-internal/client-utils\";\nimport { performanceNow } from \"@fluid-internal/client-utils\";\nimport { ITelemetryBaseLogger } from \"@fluidframework/core-interfaces\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { ISequencedDocumentMessage } from \"@fluidframework/driver-definitions/internal\";\nimport {\n\tITelemetryLoggerExt,\n\tcreateChildLogger,\n} from \"@fluidframework/telemetry-utils/internal\";\n\ntype BatchTrackerMessage = Pick<ISequencedDocumentMessage, \"sequenceNumber\">;\n\nexport class BatchTracker {\n\tprivate readonly logger: ITelemetryLoggerExt;\n\tprivate startBatchSequenceNumber: number | undefined;\n\tprivate trackedBatchCount: number = 0;\n\tprivate batchProcessingStartTimeStamp: number | undefined;\n\n\tconstructor(\n\t\tprivate readonly batchEventEmitter: EventEmitter,\n\t\tlogger: ITelemetryBaseLogger,\n\t\tbatchLengthThreshold: number,\n\t\tbatchCountSamplingRate: number,\n\t\tdateTimeProvider: () => number = () => performanceNow(),\n\t) {\n\t\tthis.logger = createChildLogger({ logger, namespace: \"Batching\" });\n\n\t\tthis.batchEventEmitter.on(\"batchBegin\", (message: BatchTrackerMessage) => {\n\t\t\tthis.startBatchSequenceNumber = message.sequenceNumber;\n\t\t\tthis.batchProcessingStartTimeStamp = dateTimeProvider();\n\t\t\tthis.trackedBatchCount++;\n\t\t});\n\n\t\tthis.batchEventEmitter.on(\"batchEnd\", (error: unknown, message: BatchTrackerMessage) => {\n\t\t\tassert(\n\t\t\t\tthis.startBatchSequenceNumber !== undefined &&\n\t\t\t\t\tthis.batchProcessingStartTimeStamp !== undefined,\n\t\t\t\t0x2ba /* \"batchBegin must fire before batchEnd\" */,\n\t\t\t);\n\n\t\t\tconst length = message.sequenceNumber - this.startBatchSequenceNumber + 1;\n\t\t\tif (length >= batchLengthThreshold) {\n\t\t\t\tthis.logger.sendPerformanceEvent({\n\t\t\t\t\teventName: \"LengthTooBig\",\n\t\t\t\t\tlength,\n\t\t\t\t\tthreshold: batchLengthThreshold,\n\t\t\t\t\tbatchEndSequenceNumber: message.sequenceNumber,\n\t\t\t\t\tduration: dateTimeProvider() - this.batchProcessingStartTimeStamp,\n\t\t\t\t\tbatchError: error !== undefined,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (this.trackedBatchCount % batchCountSamplingRate === 0) {\n\t\t\t\tthis.logger.sendPerformanceEvent({\n\t\t\t\t\teventName: \"Length\",\n\t\t\t\t\tlength,\n\t\t\t\t\tsamplingRate: batchCountSamplingRate,\n\t\t\t\t\tbatchEndSequenceNumber: message.sequenceNumber,\n\t\t\t\t\tduration: dateTimeProvider() - this.batchProcessingStartTimeStamp,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tthis.startBatchSequenceNumber = undefined;\n\t\t\tthis.batchProcessingStartTimeStamp = undefined;\n\t\t});\n\t}\n}\n\n/**\n * Track batch sizes in terms of op counts and processing times\n *\n * @param batchEventEmitter - event emitter which tracks the lifecycle of batch operations\n * @param logger - See {@link @fluidframework/core-interfaces#ITelemetryLoggerExt}\n * @param batchLengthThreshold - threshold for the length of a batch when to send an error event\n * @param batchCountSamplingRate - rate for batches for which to send an event with its characteristics\n */\nexport const BindBatchTracker = (\n\tbatchEventEmitter: EventEmitter,\n\tlogger: ITelemetryBaseLogger,\n\tbatchLengthThreshold: number = 1000,\n\tbatchCountSamplingRate: number = 1000,\n): BatchTracker =>\n\tnew BatchTracker(batchEventEmitter, logger, batchLengthThreshold, batchCountSamplingRate);\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blobManager.d.ts","sourceRoot":"","sources":["../../src/blobManager/blobManager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,iBAAiB,EAGjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAe,uBAAuB,EAAE,MAAM,uCAAuC,CAAC;AAC7F,OAAO,EACN,iBAAiB,EACjB,uBAAuB,EACvB,MAAM,wDAAwD,CAAC;AAChE,OAAO,EACN,mBAAmB,EACnB,KAAK,oBAAoB,EACzB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EACN,uBAAuB,EACvB,mBAAmB,EACnB,MAAM,6CAA6C,CAAC;AAErD,OAAO,EACN,sBAAsB,EACtB,qBAAqB,EACrB,iBAAiB,EACjB,KAAK,yBAAyB,EAC9B,MAAM,8CAA8C,CAAC;AACtD,OAAO,EACN,eAAe,EAIf,MAAM,wCAAwC,CAAC;AAahD,OAAO,
|
|
1
|
+
{"version":3,"file":"blobManager.d.ts","sourceRoot":"","sources":["../../src/blobManager/blobManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -80,7 +80,7 @@ class BlobManager extends client_utils_1.TypedEventEmitter {
|
|
|
80
80
|
});
|
|
81
81
|
this.redirectTable = (0, blobManagerSnapSum_js_1.toRedirectTable)(snapshot, this.mc.logger, this.runtime.attachState);
|
|
82
82
|
// Begin uploading stashed blobs from previous container instance
|
|
83
|
-
Object.entries(stashedBlobs ?? {})
|
|
83
|
+
for (const [localId, entry] of Object.entries(stashedBlobs ?? {})) {
|
|
84
84
|
const { acked, storageId, minTTLInSeconds, uploadTime } = entry;
|
|
85
85
|
const blob = (0, client_utils_1.stringToBuffer)(entry.blob, "base64");
|
|
86
86
|
const pendingEntry = {
|
|
@@ -99,7 +99,7 @@ class BlobManager extends client_utils_1.TypedEventEmitter {
|
|
|
99
99
|
const timeLapseSinceLocalUpload = (Date.now() - uploadTime) / 1000;
|
|
100
100
|
// stashed entries with more than half-life in storage will not be reuploaded
|
|
101
101
|
if (minTTLInSeconds - timeLapseSinceLocalUpload > minTTLInSeconds / 2) {
|
|
102
|
-
|
|
102
|
+
continue;
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
105
|
this.pendingStashedBlobs.set(localId, this.uploadBlob(localId, blob));
|
|
@@ -108,7 +108,7 @@ class BlobManager extends client_utils_1.TypedEventEmitter {
|
|
|
108
108
|
...stashedPendingBlobOverrides,
|
|
109
109
|
uploadP: this.pendingStashedBlobs.get(localId),
|
|
110
110
|
});
|
|
111
|
-
}
|
|
111
|
+
}
|
|
112
112
|
this.stashedBlobsUploadP = new internal_1.LazyPromise(async () => internal_4.PerformanceEvent.timedExecAsync(this.mc.logger, { eventName: "BlobUploadProcessStashedChanges", count: this.pendingStashedBlobs.size }, async () => Promise.all(this.pendingStashedBlobs.values()), { start: true, end: true })).finally(() => {
|
|
113
113
|
this.pendingStashedBlobs.clear();
|
|
114
114
|
});
|
|
@@ -156,7 +156,7 @@ class BlobManager extends client_utils_1.TypedEventEmitter {
|
|
|
156
156
|
});
|
|
157
157
|
}
|
|
158
158
|
hasPendingStashedUploads() {
|
|
159
|
-
return
|
|
159
|
+
return [...this.pendingBlobs.values()].some((e) => e.stashedUpload === true);
|
|
160
160
|
}
|
|
161
161
|
async getBlob(blobId) {
|
|
162
162
|
// Verify that the blob is not deleted, i.e., it has not been garbage collected. If it is, this will throw
|
|
@@ -347,7 +347,10 @@ class BlobManager extends client_utils_1.TypedEventEmitter {
|
|
|
347
347
|
// If there is already an op for this storage ID, append the local ID to the list. Once any op for
|
|
348
348
|
// this storage ID is ack'd, all pending blobs for it can be resolved since the op will keep the
|
|
349
349
|
// blob alive in storage.
|
|
350
|
-
this.opsInFlight.set(response.id,
|
|
350
|
+
this.opsInFlight.set(response.id, [
|
|
351
|
+
...(this.opsInFlight.get(response.id) ?? []),
|
|
352
|
+
localId,
|
|
353
|
+
]);
|
|
351
354
|
}
|
|
352
355
|
return response;
|
|
353
356
|
}
|
|
@@ -395,14 +398,14 @@ class BlobManager extends client_utils_1.TypedEventEmitter {
|
|
|
395
398
|
// For each op corresponding to this storage ID that we are waiting for, resolve the pending blob.
|
|
396
399
|
// This is safe because the server will keep the blob alive and the op containing the local ID to
|
|
397
400
|
// storage ID is already in flight and any op containing this local ID will be sequenced after that.
|
|
398
|
-
|
|
401
|
+
for (const pendingLocalId of waitingBlobs) {
|
|
399
402
|
const entry = this.pendingBlobs.get(pendingLocalId);
|
|
400
403
|
(0, internal_1.assert)(entry !== undefined, 0x38f /* local online BlobAttach op with no pending blob entry */);
|
|
401
404
|
this.setRedirection(pendingLocalId, blobId);
|
|
402
405
|
entry.acked = true;
|
|
403
406
|
entry.handleP.resolve(this.getBlobHandle(pendingLocalId));
|
|
404
407
|
this.deletePendingBlobMaybe(pendingLocalId);
|
|
405
|
-
}
|
|
408
|
+
}
|
|
406
409
|
this.opsInFlight.delete(blobId);
|
|
407
410
|
}
|
|
408
411
|
const localEntry = this.pendingBlobs.get(localId);
|
|
@@ -444,7 +447,7 @@ class BlobManager extends client_utils_1.TypedEventEmitter {
|
|
|
444
447
|
*/
|
|
445
448
|
deleteSweepReadyNodes(sweepReadyBlobRoutes) {
|
|
446
449
|
this.deleteBlobsFromRedirectTable(sweepReadyBlobRoutes);
|
|
447
|
-
return
|
|
450
|
+
return [...sweepReadyBlobRoutes];
|
|
448
451
|
}
|
|
449
452
|
/**
|
|
450
453
|
* Delete blobs with the given routes from the redirect table.
|
|
@@ -576,11 +579,11 @@ class BlobManager extends client_utils_1.TypedEventEmitter {
|
|
|
576
579
|
resolve();
|
|
577
580
|
}
|
|
578
581
|
};
|
|
579
|
-
if (
|
|
580
|
-
|
|
582
|
+
if (entry.attached) {
|
|
583
|
+
resolve();
|
|
581
584
|
}
|
|
582
585
|
else {
|
|
583
|
-
|
|
586
|
+
this.on("blobAttached", onBlobAttached);
|
|
584
587
|
}
|
|
585
588
|
}));
|
|
586
589
|
}
|