@fluidframework/container-runtime 2.102.0 → 2.103.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 +4 -0
- package/container-runtime.test-files.tar +0 -0
- package/dist/batchTracker.d.ts +1 -1
- package/dist/batchTracker.d.ts.map +1 -1
- package/dist/batchTracker.js +1 -1
- package/dist/batchTracker.js.map +1 -1
- package/dist/blobManager/blobManagerSnapSum.d.ts +2 -2
- package/dist/blobManager/blobManagerSnapSum.d.ts.map +1 -1
- package/dist/blobManager/blobManagerSnapSum.js.map +1 -1
- package/dist/connectionTelemetry.js.map +1 -1
- package/dist/containerRuntime.d.ts +16 -5
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +112 -9
- 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.map +1 -1
- package/dist/dataStoreContexts.d.ts.map +1 -1
- package/dist/dataStoreContexts.js.map +1 -1
- package/dist/deltaScheduler.d.ts +2 -2
- package/dist/deltaScheduler.d.ts.map +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.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +3 -3
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js.map +1 -1
- package/dist/gc/gcTelemetry.d.ts +3 -3
- package/dist/gc/gcTelemetry.d.ts.map +1 -1
- package/dist/gc/gcTelemetry.js.map +1 -1
- package/dist/inboundBatchAggregator.d.ts +2 -2
- package/dist/inboundBatchAggregator.d.ts.map +1 -1
- package/dist/inboundBatchAggregator.js.map +1 -1
- package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opCompressor.js.map +1 -1
- package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opDecompressor.js.map +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/dist/opLifecycle/opGroupingManager.js.map +1 -1
- package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/pendingStateManager.d.ts +48 -1
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +54 -1
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/runtimeLayerCompatState.d.ts +1 -1
- package/dist/signalTelemetryProcessing.d.ts +2 -2
- package/dist/signalTelemetryProcessing.d.ts.map +1 -1
- package/dist/signalTelemetryProcessing.js.map +1 -1
- package/dist/summary/documentSchema.d.ts +2 -2
- package/dist/summary/documentSchema.d.ts.map +1 -1
- package/dist/summary/documentSchema.js.map +1 -1
- package/dist/summary/orderedClientElection.d.ts +2 -2
- package/dist/summary/orderedClientElection.d.ts.map +1 -1
- package/dist/summary/orderedClientElection.js.map +1 -1
- package/dist/summary/summarizerClientElection.d.ts +2 -2
- package/dist/summary/summarizerClientElection.d.ts.map +1 -1
- package/dist/summary/summarizerClientElection.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.d.ts +3 -3
- package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +2 -2
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/dist/summary/summarizerTypes.d.ts +3 -3
- package/dist/summary/summarizerTypes.d.ts.map +1 -1
- package/dist/summary/summarizerTypes.js.map +1 -1
- package/dist/summary/summaryCollection.d.ts.map +1 -1
- package/dist/summary/summaryCollection.js.map +1 -1
- package/dist/summary/summaryDelayLoadedModule/runningSummarizer.d.ts +2 -2
- package/dist/summary/summaryDelayLoadedModule/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/summaryDelayLoadedModule/runningSummarizer.js.map +1 -1
- package/dist/summary/summaryDelayLoadedModule/summarizer.d.ts +2 -2
- package/dist/summary/summaryDelayLoadedModule/summarizer.d.ts.map +1 -1
- package/dist/summary/summaryDelayLoadedModule/summarizer.js.map +1 -1
- package/dist/summary/summaryDelayLoadedModule/summarizerHeuristics.d.ts +2 -2
- package/dist/summary/summaryDelayLoadedModule/summarizerHeuristics.d.ts.map +1 -1
- package/dist/summary/summaryDelayLoadedModule/summarizerHeuristics.js.map +1 -1
- package/dist/summary/summaryDelayLoadedModule/summaryGenerator.d.ts +2 -2
- package/dist/summary/summaryDelayLoadedModule/summaryGenerator.d.ts.map +1 -1
- package/dist/summary/summaryDelayLoadedModule/summaryGenerator.js.map +1 -1
- package/dist/summary/summaryManager.d.ts.map +1 -1
- package/dist/summary/summaryManager.js.map +1 -1
- package/lib/batchTracker.d.ts +1 -1
- package/lib/batchTracker.d.ts.map +1 -1
- package/lib/batchTracker.js +1 -1
- package/lib/batchTracker.js.map +1 -1
- package/lib/blobManager/blobManagerSnapSum.d.ts +2 -2
- package/lib/blobManager/blobManagerSnapSum.d.ts.map +1 -1
- package/lib/blobManager/blobManagerSnapSum.js.map +1 -1
- package/lib/connectionTelemetry.js.map +1 -1
- package/lib/containerRuntime.d.ts +16 -5
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +112 -9
- 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.map +1 -1
- package/lib/dataStoreContexts.d.ts.map +1 -1
- package/lib/dataStoreContexts.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.map +1 -1
- package/lib/gc/gcDefinitions.d.ts +3 -3
- package/lib/gc/gcDefinitions.d.ts.map +1 -1
- package/lib/gc/gcDefinitions.js.map +1 -1
- package/lib/gc/gcTelemetry.d.ts +3 -3
- package/lib/gc/gcTelemetry.d.ts.map +1 -1
- package/lib/gc/gcTelemetry.js.map +1 -1
- package/lib/inboundBatchAggregator.d.ts +2 -2
- package/lib/inboundBatchAggregator.d.ts.map +1 -1
- package/lib/inboundBatchAggregator.js.map +1 -1
- package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opCompressor.js.map +1 -1
- package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opDecompressor.js.map +1 -1
- package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/lib/opLifecycle/opGroupingManager.js.map +1 -1
- package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
- package/lib/opLifecycle/opSplitter.js.map +1 -1
- package/lib/opLifecycle/outbox.d.ts.map +1 -1
- package/lib/opLifecycle/outbox.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/pendingStateManager.d.ts +48 -1
- package/lib/pendingStateManager.d.ts.map +1 -1
- package/lib/pendingStateManager.js +54 -1
- package/lib/pendingStateManager.js.map +1 -1
- package/lib/runtimeLayerCompatState.d.ts +1 -1
- package/lib/signalTelemetryProcessing.d.ts +2 -2
- package/lib/signalTelemetryProcessing.d.ts.map +1 -1
- package/lib/signalTelemetryProcessing.js.map +1 -1
- package/lib/summary/documentSchema.d.ts +2 -2
- package/lib/summary/documentSchema.d.ts.map +1 -1
- package/lib/summary/documentSchema.js.map +1 -1
- package/lib/summary/orderedClientElection.d.ts +2 -2
- package/lib/summary/orderedClientElection.d.ts.map +1 -1
- package/lib/summary/orderedClientElection.js.map +1 -1
- package/lib/summary/summarizerClientElection.d.ts +2 -2
- package/lib/summary/summarizerClientElection.d.ts.map +1 -1
- package/lib/summary/summarizerClientElection.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.d.ts +3 -3
- package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts +2 -2
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/lib/summary/summarizerTypes.d.ts +3 -3
- package/lib/summary/summarizerTypes.d.ts.map +1 -1
- package/lib/summary/summarizerTypes.js.map +1 -1
- package/lib/summary/summaryCollection.d.ts.map +1 -1
- package/lib/summary/summaryCollection.js.map +1 -1
- package/lib/summary/summaryDelayLoadedModule/runningSummarizer.d.ts +2 -2
- package/lib/summary/summaryDelayLoadedModule/runningSummarizer.d.ts.map +1 -1
- package/lib/summary/summaryDelayLoadedModule/runningSummarizer.js.map +1 -1
- package/lib/summary/summaryDelayLoadedModule/summarizer.d.ts +2 -2
- package/lib/summary/summaryDelayLoadedModule/summarizer.d.ts.map +1 -1
- package/lib/summary/summaryDelayLoadedModule/summarizer.js.map +1 -1
- package/lib/summary/summaryDelayLoadedModule/summarizerHeuristics.d.ts +2 -2
- package/lib/summary/summaryDelayLoadedModule/summarizerHeuristics.d.ts.map +1 -1
- package/lib/summary/summaryDelayLoadedModule/summarizerHeuristics.js.map +1 -1
- package/lib/summary/summaryDelayLoadedModule/summaryGenerator.d.ts +2 -2
- package/lib/summary/summaryDelayLoadedModule/summaryGenerator.d.ts.map +1 -1
- package/lib/summary/summaryDelayLoadedModule/summaryGenerator.js.map +1 -1
- package/lib/summary/summaryManager.d.ts.map +1 -1
- package/lib/summary/summaryManager.js.map +1 -1
- package/package.json +17 -17
- package/src/batchTracker.ts +3 -3
- package/src/blobManager/blobManagerSnapSum.ts +2 -2
- package/src/connectionTelemetry.ts +3 -3
- package/src/containerRuntime.ts +134 -15
- package/src/dataStore.ts +3 -3
- package/src/dataStoreContexts.ts +2 -2
- package/src/deltaScheduler.ts +2 -5
- package/src/gc/garbageCollection.ts +4 -4
- package/src/gc/gcDefinitions.ts +3 -3
- package/src/gc/gcTelemetry.ts +3 -3
- package/src/inboundBatchAggregator.ts +2 -2
- package/src/opLifecycle/opCompressor.ts +2 -2
- package/src/opLifecycle/opDecompressor.ts +2 -2
- package/src/opLifecycle/opGroupingManager.ts +2 -2
- package/src/opLifecycle/opSplitter.ts +2 -2
- package/src/opLifecycle/outbox.ts +2 -2
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +80 -2
- package/src/signalTelemetryProcessing.ts +2 -2
- package/src/summary/documentSchema.ts +2 -2
- package/src/summary/orderedClientElection.ts +3 -3
- package/src/summary/summarizerClientElection.ts +2 -2
- package/src/summary/summarizerNode/summarizerNode.ts +3 -3
- package/src/summary/summarizerNode/summarizerNodeUtils.ts +2 -2
- package/src/summary/summarizerTypes.ts +3 -3
- package/src/summary/summaryCollection.ts +2 -2
- package/src/summary/summaryDelayLoadedModule/runningSummarizer.ts +2 -4
- package/src/summary/summaryDelayLoadedModule/summarizer.ts +3 -3
- package/src/summary/summaryDelayLoadedModule/summarizerHeuristics.ts +2 -2
- package/src/summary/summaryDelayLoadedModule/summaryGenerator.ts +2 -2
- package/src/summary/summaryManager.ts +2 -2
package/CHANGELOG.md
CHANGED
|
Binary file
|
package/dist/batchTracker.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export declare class BatchTracker {
|
|
|
16
16
|
* Track batch sizes in terms of op counts and processing times
|
|
17
17
|
*
|
|
18
18
|
* @param batchEventEmitter - event emitter which tracks the lifecycle of batch operations
|
|
19
|
-
* @param logger - See {@link @fluidframework/core-interfaces#
|
|
19
|
+
* @param logger - See {@link @fluidframework/core-interfaces#TelemetryLoggerExt}
|
|
20
20
|
* @param batchLengthThreshold - threshold for the length of a batch when to send an error event
|
|
21
21
|
* @param batchCountSamplingRate - rate for batches for which to send an event with its characteristics
|
|
22
22
|
*/
|
|
@@ -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,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAU5E,qBAAa,YAAY;IAOvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IANnC,OAAO,CAAC,QAAQ,CAAC,MAAM,
|
|
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,KAAK,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAU5E,qBAAa,YAAY;IAOvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IANnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqB;IAC5C,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
|
@@ -51,7 +51,7 @@ exports.BatchTracker = BatchTracker;
|
|
|
51
51
|
* Track batch sizes in terms of op counts and processing times
|
|
52
52
|
*
|
|
53
53
|
* @param batchEventEmitter - event emitter which tracks the lifecycle of batch operations
|
|
54
|
-
* @param logger - See {@link @fluidframework/core-interfaces#
|
|
54
|
+
* @param logger - See {@link @fluidframework/core-interfaces#TelemetryLoggerExt}
|
|
55
55
|
* @param batchLengthThreshold - threshold for the length of a batch when to send an error event
|
|
56
56
|
* @param batchCountSamplingRate - rate for batches for which to send an event with its characteristics
|
|
57
57
|
*/
|
package/dist/batchTracker.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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 type { ITelemetryBaseLogger } from \"@fluidframework/core-interfaces\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport type { ISequencedDocumentMessage } from \"@fluidframework/driver-definitions/internal\";\nimport {\n\ttype
|
|
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 type { ITelemetryBaseLogger } from \"@fluidframework/core-interfaces\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport type { ISequencedDocumentMessage } from \"@fluidframework/driver-definitions/internal\";\nimport {\n\ttype TelemetryLoggerExt,\n\tcreateChildLogger,\n} from \"@fluidframework/telemetry-utils/internal\";\n\ntype BatchTrackerMessage = Pick<ISequencedDocumentMessage, \"sequenceNumber\">;\n\nexport class BatchTracker {\n\tprivate readonly logger: TelemetryLoggerExt;\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#TelemetryLoggerExt}\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"]}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { IContainerContext } from "@fluidframework/container-definitions/internal";
|
|
6
6
|
import type { ISummaryTreeWithStats } from "@fluidframework/runtime-definitions/internal";
|
|
7
|
-
import type {
|
|
7
|
+
import type { TelemetryLoggerExt } from "@fluidframework/telemetry-utils/internal";
|
|
8
8
|
/**
|
|
9
9
|
* Information from a snapshot needed to load BlobManager
|
|
10
10
|
* @internal
|
|
@@ -26,7 +26,7 @@ export declare const blobsTreeName = ".blobs";
|
|
|
26
26
|
*
|
|
27
27
|
*/
|
|
28
28
|
export declare const loadBlobManagerLoadInfo: (context: Pick<IContainerContext, "baseSnapshot" | "storage" | "attachState">) => Promise<IBlobManagerLoadInfo>;
|
|
29
|
-
export declare const toRedirectTable: (blobManagerLoadInfo: IBlobManagerLoadInfo, logger:
|
|
29
|
+
export declare const toRedirectTable: (blobManagerLoadInfo: IBlobManagerLoadInfo, logger: TelemetryLoggerExt) => Map<string, string>;
|
|
30
30
|
export declare const summarizeBlobManagerState: (redirectTable: Map<string, string>) => ISummaryTreeWithStats;
|
|
31
31
|
export declare const getStorageIds: (redirectTable: Map<string, string>) => Set<string>;
|
|
32
32
|
//# sourceMappingURL=blobManagerSnapSum.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blobManagerSnapSum.d.ts","sourceRoot":"","sources":["../../src/blobManager/blobManagerSnapSum.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AAExF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AAE1F,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"blobManagerSnapSum.d.ts","sourceRoot":"","sources":["../../src/blobManager/blobManagerSnapSum.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,gDAAgD,CAAC;AAExF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,8CAA8C,CAAC;AAE1F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0CAA0C,CAAC;AAEnF;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACpC,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;IACf,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;CACnC;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,mBAAmB,CAAC;AAEtD;;GAEG;AACH,eAAO,MAAM,aAAa,WAAW,CAAC;AAEtC;;;GAGG;AACH,eAAO,MAAM,uBAAuB,YAC1B,KAAK,iBAAiB,EAAE,cAAc,GAAG,SAAS,GAAG,aAAa,CAAC,KAC1E,QAAQ,oBAAoB,CAAoB,CAAC;AAsBpD,eAAO,MAAM,eAAe,wBACN,oBAAoB,UACjC,kBAAkB,KACxB,IAAI,MAAM,EAAE,MAAM,CAsBpB,CAAC;AAEF,eAAO,MAAM,yBAAyB,kBACtB,IAAI,MAAM,EAAE,MAAM,CAAC,KAChC,qBAAmD,CAAC;AA0BvD,eAAO,MAAM,aAAa,kBAAmB,IAAI,MAAM,EAAE,MAAM,CAAC,KAAG,IAAI,MAAM,CAE5E,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blobManagerSnapSum.js","sourceRoot":"","sources":["../../src/blobManager/blobManagerSnapSum.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,oEAAqE;AAErE,qEAA4E;AAY5E;;GAEG;AACU,QAAA,qBAAqB,GAAG,gBAAgB,CAAC;AAEtD;;GAEG;AACU,QAAA,aAAa,GAAG,QAAQ,CAAC;AAEtC;;;GAGG;AACI,MAAM,uBAAuB,GAAG,KAAK,EAC3C,OAA4E,EAC5C,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AAFvC,QAAA,uBAAuB,2BAEgB;AAEpD,MAAM,MAAM,GAAG,KAAK,EACnB,OAA4E,EAC5C,EAAE;IAClC,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,qBAAa,CAAC,CAAC;IAE7D,IAAI,CAAC,SAAS,EAAE,CAAC;QAChB,OAAO,EAAE,CAAC;IACX,CAAC;IACD,IAAI,oBAAoB,GAAuB,EAAE,CAAC;IAClD,MAAM,OAAO,GAAuB,SAAS,CAAC,KAAK,CAAC,6BAAqB,CAAC,CAAC;IAC3E,IAAI,OAAO,EAAE,CAAC;QACb,oBAAoB,GAAG,MAAM,IAAA,uBAAY,EAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC;SACzC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,6BAAqB,CAAC;SAC/C,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAErB,OAAO,EAAE,GAAG,EAAE,aAAa,EAAE,oBAAoB,EAAE,CAAC;AACrD,CAAC,CAAC;AAEK,MAAM,eAAe,GAAG,CAC9B,mBAAyC,EACzC,
|
|
1
|
+
{"version":3,"file":"blobManagerSnapSum.js","sourceRoot":"","sources":["../../src/blobManager/blobManagerSnapSum.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 type { IContainerContext } from \"@fluidframework/container-definitions/internal\";\nimport { readAndParse } from \"@fluidframework/driver-utils/internal\";\nimport type { ISummaryTreeWithStats } from \"@fluidframework/runtime-definitions/internal\";\nimport { SummaryTreeBuilder } from \"@fluidframework/runtime-utils/internal\";\nimport type { TelemetryLoggerExt } from \"@fluidframework/telemetry-utils/internal\";\n\n/**\n * Information from a snapshot needed to load BlobManager\n * @internal\n */\nexport interface IBlobManagerLoadInfo {\n\tids?: string[];\n\tredirectTable?: [string, string][];\n}\n\n/**\n * @internal\n */\nexport const redirectTableBlobName = \".redirectTable\";\n\n/**\n * @internal\n */\nexport const blobsTreeName = \".blobs\";\n\n/**\n * Reads blobs needed to load BlobManager from storage.\n *\n */\nexport const loadBlobManagerLoadInfo = async (\n\tcontext: Pick<IContainerContext, \"baseSnapshot\" | \"storage\" | \"attachState\">,\n): Promise<IBlobManagerLoadInfo> => loadV1(context);\n\nconst loadV1 = async (\n\tcontext: Pick<IContainerContext, \"baseSnapshot\" | \"storage\" | \"attachState\">,\n): Promise<IBlobManagerLoadInfo> => {\n\tconst blobsTree = context.baseSnapshot?.trees[blobsTreeName];\n\n\tif (!blobsTree) {\n\t\treturn {};\n\t}\n\tlet redirectTableEntries: [string, string][] = [];\n\tconst tableId: string | undefined = blobsTree.blobs[redirectTableBlobName];\n\tif (tableId) {\n\t\tredirectTableEntries = await readAndParse(context.storage, tableId);\n\t}\n\tconst ids = Object.entries(blobsTree.blobs)\n\t\t.filter(([k, _]) => k !== redirectTableBlobName)\n\t\t.map(([_, v]) => v);\n\n\treturn { ids, redirectTable: redirectTableEntries };\n};\n\nexport const toRedirectTable = (\n\tblobManagerLoadInfo: IBlobManagerLoadInfo,\n\tlogger: TelemetryLoggerExt,\n): Map<string, string> => {\n\tconst count = blobManagerLoadInfo.ids?.length ?? 0;\n\tconst redirectTableLength = blobManagerLoadInfo.redirectTable?.length ?? 0;\n\tif (count > 0 || redirectTableLength > 0) {\n\t\tlogger.sendTelemetryEvent({\n\t\t\teventName: \"AttachmentBlobsLoaded\",\n\t\t\tcount,\n\t\t\tredirectTable: redirectTableLength,\n\t\t});\n\t}\n\tconst redirectTable = new Map<string, string>(blobManagerLoadInfo.redirectTable);\n\tif (blobManagerLoadInfo.ids !== undefined) {\n\t\tfor (const storageId of blobManagerLoadInfo.ids) {\n\t\t\t// Older versions of the runtime used the storage ID directly in the handle,\n\t\t\t// rather than routing through the redirectTable. To support old handles that\n\t\t\t// were created in this way but unify handling through the redirectTable, we\n\t\t\t// add identity mappings to the redirect table at load. These identity entries\n\t\t\t// will be excluded during summarization.\n\t\t\tredirectTable.set(storageId, storageId);\n\t\t}\n\t}\n\treturn redirectTable;\n};\n\nexport const summarizeBlobManagerState = (\n\tredirectTable: Map<string, string>,\n): ISummaryTreeWithStats => summarizeV1(redirectTable);\n\nconst summarizeV1 = (redirectTable: Map<string, string>): ISummaryTreeWithStats => {\n\tconst builder = new SummaryTreeBuilder();\n\tconst storageIds = getStorageIds(redirectTable);\n\tfor (const storageId of storageIds) {\n\t\t// The Attachment is inspectable by storage, which lets it detect that the blob is referenced\n\t\t// and therefore should not be GC'd.\n\t\tbuilder.addAttachment(storageId);\n\t}\n\n\t// Exclude identity mappings from the redirectTable summary. Note that\n\t// the storageIds of the identity mappings are still included in the Attachments\n\t// above, so we expect these identity mappings will be recreated at load\n\t// time in toRedirectTable even if there is no non-identity mapping in\n\t// the redirectTable.\n\tconst nonIdentityRedirectTableEntries = [...redirectTable.entries()].filter(\n\t\t([localId, storageId]) => localId !== storageId,\n\t);\n\tif (nonIdentityRedirectTableEntries.length > 0) {\n\t\tbuilder.addBlob(redirectTableBlobName, JSON.stringify(nonIdentityRedirectTableEntries));\n\t}\n\n\treturn builder.getSummaryTree();\n};\n\nexport const getStorageIds = (redirectTable: Map<string, string>): Set<string> => {\n\treturn new Set<string>(redirectTable.values());\n};\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connectionTelemetry.js","sourceRoot":"","sources":["../src/connectionTelemetry.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 { performanceNow } from \"@fluid-internal/client-utils\";\nimport type { IDeltaManagerFull } from \"@fluidframework/container-definitions/internal\";\nimport type { IContainerRuntimeEvents } from \"@fluidframework/container-runtime-definitions/internal\";\nimport type { ITelemetryBaseLogger, IEventProvider } from \"@fluidframework/core-interfaces\";\nimport { LogLevel } from \"@fluidframework/core-interfaces\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport {\n\ttype IDocumentMessage,\n\tMessageType,\n\ttype ISequencedDocumentMessage,\n} from \"@fluidframework/driver-definitions/internal\";\nimport { isRuntimeMessage } from \"@fluidframework/driver-utils/internal\";\nimport {\n\ttype IEventSampler,\n\ttype ITelemetryLoggerExt,\n\ttype ISampledTelemetryLogger,\n\tcreateChildLogger,\n\tcreateSampledLogger,\n\tformatTick,\n} from \"@fluidframework/telemetry-utils/internal\";\n\n/**\n * We report various latency-related errors when waiting for op roundtrip takes longer than that amout of time.\n */\nexport const latencyThreshold = 5000;\n\n// Phases in OpPerfTelemetry:\n// 1.\tOp is added to DeltaManager (DM) buffer.\n// 2.\tOp is sent to service (op leaves outbound queue).\n// \t - Note: We do not know for sure when op is sent, we only track when it is added to outbound queue.\n// If outbound queue is paused, time queue is paused is counted as network time.\n// 3.\tOp received from service back (pushed to inbound queue).\n// 4.\tOp is processed.\ninterface IOpPerfTelemetryProperties {\n\t/**\n\t * Measure time between (1) and (2) - Measure time outbound op is sitting in queue due to active batch\n\t */\n\tdurationOutboundBatching: number; // was durationOutboundQueue in previous versions\n\t/**\n\t * Measure time between (2) and (3) - Track how long it took for op to be acked by service\n\t */\n\tdurationNetwork: number; // was durationInboundQueue\n\t/**\n\t * Measure time between (3) and (4) - Time between DM's inbound \"push\" event until DM's \"op\" event\n\t */\n\tdurationInboundToProcessing: number;\n\t/**\n\t * Length of the DeltaManager's inbound queue at the time of the DM's inbound \"push\" event (3)\n\t */\n\tlengthInboundQueue: number;\n}\n\n/**\n * Timings collected at various moments during the op processing.\n */\ninterface IOpPerfTimings {\n\t/**\n\t * Starting time for (1)\n\t */\n\tsubmitOpEventTime: number;\n\t/**\n\t * Starting time for (2)\n\t */\n\toutboundPushEventTime: number;\n\t/**\n\t * Starting time for (3)\n\t */\n\tinboundPushEventTime: number;\n}\n\nclass OpPerfTelemetry {\n\tprivate pingLatency: number | undefined;\n\n\t// Collab window tracking. This is timestamp of %1000 message.\n\tprivate sequenceNumberForMsnTracking: number | undefined;\n\tprivate msnTrackingTimestamp: number = 0;\n\t// To track round trip time for every %500 client message.\n\tprivate clientSequenceNumberForLatencyStatistics: number | undefined;\n\t// Performance Data to be reported for ops round trips and processing.\n\tprivate readonly latencyStatistics = new Map<\n\t\tnumber,\n\t\t{\n\t\t\topProcessingTimes: Partial<IOpPerfTimings>;\n\t\t\topPerfData: Partial<IOpPerfTelemetryProperties>;\n\t\t}\n\t>();\n\n\tprivate firstConnection = true;\n\tprivate connectionOpSeqNumber: number | undefined;\n\tprivate readonly bootTime = performanceNow();\n\tprivate connectionStartTime = 0;\n\tprivate gap = 0;\n\n\t/**\n\t * Count of no-ops sent by this client. This variable is reset everytime the OpStats sampled event is logged\n\t */\n\tprivate noOpCountForTelemetry = 0;\n\t/**\n\t * Cumulative size of the ops processed by this client. This variable is reset everytime the OpStats sampled event is logged\n\t */\n\tprivate processedOpSizeForTelemetry = 0;\n\n\tprivate readonly logger: ITelemetryLoggerExt;\n\n\tprivate static readonly OP_LATENCY_SAMPLE_RATE = 500;\n\tprivate readonly opLatencyLogger: ISampledTelemetryLogger;\n\n\tprivate static readonly DELTA_LATENCY_SAMPLE_RATE = 100;\n\tprivate readonly deltaLatencyLogger: ISampledTelemetryLogger;\n\n\tprivate static readonly PROCESSED_OPS_SAMPLE_RATE = 500;\n\n\t/**\n\t * A sampled logger to log Ops that have been processed by the current client, the NoOp sent and the\n\t * size of the ops processed within one sampling window of this log event.\n\t * The data from this logger will be used to monitor the efficiency of NoOp-heuristics or to get approximate collab window size.\n\t * Note: no log events are sent when sampling is disabled, because logging at every op will be too noisy.\n\t */\n\tprivate readonly opsLogger: ISampledTelemetryLogger;\n\n\t/**\n\t * Create an instance of OpPerfTelemetry which starts monitoring and generating telemetry related to op performance.\n\t *\n\t * @param clientId - The clientId of the current container.\n\t * @param deltaManager - DeltaManager instance to monitor.\n\t * @param containerRuntimeEvents - Emitter of events for the container runtime.\n\t * @param logger - Telemetry logger to write events to.\n\t */\n\tpublic constructor(\n\t\t/**\n\t\t * The clientId of the current container.\n\t\t *\n\t\t * @remarks Until the container connects to the server and receives an ack for its own join op, this can be undefined.\n\t\t * It gets updated in response to event changes once the value provided by the server is available.\n\t\t * If the container loses its connection, this could be the last known clientId.\n\t\t */\n\t\tprivate clientId: string | undefined,\n\t\t/**\n\t\t * DeltaManager instance to monitor.\n\t\t */\n\t\tprivate readonly deltaManager: IDeltaManagerFull,\n\t\t/**\n\t\t * Emitter of events for the container runtime.\n\t\t */\n\t\tcontainerRuntimeEvents: IEventProvider<IContainerRuntimeEvents>,\n\t\t/**\n\t\t * Telemetry logger to write events to.\n\t\t */\n\t\tlogger: ITelemetryLoggerExt,\n\t) {\n\t\tthis.logger = createChildLogger({ logger, namespace: \"OpPerf\" });\n\n\t\tconst deltaLatencyEventSampler: IEventSampler = (() => {\n\t\t\tlet eventCount = -1;\n\t\t\treturn {\n\t\t\t\tsample: () => {\n\t\t\t\t\teventCount++;\n\t\t\t\t\tconst shouldSample = eventCount % OpPerfTelemetry.DELTA_LATENCY_SAMPLE_RATE === 0;\n\t\t\t\t\tif (shouldSample) {\n\t\t\t\t\t\teventCount = 0;\n\t\t\t\t\t}\n\t\t\t\t\treturn shouldSample;\n\t\t\t\t},\n\t\t\t};\n\t\t})();\n\n\t\tthis.deltaLatencyLogger = createSampledLogger(logger, deltaLatencyEventSampler);\n\n\t\t// The SampledLogger here is used get access to the isSamplingDisabled property derived from\n\t\t// telemetry config properties. The actual sampling logic for op messages happens outside this SampledLogger\n\t\t// due to complexity of the different asynchronus scenarios of the op message lifecycle.\n\t\tthis.opLatencyLogger = createSampledLogger(logger);\n\n\t\tconst opsEventSampler: IEventSampler = (() => {\n\t\t\tlet eventCount = 0;\n\t\t\treturn {\n\t\t\t\tsample: () => {\n\t\t\t\t\teventCount++;\n\t\t\t\t\tconst shouldSample = eventCount % OpPerfTelemetry.PROCESSED_OPS_SAMPLE_RATE === 0;\n\t\t\t\t\tif (shouldSample) {\n\t\t\t\t\t\teventCount = 0;\n\t\t\t\t\t\tthis.noOpCountForTelemetry = 0;\n\t\t\t\t\t\tthis.processedOpSizeForTelemetry = 0;\n\t\t\t\t\t}\n\t\t\t\t\treturn shouldSample;\n\t\t\t\t},\n\t\t\t};\n\t\t})();\n\t\tthis.opsLogger = createSampledLogger(\n\t\t\tlogger,\n\t\t\topsEventSampler,\n\t\t\ttrue /* skipLoggingWhenSamplingIsDisabled */,\n\t\t);\n\n\t\tthis.deltaManager.on(\"pong\", (latency) => this.recordPingTime(latency));\n\t\tthis.deltaManager.on(\"submitOp\", (message) => this.beforeOpSubmit(message));\n\t\tthis.deltaManager.on(\"op\", (message) => this.afterProcessingOp(message));\n\t\tthis.deltaManager.on(\"connect\", (details, opsBehind) => {\n\t\t\tif (opsBehind !== undefined) {\n\t\t\t\tthis.connectionOpSeqNumber = this.deltaManager.lastKnownSeqNumber;\n\t\t\t\tthis.gap = opsBehind;\n\t\t\t\tthis.connectionStartTime = performanceNow();\n\n\t\t\t\t// We might be already up-today. If so, report it right away.\n\t\t\t\tif (this.gap <= 0) {\n\t\t\t\t\tthis.reportGettingUpToDate();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tthis.deltaManager.on(\"disconnect\", () => {\n\t\t\tthis.sequenceNumberForMsnTracking = undefined;\n\t\t\tthis.clientSequenceNumberForLatencyStatistics = undefined;\n\t\t\tthis.connectionOpSeqNumber = undefined;\n\t\t\tthis.firstConnection = false;\n\t\t\tthis.latencyStatistics.clear();\n\t\t});\n\n\t\tthis.deltaManager.outbound.on(\"push\", (messages) => {\n\t\t\tfor (const msg of messages) {\n\t\t\t\tif (\n\t\t\t\t\tmsg.type === MessageType.Operation &&\n\t\t\t\t\t(this.opLatencyLogger.isSamplingDisabled ||\n\t\t\t\t\t\tthis.clientSequenceNumberForLatencyStatistics === msg.clientSequenceNumber)\n\t\t\t\t) {\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\t\tconst latencyStats = this.latencyStatistics.get(msg.clientSequenceNumber)!;\n\t\t\t\t\tassert(latencyStats !== undefined, 0x7c2 /* Latency stats for op should exist */);\n\t\t\t\t\tassert(\n\t\t\t\t\t\tlatencyStats.opProcessingTimes.outboundPushEventTime === undefined,\n\t\t\t\t\t\t0x2c8 /* \"outboundPushEventTime should be undefined\" */,\n\t\t\t\t\t);\n\t\t\t\t\tassert(\n\t\t\t\t\t\tlatencyStats.opPerfData.durationNetwork === undefined,\n\t\t\t\t\t\t0x2c9 /* \"durationNetwork should be undefined\" */,\n\t\t\t\t\t);\n\t\t\t\t\tlatencyStats.opProcessingTimes.outboundPushEventTime = Date.now();\n\n\t\t\t\t\tassert(\n\t\t\t\t\t\tlatencyStats.opPerfData.durationOutboundBatching === undefined,\n\t\t\t\t\t\t0x2ca /* \"durationOutboundBatching should be undefined\" */,\n\t\t\t\t\t);\n\n\t\t\t\t\tassert(\n\t\t\t\t\t\tlatencyStats.opProcessingTimes.submitOpEventTime !== undefined,\n\t\t\t\t\t\t0x2cb /* \"submitOpEventTime should be undefined\" */,\n\t\t\t\t\t);\n\n\t\t\t\t\tlatencyStats.opPerfData.durationOutboundBatching =\n\t\t\t\t\t\tlatencyStats.opProcessingTimes.outboundPushEventTime -\n\t\t\t\t\t\tlatencyStats.opProcessingTimes.submitOpEventTime;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis.deltaManager.inbound.on(\"push\", (message: ISequencedDocumentMessage) => {\n\t\t\tif (\n\t\t\t\tthis.clientId === message.clientId &&\n\t\t\t\tmessage.type === MessageType.Operation &&\n\t\t\t\t(this.opLatencyLogger.isSamplingDisabled ||\n\t\t\t\t\tthis.clientSequenceNumberForLatencyStatistics === message.clientSequenceNumber)\n\t\t\t) {\n\t\t\t\t// We do an explicit check for undefined right after this\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\tconst latencyStats = this.latencyStatistics.get(message.clientSequenceNumber)!;\n\t\t\t\tassert(latencyStats !== undefined, 0x7c3 /* Latency stats for op should exist */);\n\t\t\t\tif (latencyStats.opProcessingTimes.outboundPushEventTime !== undefined) {\n\t\t\t\t\tlatencyStats.opProcessingTimes.inboundPushEventTime = Date.now();\n\t\t\t\t\tlatencyStats.opPerfData.durationNetwork =\n\t\t\t\t\t\tlatencyStats.opProcessingTimes.inboundPushEventTime -\n\t\t\t\t\t\tlatencyStats.opProcessingTimes.outboundPushEventTime;\n\t\t\t\t\tlatencyStats.opPerfData.lengthInboundQueue = this.deltaManager.inbound.length;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isRuntimeMessage(message) && typeof message.contents === \"string\") {\n\t\t\t\tthis.processedOpSizeForTelemetry += message.contents.length;\n\t\t\t}\n\t\t});\n\n\t\tthis.deltaManager.inbound.on(\"idle\", (count: number, duration: number) => {\n\t\t\t// Do not want to log zero for sure.\n\t\t\t// We are more interested in aggregates, so logging only if we are processing some number of ops\n\t\t\t// Cut-off is arbitrary - can be increased or decreased based on amount of data collected and questions we\n\t\t\t// want to get answered\n\t\t\t// back-compat: Once 0.36 loader version saturates (count & duration args were added there),\n\t\t\t// we can remove typeof check.\n\t\t\tif (typeof count === \"number\" && count >= 100) {\n\t\t\t\tthis.logger.sendPerformanceEvent({\n\t\t\t\t\teventName: \"GetDeltas_OpProcessing\",\n\t\t\t\t\tcount,\n\t\t\t\t\tduration,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tcontainerRuntimeEvents.on(\"connected\", (newClientId) => {\n\t\t\tthis.clientId = newClientId;\n\t\t});\n\t}\n\n\tprivate reportGettingUpToDate(): void {\n\t\tthis.connectionOpSeqNumber = undefined;\n\t\tthis.logger.sendPerformanceEvent(\n\t\t\t{\n\t\t\t\teventName: \"ConnectionSpeed\",\n\t\t\t\tduration: performanceNow() - this.connectionStartTime,\n\t\t\t\tops: this.gap,\n\t\t\t\t// track time to connect only for first connection.\n\t\t\t\ttimeToConnect: this.firstConnection\n\t\t\t\t\t? formatTick(this.connectionStartTime - this.bootTime)\n\t\t\t\t\t: undefined,\n\t\t\t\tfirstConnection: this.firstConnection,\n\t\t\t},\n\t\t\tundefined, // error\n\t\t\tLogLevel.info,\n\t\t);\n\t}\n\n\tprivate recordPingTime(latency: number): void {\n\t\tthis.pingLatency = latency;\n\n\t\t// Log if latency is longer than 1 min\n\t\tif (latency > 1000 * 60) {\n\t\t\tthis.logger.sendErrorEvent({\n\t\t\t\teventName: \"LatencyTooLong\",\n\t\t\t\tduration: latency,\n\t\t\t});\n\t\t}\n\n\t\t// logging one in every DELTA_LATENCY_SAMPLE_RATE pongs, including the first time, if it is a \"write\" client.\n\t\tif (this.deltaManager.active) {\n\t\t\tthis.deltaLatencyLogger.sendPerformanceEvent({\n\t\t\t\teventName: \"DeltaLatency\",\n\t\t\t\tduration: latency,\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate beforeOpSubmit(message: IDocumentMessage): void {\n\t\t// start with first client op and measure latency every 500 client ops\n\t\tif (\n\t\t\tthis.opLatencyLogger.isSamplingDisabled ||\n\t\t\t(this.clientSequenceNumberForLatencyStatistics === undefined &&\n\t\t\t\tmessage.clientSequenceNumber % OpPerfTelemetry.OP_LATENCY_SAMPLE_RATE === 1)\n\t\t) {\n\t\t\tassert(\n\t\t\t\tthis.latencyStatistics.get(message.clientSequenceNumber) === undefined,\n\t\t\t\t0x7c4 /* Existing op perf data for client sequence number */,\n\t\t\t);\n\t\t\tthis.clientSequenceNumberForLatencyStatistics = message.clientSequenceNumber;\n\t\t\tthis.latencyStatistics.set(message.clientSequenceNumber, {\n\t\t\t\topProcessingTimes: {\n\t\t\t\t\tsubmitOpEventTime: Date.now(),\n\t\t\t\t},\n\t\t\t\topPerfData: {},\n\t\t\t});\n\t\t}\n\n\t\tif (message.type === MessageType.NoOp) {\n\t\t\t// Count the number of no-ops submitted by this client.\n\t\t\t// The value is reset when we log the OpStats sampled event.\n\t\t\tthis.noOpCountForTelemetry++;\n\t\t}\n\t}\n\n\tprivate afterProcessingOp(message: ISequencedDocumentMessage): void {\n\t\tconst sequenceNumber = message.sequenceNumber;\n\n\t\tif (sequenceNumber === this.connectionOpSeqNumber) {\n\t\t\tthis.reportGettingUpToDate();\n\t\t}\n\n\t\t// Record collab window max size after every 1000th op.\n\t\tif (this.sequenceNumberForMsnTracking === undefined && sequenceNumber % 1000 === 0) {\n\t\t\tthis.sequenceNumberForMsnTracking = sequenceNumber;\n\t\t\tthis.msnTrackingTimestamp = message.timestamp;\n\t\t}\n\t\tif (\n\t\t\tthis.sequenceNumberForMsnTracking !== undefined &&\n\t\t\tmessage.minimumSequenceNumber >= this.sequenceNumberForMsnTracking\n\t\t) {\n\t\t\tassert(\n\t\t\t\tthis.msnTrackingTimestamp !== undefined,\n\t\t\t\t0x2ce /* \"msnTrackingTimestamp should not be undefined\" */,\n\t\t\t);\n\t\t\tthis.logger.sendPerformanceEvent({\n\t\t\t\teventName: \"MsnStatistics\",\n\t\t\t\tsequenceNumber,\n\t\t\t\tmsnDistance: sequenceNumber - this.sequenceNumberForMsnTracking,\n\t\t\t\tduration: message.timestamp - this.msnTrackingTimestamp,\n\t\t\t});\n\t\t\tthis.sequenceNumberForMsnTracking = undefined;\n\t\t}\n\n\t\tif (\n\t\t\tthis.clientId === message.clientId &&\n\t\t\tmessage.type === MessageType.Operation &&\n\t\t\t(this.opLatencyLogger.isSamplingDisabled ||\n\t\t\t\tthis.clientSequenceNumberForLatencyStatistics === message.clientSequenceNumber)\n\t\t) {\n\t\t\t// We do an explicit check for undefined right after this\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst latencyData = this.latencyStatistics.get(message.clientSequenceNumber)!;\n\t\t\tassert(latencyData !== undefined, 0x7c5 /* Undefined latency statistics for op */);\n\t\t\tassert(\n\t\t\t\tlatencyData.opProcessingTimes.submitOpEventTime !== undefined,\n\t\t\t\t0x120 /* \"Undefined latency statistics for op (op send time)\" */,\n\t\t\t);\n\t\t\tconst currentTime = Date.now();\n\t\t\tif (latencyData.opProcessingTimes.inboundPushEventTime !== undefined) {\n\t\t\t\tlatencyData.opPerfData.durationInboundToProcessing =\n\t\t\t\t\tcurrentTime - latencyData.opProcessingTimes.inboundPushEventTime;\n\t\t\t}\n\t\t\tconst duration = currentTime - latencyData.opProcessingTimes.submitOpEventTime;\n\n\t\t\t// One of the core expectations for Fluid service is to be fast.\n\t\t\t// When it's not the case, we want to learn about it and be able to investigate, so\n\t\t\t// raise awareness.\n\t\t\t// This also helps identify cases where it's due to client behavior (sending too many ops)\n\t\t\t// that results in overwhelming ordering service and thus starting to see long latencies.\n\t\t\t// The threshold could be adjusted, but ideally it stays workload-agnostic, as service\n\t\t\t// performance impacts all workloads relying on service.\n\t\t\tconst category = duration > latencyThreshold ? \"error\" : \"performance\";\n\t\t\tthis.opLatencyLogger.sendPerformanceEvent({\n\t\t\t\teventName: \"OpRoundtripTime\",\n\t\t\t\tsequenceNumber,\n\t\t\t\treferenceSequenceNumber: message.referenceSequenceNumber,\n\t\t\t\tduration,\n\t\t\t\tcategory,\n\t\t\t\tpingLatency: this.pingLatency,\n\t\t\t\tmsnDistance:\n\t\t\t\t\tthis.deltaManager.lastSequenceNumber - this.deltaManager.minimumSequenceNumber,\n\t\t\t\t...latencyData.opPerfData,\n\t\t\t});\n\n\t\t\tthis.clientSequenceNumberForLatencyStatistics = undefined;\n\t\t\tthis.latencyStatistics.delete(message.clientSequenceNumber);\n\t\t}\n\n\t\tif (isRuntimeMessage(message)) {\n\t\t\t// Sampled logging of Ops that have been processed by the current client, the NoOp sent and the\n\t\t\t// size of the ops processed within one sampling window of this log event.\n\t\t\t// This data will be used to monitor the efficiency of NoOp-heuristics or to get approximate collab window size.\n\t\t\tthis.opsLogger.sendPerformanceEvent({\n\t\t\t\teventName: \"OpStats\",\n\t\t\t\t// Logging as 'details' property to avoid adding new column name to the log tables */\n\t\t\t\tdetails: {\n\t\t\t\t\t// Count of the ops processed by the current client. Note: these counts are after\n\t\t\t\t\t// compression/grouping/chunking (if enabled) of the ops.\n\t\t\t\t\tprocessedOpCount: OpPerfTelemetry.PROCESSED_OPS_SAMPLE_RATE,\n\t\t\t\t\t// Cumulative size of all the ops processed by the current client since the last OpStats event log\n\t\t\t\t\tprocessedOpSize: this.processedOpSizeForTelemetry,\n\t\t\t\t\t// Count of all the NoOp sent by the current client since the last OpStats event log\n\t\t\t\t\tsubmitedNoOpCount: this.noOpCountForTelemetry,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n}\n\n/**\n * Starts monitoring and generation of telemetry related to op performance.\n *\n * @param clientId - The clientId of the current container.\n * @param deltaManager - DeltaManager instance to monitor.\n * @param containerRuntimeEvents - Emitter of events for the container runtime.\n * @param logger - Telemetry logger to write events to.\n */\nexport function ReportOpPerfTelemetry(\n\tclientId: string | undefined,\n\tdeltaManager: IDeltaManagerFull,\n\tcontainerRuntimeEvents: IEventProvider<IContainerRuntimeEvents>,\n\tlogger: ITelemetryBaseLogger,\n): void {\n\tnew OpPerfTelemetry(\n\t\tclientId,\n\t\tdeltaManager,\n\t\tcontainerRuntimeEvents,\n\t\tcreateChildLogger({ logger }),\n\t);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"connectionTelemetry.js","sourceRoot":"","sources":["../src/connectionTelemetry.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 { performanceNow } from \"@fluid-internal/client-utils\";\nimport type { IDeltaManagerFull } from \"@fluidframework/container-definitions/internal\";\nimport type { IContainerRuntimeEvents } from \"@fluidframework/container-runtime-definitions/internal\";\nimport type { ITelemetryBaseLogger, IEventProvider } from \"@fluidframework/core-interfaces\";\nimport { LogLevel } from \"@fluidframework/core-interfaces\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport {\n\ttype IDocumentMessage,\n\tMessageType,\n\ttype ISequencedDocumentMessage,\n} from \"@fluidframework/driver-definitions/internal\";\nimport { isRuntimeMessage } from \"@fluidframework/driver-utils/internal\";\nimport {\n\ttype IEventSampler,\n\ttype TelemetryLoggerExt,\n\ttype ISampledTelemetryLogger,\n\tcreateChildLogger,\n\tcreateSampledLogger,\n\tformatTick,\n} from \"@fluidframework/telemetry-utils/internal\";\n\n/**\n * We report various latency-related errors when waiting for op roundtrip takes longer than that amout of time.\n */\nexport const latencyThreshold = 5000;\n\n// Phases in OpPerfTelemetry:\n// 1.\tOp is added to DeltaManager (DM) buffer.\n// 2.\tOp is sent to service (op leaves outbound queue).\n// \t - Note: We do not know for sure when op is sent, we only track when it is added to outbound queue.\n// If outbound queue is paused, time queue is paused is counted as network time.\n// 3.\tOp received from service back (pushed to inbound queue).\n// 4.\tOp is processed.\ninterface IOpPerfTelemetryProperties {\n\t/**\n\t * Measure time between (1) and (2) - Measure time outbound op is sitting in queue due to active batch\n\t */\n\tdurationOutboundBatching: number; // was durationOutboundQueue in previous versions\n\t/**\n\t * Measure time between (2) and (3) - Track how long it took for op to be acked by service\n\t */\n\tdurationNetwork: number; // was durationInboundQueue\n\t/**\n\t * Measure time between (3) and (4) - Time between DM's inbound \"push\" event until DM's \"op\" event\n\t */\n\tdurationInboundToProcessing: number;\n\t/**\n\t * Length of the DeltaManager's inbound queue at the time of the DM's inbound \"push\" event (3)\n\t */\n\tlengthInboundQueue: number;\n}\n\n/**\n * Timings collected at various moments during the op processing.\n */\ninterface IOpPerfTimings {\n\t/**\n\t * Starting time for (1)\n\t */\n\tsubmitOpEventTime: number;\n\t/**\n\t * Starting time for (2)\n\t */\n\toutboundPushEventTime: number;\n\t/**\n\t * Starting time for (3)\n\t */\n\tinboundPushEventTime: number;\n}\n\nclass OpPerfTelemetry {\n\tprivate pingLatency: number | undefined;\n\n\t// Collab window tracking. This is timestamp of %1000 message.\n\tprivate sequenceNumberForMsnTracking: number | undefined;\n\tprivate msnTrackingTimestamp: number = 0;\n\t// To track round trip time for every %500 client message.\n\tprivate clientSequenceNumberForLatencyStatistics: number | undefined;\n\t// Performance Data to be reported for ops round trips and processing.\n\tprivate readonly latencyStatistics = new Map<\n\t\tnumber,\n\t\t{\n\t\t\topProcessingTimes: Partial<IOpPerfTimings>;\n\t\t\topPerfData: Partial<IOpPerfTelemetryProperties>;\n\t\t}\n\t>();\n\n\tprivate firstConnection = true;\n\tprivate connectionOpSeqNumber: number | undefined;\n\tprivate readonly bootTime = performanceNow();\n\tprivate connectionStartTime = 0;\n\tprivate gap = 0;\n\n\t/**\n\t * Count of no-ops sent by this client. This variable is reset everytime the OpStats sampled event is logged\n\t */\n\tprivate noOpCountForTelemetry = 0;\n\t/**\n\t * Cumulative size of the ops processed by this client. This variable is reset everytime the OpStats sampled event is logged\n\t */\n\tprivate processedOpSizeForTelemetry = 0;\n\n\tprivate readonly logger: TelemetryLoggerExt;\n\n\tprivate static readonly OP_LATENCY_SAMPLE_RATE = 500;\n\tprivate readonly opLatencyLogger: ISampledTelemetryLogger;\n\n\tprivate static readonly DELTA_LATENCY_SAMPLE_RATE = 100;\n\tprivate readonly deltaLatencyLogger: ISampledTelemetryLogger;\n\n\tprivate static readonly PROCESSED_OPS_SAMPLE_RATE = 500;\n\n\t/**\n\t * A sampled logger to log Ops that have been processed by the current client, the NoOp sent and the\n\t * size of the ops processed within one sampling window of this log event.\n\t * The data from this logger will be used to monitor the efficiency of NoOp-heuristics or to get approximate collab window size.\n\t * Note: no log events are sent when sampling is disabled, because logging at every op will be too noisy.\n\t */\n\tprivate readonly opsLogger: ISampledTelemetryLogger;\n\n\t/**\n\t * Create an instance of OpPerfTelemetry which starts monitoring and generating telemetry related to op performance.\n\t *\n\t * @param clientId - The clientId of the current container.\n\t * @param deltaManager - DeltaManager instance to monitor.\n\t * @param containerRuntimeEvents - Emitter of events for the container runtime.\n\t * @param logger - Telemetry logger to write events to.\n\t */\n\tpublic constructor(\n\t\t/**\n\t\t * The clientId of the current container.\n\t\t *\n\t\t * @remarks Until the container connects to the server and receives an ack for its own join op, this can be undefined.\n\t\t * It gets updated in response to event changes once the value provided by the server is available.\n\t\t * If the container loses its connection, this could be the last known clientId.\n\t\t */\n\t\tprivate clientId: string | undefined,\n\t\t/**\n\t\t * DeltaManager instance to monitor.\n\t\t */\n\t\tprivate readonly deltaManager: IDeltaManagerFull,\n\t\t/**\n\t\t * Emitter of events for the container runtime.\n\t\t */\n\t\tcontainerRuntimeEvents: IEventProvider<IContainerRuntimeEvents>,\n\t\t/**\n\t\t * Telemetry logger to write events to.\n\t\t */\n\t\tlogger: TelemetryLoggerExt,\n\t) {\n\t\tthis.logger = createChildLogger({ logger, namespace: \"OpPerf\" });\n\n\t\tconst deltaLatencyEventSampler: IEventSampler = (() => {\n\t\t\tlet eventCount = -1;\n\t\t\treturn {\n\t\t\t\tsample: () => {\n\t\t\t\t\teventCount++;\n\t\t\t\t\tconst shouldSample = eventCount % OpPerfTelemetry.DELTA_LATENCY_SAMPLE_RATE === 0;\n\t\t\t\t\tif (shouldSample) {\n\t\t\t\t\t\teventCount = 0;\n\t\t\t\t\t}\n\t\t\t\t\treturn shouldSample;\n\t\t\t\t},\n\t\t\t};\n\t\t})();\n\n\t\tthis.deltaLatencyLogger = createSampledLogger(logger, deltaLatencyEventSampler);\n\n\t\t// The SampledLogger here is used get access to the isSamplingDisabled property derived from\n\t\t// telemetry config properties. The actual sampling logic for op messages happens outside this SampledLogger\n\t\t// due to complexity of the different asynchronus scenarios of the op message lifecycle.\n\t\tthis.opLatencyLogger = createSampledLogger(logger);\n\n\t\tconst opsEventSampler: IEventSampler = (() => {\n\t\t\tlet eventCount = 0;\n\t\t\treturn {\n\t\t\t\tsample: () => {\n\t\t\t\t\teventCount++;\n\t\t\t\t\tconst shouldSample = eventCount % OpPerfTelemetry.PROCESSED_OPS_SAMPLE_RATE === 0;\n\t\t\t\t\tif (shouldSample) {\n\t\t\t\t\t\teventCount = 0;\n\t\t\t\t\t\tthis.noOpCountForTelemetry = 0;\n\t\t\t\t\t\tthis.processedOpSizeForTelemetry = 0;\n\t\t\t\t\t}\n\t\t\t\t\treturn shouldSample;\n\t\t\t\t},\n\t\t\t};\n\t\t})();\n\t\tthis.opsLogger = createSampledLogger(\n\t\t\tlogger,\n\t\t\topsEventSampler,\n\t\t\ttrue /* skipLoggingWhenSamplingIsDisabled */,\n\t\t);\n\n\t\tthis.deltaManager.on(\"pong\", (latency) => this.recordPingTime(latency));\n\t\tthis.deltaManager.on(\"submitOp\", (message) => this.beforeOpSubmit(message));\n\t\tthis.deltaManager.on(\"op\", (message) => this.afterProcessingOp(message));\n\t\tthis.deltaManager.on(\"connect\", (details, opsBehind) => {\n\t\t\tif (opsBehind !== undefined) {\n\t\t\t\tthis.connectionOpSeqNumber = this.deltaManager.lastKnownSeqNumber;\n\t\t\t\tthis.gap = opsBehind;\n\t\t\t\tthis.connectionStartTime = performanceNow();\n\n\t\t\t\t// We might be already up-today. If so, report it right away.\n\t\t\t\tif (this.gap <= 0) {\n\t\t\t\t\tthis.reportGettingUpToDate();\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tthis.deltaManager.on(\"disconnect\", () => {\n\t\t\tthis.sequenceNumberForMsnTracking = undefined;\n\t\t\tthis.clientSequenceNumberForLatencyStatistics = undefined;\n\t\t\tthis.connectionOpSeqNumber = undefined;\n\t\t\tthis.firstConnection = false;\n\t\t\tthis.latencyStatistics.clear();\n\t\t});\n\n\t\tthis.deltaManager.outbound.on(\"push\", (messages) => {\n\t\t\tfor (const msg of messages) {\n\t\t\t\tif (\n\t\t\t\t\tmsg.type === MessageType.Operation &&\n\t\t\t\t\t(this.opLatencyLogger.isSamplingDisabled ||\n\t\t\t\t\t\tthis.clientSequenceNumberForLatencyStatistics === msg.clientSequenceNumber)\n\t\t\t\t) {\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\t\tconst latencyStats = this.latencyStatistics.get(msg.clientSequenceNumber)!;\n\t\t\t\t\tassert(latencyStats !== undefined, 0x7c2 /* Latency stats for op should exist */);\n\t\t\t\t\tassert(\n\t\t\t\t\t\tlatencyStats.opProcessingTimes.outboundPushEventTime === undefined,\n\t\t\t\t\t\t0x2c8 /* \"outboundPushEventTime should be undefined\" */,\n\t\t\t\t\t);\n\t\t\t\t\tassert(\n\t\t\t\t\t\tlatencyStats.opPerfData.durationNetwork === undefined,\n\t\t\t\t\t\t0x2c9 /* \"durationNetwork should be undefined\" */,\n\t\t\t\t\t);\n\t\t\t\t\tlatencyStats.opProcessingTimes.outboundPushEventTime = Date.now();\n\n\t\t\t\t\tassert(\n\t\t\t\t\t\tlatencyStats.opPerfData.durationOutboundBatching === undefined,\n\t\t\t\t\t\t0x2ca /* \"durationOutboundBatching should be undefined\" */,\n\t\t\t\t\t);\n\n\t\t\t\t\tassert(\n\t\t\t\t\t\tlatencyStats.opProcessingTimes.submitOpEventTime !== undefined,\n\t\t\t\t\t\t0x2cb /* \"submitOpEventTime should be undefined\" */,\n\t\t\t\t\t);\n\n\t\t\t\t\tlatencyStats.opPerfData.durationOutboundBatching =\n\t\t\t\t\t\tlatencyStats.opProcessingTimes.outboundPushEventTime -\n\t\t\t\t\t\tlatencyStats.opProcessingTimes.submitOpEventTime;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tthis.deltaManager.inbound.on(\"push\", (message: ISequencedDocumentMessage) => {\n\t\t\tif (\n\t\t\t\tthis.clientId === message.clientId &&\n\t\t\t\tmessage.type === MessageType.Operation &&\n\t\t\t\t(this.opLatencyLogger.isSamplingDisabled ||\n\t\t\t\t\tthis.clientSequenceNumberForLatencyStatistics === message.clientSequenceNumber)\n\t\t\t) {\n\t\t\t\t// We do an explicit check for undefined right after this\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\tconst latencyStats = this.latencyStatistics.get(message.clientSequenceNumber)!;\n\t\t\t\tassert(latencyStats !== undefined, 0x7c3 /* Latency stats for op should exist */);\n\t\t\t\tif (latencyStats.opProcessingTimes.outboundPushEventTime !== undefined) {\n\t\t\t\t\tlatencyStats.opProcessingTimes.inboundPushEventTime = Date.now();\n\t\t\t\t\tlatencyStats.opPerfData.durationNetwork =\n\t\t\t\t\t\tlatencyStats.opProcessingTimes.inboundPushEventTime -\n\t\t\t\t\t\tlatencyStats.opProcessingTimes.outboundPushEventTime;\n\t\t\t\t\tlatencyStats.opPerfData.lengthInboundQueue = this.deltaManager.inbound.length;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (isRuntimeMessage(message) && typeof message.contents === \"string\") {\n\t\t\t\tthis.processedOpSizeForTelemetry += message.contents.length;\n\t\t\t}\n\t\t});\n\n\t\tthis.deltaManager.inbound.on(\"idle\", (count: number, duration: number) => {\n\t\t\t// Do not want to log zero for sure.\n\t\t\t// We are more interested in aggregates, so logging only if we are processing some number of ops\n\t\t\t// Cut-off is arbitrary - can be increased or decreased based on amount of data collected and questions we\n\t\t\t// want to get answered\n\t\t\t// back-compat: Once 0.36 loader version saturates (count & duration args were added there),\n\t\t\t// we can remove typeof check.\n\t\t\tif (typeof count === \"number\" && count >= 100) {\n\t\t\t\tthis.logger.sendPerformanceEvent({\n\t\t\t\t\teventName: \"GetDeltas_OpProcessing\",\n\t\t\t\t\tcount,\n\t\t\t\t\tduration,\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\tcontainerRuntimeEvents.on(\"connected\", (newClientId) => {\n\t\t\tthis.clientId = newClientId;\n\t\t});\n\t}\n\n\tprivate reportGettingUpToDate(): void {\n\t\tthis.connectionOpSeqNumber = undefined;\n\t\tthis.logger.sendPerformanceEvent(\n\t\t\t{\n\t\t\t\teventName: \"ConnectionSpeed\",\n\t\t\t\tduration: performanceNow() - this.connectionStartTime,\n\t\t\t\tops: this.gap,\n\t\t\t\t// track time to connect only for first connection.\n\t\t\t\ttimeToConnect: this.firstConnection\n\t\t\t\t\t? formatTick(this.connectionStartTime - this.bootTime)\n\t\t\t\t\t: undefined,\n\t\t\t\tfirstConnection: this.firstConnection,\n\t\t\t},\n\t\t\tundefined, // error\n\t\t\tLogLevel.info,\n\t\t);\n\t}\n\n\tprivate recordPingTime(latency: number): void {\n\t\tthis.pingLatency = latency;\n\n\t\t// Log if latency is longer than 1 min\n\t\tif (latency > 1000 * 60) {\n\t\t\tthis.logger.sendErrorEvent({\n\t\t\t\teventName: \"LatencyTooLong\",\n\t\t\t\tduration: latency,\n\t\t\t});\n\t\t}\n\n\t\t// logging one in every DELTA_LATENCY_SAMPLE_RATE pongs, including the first time, if it is a \"write\" client.\n\t\tif (this.deltaManager.active) {\n\t\t\tthis.deltaLatencyLogger.sendPerformanceEvent({\n\t\t\t\teventName: \"DeltaLatency\",\n\t\t\t\tduration: latency,\n\t\t\t});\n\t\t}\n\t}\n\n\tprivate beforeOpSubmit(message: IDocumentMessage): void {\n\t\t// start with first client op and measure latency every 500 client ops\n\t\tif (\n\t\t\tthis.opLatencyLogger.isSamplingDisabled ||\n\t\t\t(this.clientSequenceNumberForLatencyStatistics === undefined &&\n\t\t\t\tmessage.clientSequenceNumber % OpPerfTelemetry.OP_LATENCY_SAMPLE_RATE === 1)\n\t\t) {\n\t\t\tassert(\n\t\t\t\tthis.latencyStatistics.get(message.clientSequenceNumber) === undefined,\n\t\t\t\t0x7c4 /* Existing op perf data for client sequence number */,\n\t\t\t);\n\t\t\tthis.clientSequenceNumberForLatencyStatistics = message.clientSequenceNumber;\n\t\t\tthis.latencyStatistics.set(message.clientSequenceNumber, {\n\t\t\t\topProcessingTimes: {\n\t\t\t\t\tsubmitOpEventTime: Date.now(),\n\t\t\t\t},\n\t\t\t\topPerfData: {},\n\t\t\t});\n\t\t}\n\n\t\tif (message.type === MessageType.NoOp) {\n\t\t\t// Count the number of no-ops submitted by this client.\n\t\t\t// The value is reset when we log the OpStats sampled event.\n\t\t\tthis.noOpCountForTelemetry++;\n\t\t}\n\t}\n\n\tprivate afterProcessingOp(message: ISequencedDocumentMessage): void {\n\t\tconst sequenceNumber = message.sequenceNumber;\n\n\t\tif (sequenceNumber === this.connectionOpSeqNumber) {\n\t\t\tthis.reportGettingUpToDate();\n\t\t}\n\n\t\t// Record collab window max size after every 1000th op.\n\t\tif (this.sequenceNumberForMsnTracking === undefined && sequenceNumber % 1000 === 0) {\n\t\t\tthis.sequenceNumberForMsnTracking = sequenceNumber;\n\t\t\tthis.msnTrackingTimestamp = message.timestamp;\n\t\t}\n\t\tif (\n\t\t\tthis.sequenceNumberForMsnTracking !== undefined &&\n\t\t\tmessage.minimumSequenceNumber >= this.sequenceNumberForMsnTracking\n\t\t) {\n\t\t\tassert(\n\t\t\t\tthis.msnTrackingTimestamp !== undefined,\n\t\t\t\t0x2ce /* \"msnTrackingTimestamp should not be undefined\" */,\n\t\t\t);\n\t\t\tthis.logger.sendPerformanceEvent({\n\t\t\t\teventName: \"MsnStatistics\",\n\t\t\t\tsequenceNumber,\n\t\t\t\tmsnDistance: sequenceNumber - this.sequenceNumberForMsnTracking,\n\t\t\t\tduration: message.timestamp - this.msnTrackingTimestamp,\n\t\t\t});\n\t\t\tthis.sequenceNumberForMsnTracking = undefined;\n\t\t}\n\n\t\tif (\n\t\t\tthis.clientId === message.clientId &&\n\t\t\tmessage.type === MessageType.Operation &&\n\t\t\t(this.opLatencyLogger.isSamplingDisabled ||\n\t\t\t\tthis.clientSequenceNumberForLatencyStatistics === message.clientSequenceNumber)\n\t\t) {\n\t\t\t// We do an explicit check for undefined right after this\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\tconst latencyData = this.latencyStatistics.get(message.clientSequenceNumber)!;\n\t\t\tassert(latencyData !== undefined, 0x7c5 /* Undefined latency statistics for op */);\n\t\t\tassert(\n\t\t\t\tlatencyData.opProcessingTimes.submitOpEventTime !== undefined,\n\t\t\t\t0x120 /* \"Undefined latency statistics for op (op send time)\" */,\n\t\t\t);\n\t\t\tconst currentTime = Date.now();\n\t\t\tif (latencyData.opProcessingTimes.inboundPushEventTime !== undefined) {\n\t\t\t\tlatencyData.opPerfData.durationInboundToProcessing =\n\t\t\t\t\tcurrentTime - latencyData.opProcessingTimes.inboundPushEventTime;\n\t\t\t}\n\t\t\tconst duration = currentTime - latencyData.opProcessingTimes.submitOpEventTime;\n\n\t\t\t// One of the core expectations for Fluid service is to be fast.\n\t\t\t// When it's not the case, we want to learn about it and be able to investigate, so\n\t\t\t// raise awareness.\n\t\t\t// This also helps identify cases where it's due to client behavior (sending too many ops)\n\t\t\t// that results in overwhelming ordering service and thus starting to see long latencies.\n\t\t\t// The threshold could be adjusted, but ideally it stays workload-agnostic, as service\n\t\t\t// performance impacts all workloads relying on service.\n\t\t\tconst category = duration > latencyThreshold ? \"error\" : \"performance\";\n\t\t\tthis.opLatencyLogger.sendPerformanceEvent({\n\t\t\t\teventName: \"OpRoundtripTime\",\n\t\t\t\tsequenceNumber,\n\t\t\t\treferenceSequenceNumber: message.referenceSequenceNumber,\n\t\t\t\tduration,\n\t\t\t\tcategory,\n\t\t\t\tpingLatency: this.pingLatency,\n\t\t\t\tmsnDistance:\n\t\t\t\t\tthis.deltaManager.lastSequenceNumber - this.deltaManager.minimumSequenceNumber,\n\t\t\t\t...latencyData.opPerfData,\n\t\t\t});\n\n\t\t\tthis.clientSequenceNumberForLatencyStatistics = undefined;\n\t\t\tthis.latencyStatistics.delete(message.clientSequenceNumber);\n\t\t}\n\n\t\tif (isRuntimeMessage(message)) {\n\t\t\t// Sampled logging of Ops that have been processed by the current client, the NoOp sent and the\n\t\t\t// size of the ops processed within one sampling window of this log event.\n\t\t\t// This data will be used to monitor the efficiency of NoOp-heuristics or to get approximate collab window size.\n\t\t\tthis.opsLogger.sendPerformanceEvent({\n\t\t\t\teventName: \"OpStats\",\n\t\t\t\t// Logging as 'details' property to avoid adding new column name to the log tables */\n\t\t\t\tdetails: {\n\t\t\t\t\t// Count of the ops processed by the current client. Note: these counts are after\n\t\t\t\t\t// compression/grouping/chunking (if enabled) of the ops.\n\t\t\t\t\tprocessedOpCount: OpPerfTelemetry.PROCESSED_OPS_SAMPLE_RATE,\n\t\t\t\t\t// Cumulative size of all the ops processed by the current client since the last OpStats event log\n\t\t\t\t\tprocessedOpSize: this.processedOpSizeForTelemetry,\n\t\t\t\t\t// Count of all the NoOp sent by the current client since the last OpStats event log\n\t\t\t\t\tsubmitedNoOpCount: this.noOpCountForTelemetry,\n\t\t\t\t},\n\t\t\t});\n\t\t}\n\t}\n}\n\n/**\n * Starts monitoring and generation of telemetry related to op performance.\n *\n * @param clientId - The clientId of the current container.\n * @param deltaManager - DeltaManager instance to monitor.\n * @param containerRuntimeEvents - Emitter of events for the container runtime.\n * @param logger - Telemetry logger to write events to.\n */\nexport function ReportOpPerfTelemetry(\n\tclientId: string | undefined,\n\tdeltaManager: IDeltaManagerFull,\n\tcontainerRuntimeEvents: IEventProvider<IContainerRuntimeEvents>,\n\tlogger: ITelemetryBaseLogger,\n): void {\n\tnew OpPerfTelemetry(\n\t\tclientId,\n\t\tdeltaManager,\n\t\tcontainerRuntimeEvents,\n\t\tcreateChildLogger({ logger }),\n\t);\n}\n"]}
|
|
@@ -18,7 +18,7 @@ import type { IIdCompressorCore, SerializedIdCompressorWithOngoingSession } from
|
|
|
18
18
|
import { FlushMode } from "@fluidframework/runtime-definitions/internal";
|
|
19
19
|
import type { ISummaryTreeWithStats, ITelemetryContext, IGarbageCollectionData, CreateChildSummarizerNodeParam, IDataStore, IFluidDataStoreContextDetached, IFluidDataStoreRegistry, IFluidParentContext, NamedFluidDataStoreRegistryEntries, SummarizeInternalFn, ISummarizerNodeWithGC, StageControlsInternal, IContainerRuntimeBaseInternal, MinimumVersionForCollab, ContainerExtensionExpectations } from "@fluidframework/runtime-definitions/internal";
|
|
20
20
|
import { TelemetryContext } from "@fluidframework/runtime-utils/internal";
|
|
21
|
-
import type {
|
|
21
|
+
import type { TelemetryLoggerExt } from "@fluidframework/telemetry-utils/internal";
|
|
22
22
|
import { type IPendingBlobs, type IBlobManagerLoadInfo } from "./blobManager/index.js";
|
|
23
23
|
import type { ICompressionRuntimeOptions } from "./compressionDefinitions.js";
|
|
24
24
|
import { GCNodeType, type IGCRuntimeOptions, type IGCStats, type IGarbageCollectionRuntime } from "./gc/index.js";
|
|
@@ -274,7 +274,7 @@ export declare const makeLegacySendBatchFn: (submitFn: (type: MessageType, conte
|
|
|
274
274
|
* to understand if/when it is hit.
|
|
275
275
|
* We only want to log this once, to avoid spamming telemetry if we are wrong and these cases are hit commonly.
|
|
276
276
|
*/
|
|
277
|
-
export declare let getSingleUseLegacyLogCallback: (logger:
|
|
277
|
+
export declare let getSingleUseLegacyLogCallback: (logger: TelemetryLoggerExt, type: string) => (codePath: string) => void;
|
|
278
278
|
/**
|
|
279
279
|
* A {@link TypedMessage} that has unknown content explicitly
|
|
280
280
|
* noted as deserialized JSON.
|
|
@@ -371,7 +371,6 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
|
|
|
371
371
|
private readonly electedSummarizerData;
|
|
372
372
|
private readonly runtimeOptions;
|
|
373
373
|
private readonly containerScope;
|
|
374
|
-
readonly baseLogger: ITelemetryBaseLogger;
|
|
375
374
|
private readonly _storage;
|
|
376
375
|
private readonly createIdCompressorFn;
|
|
377
376
|
private readonly documentsSchemaController;
|
|
@@ -444,6 +443,17 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
|
|
|
444
443
|
get IFluidDataStoreRegistry(): IFluidDataStoreRegistry;
|
|
445
444
|
private readonly _getAttachState;
|
|
446
445
|
get attachState(): AttachState;
|
|
446
|
+
/**
|
|
447
|
+
* Whether local op submission is currently disallowed.
|
|
448
|
+
*
|
|
449
|
+
* This is `true` in two distinct situations.
|
|
450
|
+
*
|
|
451
|
+
* First: the delta manager reports a read-only connection (host/service-imposed permission or connection state — the historical meaning of `readOnly`).
|
|
452
|
+
*
|
|
453
|
+
* Second: the `PendingStateManager` is replaying stashed ops (`isApplyingStashedOps`). During this window DDSes must not submit new local ops, as doing so would interleave fresh content ahead of the stashed pending stream and corrupt pending local state. Surfacing it through `isReadOnly()` lets DDSes that consult `readOnly` at realize time self-suppress; see the apply-lifecycle docs on `PendingStateManager` for the full rationale.
|
|
454
|
+
*
|
|
455
|
+
* Note this layers a third meaning ("transiently quiescing for stashed-op replay") onto the `readOnly` predicate, which is broader than its host/connection-permission origin.
|
|
456
|
+
*/
|
|
447
457
|
readonly isReadOnly: () => boolean;
|
|
448
458
|
/**
|
|
449
459
|
* Current session schema - defines what options are on & off.
|
|
@@ -595,6 +605,7 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
|
|
|
595
605
|
*/
|
|
596
606
|
get ILayerCompatDetails(): ILayerCompatDetails;
|
|
597
607
|
private readonly extensions;
|
|
608
|
+
readonly baseLogger: ITelemetryBaseLogger;
|
|
598
609
|
/***/
|
|
599
610
|
protected constructor(context: IContainerContext, registry: IFluidDataStoreRegistry, metadata: IContainerRuntimeMetadata | undefined, electedSummarizerData: ISerializedElection | undefined, chunks: [string, string[]][], dataStoreAliasMap: [string, string][], runtimeOptions: Readonly<ContainerRuntimeOptionsInternal>, containerScope: FluidObject, baseLogger: ITelemetryBaseLogger, existing: boolean, blobManagerLoadInfo: IBlobManagerLoadInfo, _storage: IContainerStorageService, createIdCompressorFn: () => IIdCompressor & IIdCompressorCore, documentsSchemaController: DocumentsSchemaController, featureGatesForTelemetry: Record<string, boolean | number | undefined>, provideEntryPoint: (containerRuntime: IContainerRuntime) => Promise<FluidObject>, minVersionForCollab: MinimumVersionForCollab, requestHandler?: ((request: IRequest, runtime: IContainerRuntime) => Promise<IResponse>) | undefined, summaryConfiguration?: ISummaryConfiguration, recentBatchInfo?: [number, string][]);
|
|
600
611
|
onSchemaChange(schema: IDocumentSchemaCurrent): void;
|
|
@@ -843,7 +854,7 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
|
|
|
843
854
|
/**
|
|
844
855
|
* Logger to use for correlated summary events
|
|
845
856
|
*/
|
|
846
|
-
summaryLogger?:
|
|
857
|
+
summaryLogger?: TelemetryLoggerExt;
|
|
847
858
|
/**
|
|
848
859
|
* True to run garbage collection before summarizing; defaults to true
|
|
849
860
|
*/
|
|
@@ -918,7 +929,7 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
|
|
|
918
929
|
/**
|
|
919
930
|
* Logger to use for logging GC events
|
|
920
931
|
*/
|
|
921
|
-
logger?:
|
|
932
|
+
logger?: TelemetryLoggerExt;
|
|
922
933
|
/**
|
|
923
934
|
* True to run GC sweep phase after the mark phase
|
|
924
935
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"containerRuntime.d.ts","sourceRoot":"","sources":["../src/containerRuntime.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"containerRuntime.d.ts","sourceRoot":"","sources":["../src/containerRuntime.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EACX,mBAAmB,EACnB,0BAA0B,EAC1B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAIN,iBAAiB,EACjB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EACX,SAAS,EAET,uBAAuB,EAEvB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AACpE,OAAO,KAAK,EACX,iBAAiB,EACjB,0BAA0B,EAC1B,QAAQ,EACR,aAAa,EAGb,wBAAwB,EACxB,gBAAgB,EAChB,MAAM,gDAAgD,CAAC;AAKxD,OAAO,KAAK,EACX,yBAAyB,EACzB,oBAAoB,EAIpB,0BAA0B,EAC1B,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,EAEzB,6CAA6C,EAG7C,MAAM,wDAAwD,CAAC;AAChE,OAAO,KAAK,EACX,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,SAAS,EACT,oBAAoB,EAEpB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,EACX,mBAAmB,EACnB,oBAAoB,EACpB,0BAA0B,EAC1B,eAAe,EACf,sBAAsB,EACtB,YAAY,EACZ,MAAM,0CAA0C,CAAC;AAWlD,OAAO,KAAK,EACX,cAAc,EACd,cAAc,EACd,YAAY,EACZ,MAAM,oCAAoC,CAAC;AAE5C,OAAO,KAAK,EACX,gBAAgB,EAChB,yBAAyB,EACzB,cAAc,EAEd,aAAa,EAIb,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAAe,WAAW,EAAE,MAAM,6CAA6C,CAAC;AAEvF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,KAAK,EACX,iBAAiB,EAGjB,wCAAwC,EACxC,MAAM,wCAAwC,CAAC;AAOhD,OAAO,EACN,SAAS,EAGT,MAAM,8CAA8C,CAAC;AACtD,OAAO,KAAK,EACX,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,8BAA8B,EAC9B,UAAU,EACV,8BAA8B,EAC9B,uBAAuB,EACvB,mBAAmB,EAGnB,kCAAkC,EAClC,mBAAmB,EAGnB,qBAAqB,EACrB,qBAAqB,EACrB,6BAA6B,EAC7B,uBAAuB,EACvB,8BAA8B,EAC9B,MAAM,8CAA8C,CAAC;AACtD,OAAO,EAaN,gBAAgB,EAChB,MAAM,wCAAwC,CAAC;AAChD,OAAO,KAAK,EAIX,kBAAkB,EAElB,MAAM,0CAA0C,CAAC;AAyBlD,OAAO,EAEN,KAAK,aAAa,EAKlB,KAAK,oBAAoB,EACzB,MAAM,wBAAwB,CAAC;AAUhC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC;AAmB9E,OAAO,EACN,UAAU,EAEV,KAAK,iBAAiB,EACtB,KAAK,QAAQ,EAGb,KAAK,yBAAyB,EAC9B,MAAM,eAAe,CAAC;AAEvB,OAAO,EAEN,KAAK,4BAA4B,EACjC,KAAK,kCAAkC,EAKvC,KAAK,4BAA4B,EACjC,KAAK,qCAAqC,EAE1C,MAAM,mBAAmB,CAAC;AAE3B,OAAO,EAaN,KAAK,aAAa,EAElB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,EAEN,KAAK,kBAAkB,EAIvB,MAAM,0BAA0B,CAAC;AASlC,OAAO,EAKN,yBAAyB,EAEzB,KAAK,sBAAsB,EAK3B,KAAK,yBAAyB,EAG9B,KAAK,gBAAgB,EAErB,KAAK,sBAAsB,EAC3B,KAAK,uBAAuB,EAC5B,KAAK,wBAAwB,EAG7B,KAAK,yBAAyB,EAC9B,KAAK,yBAAyB,EAE9B,KAAK,mBAAmB,EAGxB,KAAK,qBAAqB,EAC1B,KAAK,iBAAiB,EACtB,KAAK,4BAA4B,EACjC,KAAK,kBAAkB,EACvB,KAAK,qBAAqB,EAQ1B,KAAK,mBAAmB,EASxB,MAAM,oBAAoB,CAAC;AAkD5B;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACtC;;OAEG;IACH,sBAAsB,CAAC,EAAE,qBAAqB,CAAC;IAE/C;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,MAAM,CAAC;CAClC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,uBAAuB;IACvC,QAAQ,CAAC,cAAc,EAAE,sBAAsB,CAAC;IAChD,QAAQ,CAAC,SAAS,EAAE,iBAAiB,CAAC;IACtC;;;;;;;OAOG;IACH,QAAQ,CAAC,8BAA8B,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;IAEpE;;OAEG;IACH,QAAQ,CAAC,kBAAkB,EAAE,0BAA0B,CAAC;IACxD;;;;;;;;;OASG;IACH,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC;;;;;;;;;;;;OAYG;IACH,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAElC;;;OAGG;IACH,QAAQ,CAAC,yBAAyB,EAAE,gBAAgB,CAAC;IAErD;;;;;;;OAOG;IACH,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IAExC;;;;;;OAMG;IACH,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;IAExC;;;OAGG;IACH,QAAQ,CAAC,wBAAwB,EAAE,IAAI,GAAG,SAAS,CAAC;IAEpD;;;;;;;;;OASG;IACH,QAAQ,CAAC,6BAA6B,EAAE,MAAM,CAAC;IAE/C;;;;OAIG;IACH,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;CACvC;AAED;;;;GAIG;AACH,MAAM,MAAM,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC;AAExE;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,+BAAgC,SAAQ,uBAAuB;IAC/E;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAE9B;;;OAGG;IACH,QAAQ,CAAC,qBAAqB,EAAE,OAAO,CAAC;CACxC;AAED;;;;GAIG;AACH,MAAM,MAAM,gCAAgC,GAAG,OAAO,CAAC,+BAA+B,CAAC,CAAC;AAExF;;;GAGG;AACH,eAAO,MAAM,wBAAwB,eAAe,CAAC;AACrD;;;GAGG;AACH,eAAO,MAAM,0BAA0B,iBAAiB,CAAC;AACzD;;;;;;GAMG;AACH,eAAO,MAAM,yBAAyB,eAAe,CAAC;AAEtD;;;GAGG;AACH,MAAM,WAAW,iBAAiB;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,cAAc,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,QAAQ,CAAC,iBAAiB,CAIhE,CAAC;AAeF;;;;GAIG;AACH,MAAM,WAAW,oBAAoB;IACpC;;OAEG;IACH,OAAO,CAAC,EAAE,kBAAkB,CAAC;IAC7B;;OAEG;IACH,sBAAsB,CAAC,EAAE,aAAa,CAAC;IACvC;;OAEG;IACH,wBAAwB,CAAC,EAAE,wCAAwC,CAAC;IAEpE;;OAEG;IACH,yBAAyB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/C;AAsBD;;GAEG;AACH,eAAO,MAAM,8BAA8B,OAAO,CAAC;AACnD;;GAEG;AACH,eAAO,MAAM,6BAA6B,OAAO,CAAC;AASlD;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAEpF;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAG7C,wBAAgB,aAAa,IAAI;IAChC,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,mBAAmB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACzC,CAMA;AAED;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,aAEtB,CACT,IAAI,EAAE,WAAW,EACjB,QAAQ,EAAE,OAAO,EACjB,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,OAAO,KACb,MAAM,gBACG,KAAK,cAAc,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,aAErD,aAAa,KAAG,MAgBvB,CAAC;AAgBH;;;;GAIG;AACH,eAAO,IAAI,6BAA6B,WAAY,kBAAkB,QAAQ,MAAM,gBACjE,MAAM,KAAG,IAU3B,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,2BAA4B,SAAQ,YAAY;IAChE,OAAO,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAC;CACzC;AAID;;;GAGG;AACH,MAAM,WAAW,0BAA0B;IAC1C;;OAEG;IACH,OAAO,EAAE,iBAAiB,CAAC;IAC3B;;OAEG;IACH,eAAe,EAAE,kCAAkC,CAAC;IACpD;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,cAAc,CAAC,EAAE,wBAAwB,CAAC;IAC1C;;OAEG;IACH,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B;;OAEG;IACH,iBAAiB,EAAE,CAAC,gBAAgB,EAAE,iBAAiB,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IAEjF;;;;SAIK;IACL,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IAEvF;;;;;;;;;;;;;;;;;;OAkBG;IACH,mBAAmB,CAAC,EAAE,uBAAuB,CAAC;CAC9C;AACD;;;;;GAKG;AACH,wBAAsB,oBAAoB,CACzC,MAAM,EAAE,0BAA0B,GAChC,OAAO,CAAC,iBAAiB,GAAG,QAAQ,CAAC,CAEvC;AAED;;;;;;;;GAQG;AACH,wBAAsB,yBAAyB,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC;IAC5F,OAAO,EAAE,iBAAiB,GAAG,QAAQ,CAAC;CACtC,CAAC,CAKD;AAyBD;;;;;GAKG;AACH,qBAAa,gBACZ,SAAQ,iBAAiB,CAAC,uBAAuB,CACjD,YACC,yBAAyB,EACzB,6BAA6B,EAE7B,6CAA6C,EAC7C,QAAQ,EACR,yBAAyB,EACzB,kBAAkB,EAClB,4BAA4B,EAM5B,IAAI,CAAC,mBAAmB,EAAE,eAAe,GAAG,cAAc,CAAC,EAC3D,0BAA0B,EAC1B,0BAA0B;IAqtB1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAEzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAEzB,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IAGtC,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAM/B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IAErC,OAAO,CAAC,QAAQ,CAAC,yBAAyB;aAG1B,mBAAmB,EAAE,uBAAuB;IAC5D,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IAKhC,OAAO,CAAC,QAAQ,CAAC,oBAAoB;IA7uBtC;;;;;;;;;;;;OAYG;WACiB,WAAW,CAC9B,MAAM,EAAE,0BAA0B,GAAG;QACpC;;;;WAIG;QACH,oBAAoB,CAAC,EAAE,OAAO,gBAAgB,CAAC;KAC/C,GACC,OAAO,CAAC,gBAAgB,CAAC;IAO5B;;;;;;OAMG;WACiB,YAAY,CAC/B,MAAM,EAAE,IAAI,CAAC,0BAA0B,EAAE,iBAAiB,GAAG,gBAAgB,CAAC,GAAG;QAChF;;WAEG;QACH,QAAQ,EAAE,uBAAuB,CAAC;QAClC;;;;WAIG;QACH,oBAAoB,CAAC,EAAE,OAAO,gBAAgB,CAAC;QAC/C;;WAEG;QACH,cAAc,CAAC,EAAE,gCAAgC,CAAC;KAClD,GACC,OAAO,CAAC;QAAE,OAAO,EAAE,gBAAgB,CAAA;KAAE,CAAC;IAsWzC,SAAgB,OAAO,EAAE,MAAM,CAAC,MAAM,GAAG,MAAM,EAAE,OAAO,CAAC,CAAC;IAE1D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAA2B;IACxD,IAAW,QAAQ,IAAI,MAAM,GAAG,SAAS,CAExC;IAED,SAAgB,aAAa,EAAE,cAAc,CAAC;IAE9C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAE7C,IAAW,OAAO,IAAI,wBAAwB,CAE7C;IAED,IAAW,gBAAgB,IAAI,gBAAgB,CAE9C;IAED,OAAO,CAAC,QAAQ,CAAC,eAAe,CAGpB;IACZ,OAAO,CAAC,QAAQ,CAAC,cAAc,CAGrB;IACV,SAAgB,SAAS,EAAE,CAAC,KAAK,CAAC,EAAE,uBAAuB,KAAK,IAAI,CAAC;IAErE;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2C;IAEnE,IAAW,SAAS,IAAI,SAAS,CAEhC;IAED,IAAW,KAAK,IAAI,WAAW,CAE9B;IAED,IAAW,uBAAuB,IAAI,uBAAuB,CAE5D;IAED,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoB;IACpD,IAAW,WAAW,IAAI,WAAW,CAEpC;IAED;;;;;;;;;;OAUG;IACH,SAAgB,UAAU,QAAO,OAAO,CAOiB;IAEzD;;;;;;;;;OASG;IACH,IAAW,aAAa,IAAI;SAC1B,CAAC,IAAI,MAAM,uBAAuB,CAAC,CAAC,EAAE,uBAAuB,CAAC,CAAC,CAAC,SAAS,OAAO,GAC9E,IAAI,GACJ,uBAAuB,CAAC,CAAC,CAAC;KAC7B,CAEA;IAED,OAAO,CAAC,aAAa,CAAkD;IAIvE,OAAO,CAAC,sBAAsB,CAAyB;IAMvD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAU;IAEjD;;OAEG;IACH,IAAW,YAAY,IAAI,CAAC,aAAa,GAAG,iBAAiB,CAAC,GAAG,SAAS,CASzE;IAED;;OAEG;IACI,wBAAwB,IAAI,MAAM,GAAG,MAAM;IAIlD,IAAW,mBAAmB,IAAI,mBAAmB,CAEpD;IACD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA8B;IAE5D;;;;OAIG;IACH,IAAW,YAAY,IAAI,aAAa,CAAC,yBAAyB,EAAE,gBAAgB,CAAC,CAEpF;IAED,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwB;IAEtD;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IAGtD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAoB;IAEvC,OAAO,CAAC,wBAAwB,CAAC,CAA2B;IAC5D;;;;OAIG;IACH,OAAO,CAAC,cAAc,CAAC,CAAiB;IAExC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA4B;IAE3D,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAS;IAElD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAyB;IACrD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAY;IACvC,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAS;IACvD;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAU;IACjD,OAAO,CAAC,cAAc,CAAS;IAE/B,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,cAAc,CAAsB;IAE5C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAwB;IAE5D,OAAO,CAAC,qBAAqB,CAAK;IAElC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAoB;IAE1D;;;;;OAKG;IACI,wBAAwB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC;IAIxD;;;OAGG;IACH,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED;;OAEG;IACH,IAAW,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAElD;IAED,OAAO,CAAC,SAAS,CAAS;IAC1B,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAED,OAAO,CAAC,gBAAgB,CAAU;IAClC,OAAO,CAAC,sBAAsB,CAAQ;IACtC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAU;IAClD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAS;IAEhD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAgC;IAEvE;;;;OAIG;IAEH,OAAO,CAAC,WAAW,CAAC,CAAa;IACjC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAyB;IAChE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAC1D,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAqC;IAC5E,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAoB;IAErD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IACtD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAyB;IAEhE;;OAEG;IAEH,OAAO,CAAC,oBAAoB,CAAsC;IAElE,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAU;IAE5C,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAA2B;IACnE;;;OAGG;IACH,OAAO,CAAC,iBAAiB,CAAS;IAElC;;;OAGG;IAEH,IAAW,6BAA6B,IAAI,OAAO,CAElD;IAED;;;OAGG;IAEH,IAAW,uBAAuB,IAAI,OAAO,CAE5C;IAED;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAS;IAE7C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAqB;IAEzD,OAAO,CAAC,QAAQ,CAAC,6BAA6B,CAAU;IAExD;;OAEG;IACH,OAAO,CAAC,uBAAuB,CAA8B;IAE7D;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAE7C;IAEH;;;OAGG;IACH,IAAW,mBAAmB,IAAI,mBAAmB,CAEpD;IAED,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAmD;IAE9E,SAAgB,UAAU,EAAE,oBAAoB,CAAC;IAEjD,KAAK;IACL,SAAS,aACR,OAAO,EAAE,iBAAiB,EACT,QAAQ,EAAE,uBAAuB,EAEjC,QAAQ,EAAE,yBAAyB,GAAG,SAAS,EAE/C,qBAAqB,EAAE,mBAAmB,GAAG,SAAS,EACvE,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAAE,EAC5B,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EACpB,cAAc,EAAE,QAAQ,CAAC,+BAA+B,CAAC,EACzD,cAAc,EAAE,WAAW,EAE5C,UAAU,EAAE,oBAAoB,EAChC,QAAQ,EAAE,OAAO,EAEjB,mBAAmB,EAAE,oBAAoB,EACxB,QAAQ,EAAE,wBAAwB,EAClC,oBAAoB,EAAE,MAAM,aAAa,GAAG,iBAAiB,EAE7D,yBAAyB,EAAE,yBAAyB,EACrE,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAAC,EACtE,iBAAiB,EAAE,CAAC,gBAAgB,EAAE,iBAAiB,KAAK,OAAO,CAAC,WAAW,CAAC,EAChE,mBAAmB,EAAE,uBAAuB,EAC3C,cAAc,CAAC,aACtB,QAAQ,WACR,iBAAiB,KACtB,QAAQ,SAAS,CAAC,aAAA,EAEN,oBAAoB,GAAE,qBAKtC,EACD,eAAe,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE;IAwlB9B,cAAc,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI;IAmBpD,8BAA8B,CACpC,EAAE,EAAE,MAAM,EACV,WAAW,EAAE,8BAA8B,uBAGvB,mBAAmB,eACzB,CAAC,MAAM,CAAC,EAAE,OAAO,KAAK,QAAQ,sBAAsB,CAAC,KAChE,qBAAqB;IAUlB,yBAAyB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAM3C,kBAAkB,IAAI,IAAI;IAI1B,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAM7C;;OAEG;YACW,mBAAmB;YAyBnB,oBAAoB;IAwI3B,KAAK,IAAI,IAAI;IAIb,OAAO,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI;IAiCnC;;;;;OAKG;IACU,4BAA4B,CACxC,eAAe,EAAE,MAAM,EAAE,EACzB,SAAS,EAAE,MAAM,EAAE,GACjB,OAAO,CAAC;QAAE,YAAY,EAAE,aAAa,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IAmGnE;;;;;;;OAOG;IACH,OAAO,CAAC,sBAAsB;IAe9B;;;;OAIG;YAEW,OAAO;IA0BrB;;;OAGG;IACU,aAAa,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;IAoCjE;;OAEG;IACU,aAAa,IAAI,OAAO,CAAC,WAAW,CAAC;IAGlD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2B;IAEtD,OAAO,CAAC,UAAU;IAIlB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAoC5B,SAAS,CAAC,0BAA0B,CACnC,WAAW,EAAE,qBAAqB,EAClC,QAAQ,EAAE,OAAO,EACjB,UAAU,EAAE,OAAO,EACnB,gBAAgB,CAAC,EAAE,iBAAiB,GAClC,IAAI;IAiDP,OAAO,CAAC,0BAA0B;IA2BlC,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,mBAAmB;IAqD3B;;;OAGG;IACH,OAAO,CAAC,mBAAmB;YAOb,cAAc;IAiD5B,OAAO,CAAC,gBAAgB;IAoCxB,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAC4B;IAEzD,kBAAkB,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI;IAIhE,mBAAmB,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI;IA+C1D,OAAO,CAAC,2CAA2C;IAmBnD;;;;OAIG;IACH,OAAO,CAAC,sBAAsB;IA4D9B;;;;;;OAMG;IACH,OAAO,CAAC,2BAA2B;IA+BtB,cAAc,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9E;;;;OAIG;IACI,OAAO,CAAC,EAAE,GAAG,WAAW,EAAE,EAAE,yBAAyB,EAAE,KAAK,EAAE,OAAO,GAAG,IAAI;IAcnF;;;;;OAKG;IACH,OAAO,CAAC,4BAA4B;IAuJpC,OAAO,CAAC,8BAA8B,CAAqB;IAE3D;;;;;;;;OAQG;IACH,OAAO,CAAC,sBAAsB;IAqH9B;;;OAGG;IACH,OAAO,CAAC,wBAAwB;IAqBhC;;;;;;;;;;OAUG;IACH,OAAO,CAAC,iCAAiC;IA+DzC,OAAO,CAAC,2BAA2B;IA6B5B,aAAa,CACnB,OAAO,EAAE,cAAc,CAAC;QACvB,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,eAAe,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,sBAAsB,CAAC,OAAO,CAAC,CAAA;SAAE,CAAC,CAAC;KACrF,CAAC,EACF,KAAK,EAAE,OAAO,GACZ,IAAI;IA4BP,OAAO,CAAC,uBAAuB;IAyC/B;;;;;;OAMG;IACH,OAAO,CAAC,KAAK;IAsBb;;OAEG;IACI,iBAAiB,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,GAAG,CAAC;IA6EjD,OAAO,CAAC,aAAa,CAAoC;IAEzD;;;;OAIG;IACH,IAAW,aAAa,IAAI,OAAO,CAElC;IAED;;;;;;;;;OASG;IACI,gBAAgB,QAAO,qBAAqB,CAAqC;IAExF;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAiGnC;IAEF;;;;;OAKG;IACU,6BAA6B,CACzC,KAAK,EAAE,MAAM,GACX,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;IAgC1C,uBAAuB,CAC7B,GAAG,EAAE,SAAS,MAAM,EAAE,EACtB,cAAc,CAAC,EAAE,MAAM,GACrB,8BAA8B;IAIpB,eAAe,CAC3B,GAAG,EAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC,EAChC,cAAc,CAAC,EAAE,MAAM,GACrB,OAAO,CAAC,UAAU,CAAC;IAatB,OAAO,CAAC,aAAa;IAMrB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAiB;IAClC,SAAS,IAAI,cAAc;IAIlC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAY;IAC/B,WAAW,IAAI,SAAS;IAI/B;;;;;OAKG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAY;IAE5C;;;OAGG;IACH,IAAW,OAAO,IAAI,OAAO,CAI5B;IAED;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAQhC;;;;;;;;;;;OAWG;IACI,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI;IAQ3E,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,SAAS,GAAG,WAAW,CAAC,QAAQ,GAAG,IAAI;IAkBtF;;;;;;;OAOG;IACI,aAAa,CACnB,iBAAiB,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EACvC,gBAAgB,CAAC,EAAE,iBAAiB,GAClC,YAAY;IA4Bf,SAAgB,cAAc,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IAErF;;;;;OAKG;YACW,iBAAiB;IAyB/B;;OAEG;IACU,SAAS,CAAC,OAAO,EAAE;QAC/B;;WAEG;QACH,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB;;WAEG;QACH,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB;;WAEG;QACH,aAAa,CAAC,EAAE,kBAAkB,CAAC;QACnC;;WAEG;QACH,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB;;WAEG;QACH,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB;;WAEG;QACH,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB;;WAEG;QACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;KACpC,GAAG,OAAO,CAAC,qBAAqB,CAAC;YAkDpB,iBAAiB;IAI/B;;;;OAIG;IACU,SAAS,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAUzE;;;;OAIG;IACI,gBAAgB,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAU5D;;;;OAIG;IACI,qBAAqB,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE;IAUpF;;;;;;;OAOG;IACI,sBAAsB,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI;IAKxE;;OAEG;IACI,8BAA8B,IAAI,MAAM,GAAG,SAAS;IAM3D;;;OAGG;IAEI,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU;IAQhD;;;OAGG;IACU,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAuB3F;;;;;OAKG;IACH,OAAO,CAAC,gCAAgC;IAgBxC;;;OAGG;IACU,cAAc,CAC1B,OAAO,EAAE;QACR;;WAEG;QACH,MAAM,CAAC,EAAE,kBAAkB,CAAC;QAC5B;;WAEG;QACH,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB;;WAEG;QACH,MAAM,CAAC,EAAE,OAAO,CAAC;KACjB,EACD,gBAAgB,CAAC,EAAE,iBAAiB,GAClC,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAIhC;;;;;;OAMG;IACI,oBAAoB,CAC1B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,kBAAkB,CAAC,EAAE,MAAM,GACzB,IAAI;IAmBP;;;;;;;OAOG;IAEU,aAAa,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA6WxF;;;;;;;;;;OAUG;YACW,6BAA6B;IAoD3C,OAAO,KAAK,oBAAoB,GAE/B;IAED,OAAO,CAAC,kBAAkB;IAI1B;;;;;;;OAOG;IACH,OAAO,CAAC,wBAAwB;IAczB,aAAa,CACnB,uBAAuB,EACpB,kCAAkC,GAClC,qCAAqC,GACrC,4BAA4B,EAC/B,eAAe,GAAE,OAAmB,GAClC,IAAI;IAIM,UAAU,CACtB,IAAI,EAAE,eAAe,EACrB,MAAM,CAAC,EAAE,WAAW,GAClB,OAAO,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;IAKjD;;;;;;;;;;;OAWG;IACI,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAIxE,OAAO,CAAC,MAAM;IA8Id,OAAO,CAAC,aAAa;IA0CrB,OAAO,CAAC,oBAAoB;IAgB5B;;;OAGG;IACH,OAAO,CAAC,eAAe;IAMvB;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,aAAa;IA6BrB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IA2B7B;;;;OAIG;IACH,OAAO,CAAC,QAAQ;IAsDhB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAmC5B;;OAEG;IACU,uBAAuB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC;IA8CvF,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CACE;IAEnC;;;;;;OAMG;YACW,gCAAgC;IAwFvC,oBAAoB,CAAC,KAAK,CAAC,EAAE,0BAA0B,GAAG,OAAO;IAkDxE;;;;;;;;OAQG;IACI,iBAAiB,QAAO,IAAI,CA0BjC;IAEK,iBAAiB,CAAC,OAAO,EAAE,yBAAyB,GAAG,iBAAiB;IAaxE,gBAAgB,CAAC,OAAO,EAAE,wBAAwB,GAAG,sBAAsB;IAgBlF,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAiBrC;IAEH,OAAO,CAAC,eAAe;IAiBvB,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAI5B;IAEH,gBAAgB,CACtB,CAAC,EACD,kBAAkB,SAAS,0BAA0B,EACrD,WAAW,SAAS,OAAO,EAAE,EAE7B,EAAE,EAAE,oBAAoB,EACxB,OAAO,EAAE,yBAAyB,CAAC,CAAC,EAAE,kBAAkB,EAAE,WAAW,CAAC,EACtE,GAAG,UAAU,EAAE,WAAW,GACxB,CAAC;IASG,YAAY,CAClB,CAAC,EACD,kBAAkB,SAAS,0BAA0B,EACrD,WAAW,SAAS,OAAO,EAAE,EAE7B,EAAE,EAAE,oBAAoB,EACxB,YAAY,EAAE,8BAA8B,EAC5C,GAAG,UAAU,EAAE,WAAW,GACxB,CAAC;IAWJ,OAAO,CAAC,wBAAwB;IA0FhC,OAAO,KAAK,sBAAsB,GAEjC;CACD;AAED,wBAAgB,2BAA2B,CAAC,EAC3C,IAAI,EACJ,QAAQ,GACR,EAAE,4BAA4B,GAAG,OAAO,CA4BxC"}
|
package/dist/containerRuntime.js
CHANGED
|
@@ -632,14 +632,31 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
|
|
|
632
632
|
this.electedSummarizerData = electedSummarizerData;
|
|
633
633
|
this.runtimeOptions = runtimeOptions;
|
|
634
634
|
this.containerScope = containerScope;
|
|
635
|
-
this.baseLogger = baseLogger;
|
|
636
635
|
this._storage = _storage;
|
|
637
636
|
this.createIdCompressorFn = createIdCompressorFn;
|
|
638
637
|
this.documentsSchemaController = documentsSchemaController;
|
|
639
638
|
this.minVersionForCollab = minVersionForCollab;
|
|
640
639
|
this.requestHandler = requestHandler;
|
|
641
640
|
this.summaryConfiguration = summaryConfiguration;
|
|
642
|
-
|
|
641
|
+
/**
|
|
642
|
+
* Whether local op submission is currently disallowed.
|
|
643
|
+
*
|
|
644
|
+
* This is `true` in two distinct situations.
|
|
645
|
+
*
|
|
646
|
+
* First: the delta manager reports a read-only connection (host/service-imposed permission or connection state — the historical meaning of `readOnly`).
|
|
647
|
+
*
|
|
648
|
+
* Second: the `PendingStateManager` is replaying stashed ops (`isApplyingStashedOps`). During this window DDSes must not submit new local ops, as doing so would interleave fresh content ahead of the stashed pending stream and corrupt pending local state. Surfacing it through `isReadOnly()` lets DDSes that consult `readOnly` at realize time self-suppress; see the apply-lifecycle docs on `PendingStateManager` for the full rationale.
|
|
649
|
+
*
|
|
650
|
+
* Note this layers a third meaning ("transiently quiescing for stashed-op replay") onto the `readOnly` predicate, which is broader than its host/connection-permission origin.
|
|
651
|
+
*/
|
|
652
|
+
this.isReadOnly = () =>
|
|
653
|
+
// `_deltaManager` and `pendingStateManager` are both assigned partway
|
|
654
|
+
// through the constructor; `baseLogger` is built earlier and stamps
|
|
655
|
+
// `isReadOnly` on every error event (e.g. layer-compat failures
|
|
656
|
+
// during construction), so this can be called before either is
|
|
657
|
+
// assigned. Optional chains keep that window safe.
|
|
658
|
+
this._deltaManager?.readOnlyInfo.readonly === true ||
|
|
659
|
+
this.pendingStateManager?.isApplyingStashedOps === true;
|
|
643
660
|
// We accumulate Id compressor Ops while Id compressor is not loaded yet (only for "delayed" mode)
|
|
644
661
|
// Once it loads, it will process all such ops and we will stop accumulating further ops - ops will be processes as they come in.
|
|
645
662
|
this.pendingIdCompressorOps = [];
|
|
@@ -658,7 +675,13 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
|
|
|
658
675
|
expiry: { policy: "absolute", durationMs: 60000 },
|
|
659
676
|
});
|
|
660
677
|
this.extensions = new Map();
|
|
661
|
-
|
|
678
|
+
// Boolean payload from the `"readonly"` delta-manager event is intentionally
|
|
679
|
+
// ignored — `isReadOnly()` aggregates delta-manager readonly with the PSM
|
|
680
|
+
// apply window, and that aggregation is the source of truth for fanout.
|
|
681
|
+
// `channelCollection?.` guards against future wiring changes; both callers
|
|
682
|
+
// today (the `"readonly"` listener and `onAfterStashedOpsApplied`) fire
|
|
683
|
+
// after `channelCollection` is assigned.
|
|
684
|
+
this.notifyReadOnlyState = (_readonly) => this.channelCollection?.notifyReadOnlyState(this.isReadOnly());
|
|
662
685
|
/**
|
|
663
686
|
* Enter Staging Mode, such that ops submitted to the ContainerRuntime will not be sent to the ordering service.
|
|
664
687
|
* To exit Staging Mode, call either discardChanges or commitChanges on the Stage Controls returned from this method.
|
|
@@ -817,15 +840,20 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
|
|
|
817
840
|
// In old loaders without dispose functionality, closeFn is equivalent but will also switch container to readonly mode
|
|
818
841
|
this.disposeFn = disposeFn ?? closeFn;
|
|
819
842
|
this.isSnapshotInstanceOfISnapshot = snapshotWithContents !== undefined;
|
|
820
|
-
this.
|
|
821
|
-
logger:
|
|
822
|
-
namespace: "ContainerRuntime",
|
|
843
|
+
this.baseLogger = (0, internal_8.createChildLogger)({
|
|
844
|
+
logger: baseLogger,
|
|
823
845
|
properties: {
|
|
824
|
-
|
|
825
|
-
inStagingMode: this.inStagingMode,
|
|
846
|
+
error: {
|
|
847
|
+
inStagingMode: () => this.inStagingMode,
|
|
848
|
+
isApplyingStashedOps: () => this.pendingStateManager?.isApplyingStashedOps,
|
|
849
|
+
isReadOnly: () => this.isReadOnly(),
|
|
826
850
|
},
|
|
827
851
|
},
|
|
828
852
|
});
|
|
853
|
+
this.mc = (0, internal_8.createChildMonitoringContext)({
|
|
854
|
+
logger: this.baseLogger,
|
|
855
|
+
namespace: "ContainerRuntime",
|
|
856
|
+
});
|
|
829
857
|
// Validate that the Loader is compatible with this Runtime.
|
|
830
858
|
const maybeLoaderCompatDetailsForRuntime = context;
|
|
831
859
|
(0, runtimeLayerCompatState_js_1.validateLoaderCompatibility)(maybeLoaderCompatDetailsForRuntime.ILayerCompatDetails, this.disposeFn, this.mc);
|
|
@@ -948,7 +976,18 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
|
|
|
948
976
|
reSubmitBatch: this.reSubmitBatch.bind(this),
|
|
949
977
|
isActiveConnection: () => this.innerDeltaManager.active,
|
|
950
978
|
isAttached: () => this.attachState !== container_definitions_1.AttachState.Detached,
|
|
951
|
-
}, pendingRuntimeState?.pending, this.baseLogger
|
|
979
|
+
}, pendingRuntimeState?.pending, this.baseLogger, {
|
|
980
|
+
// PSM has cleared `isApplyingStashedOps`; `isReadOnly()` now
|
|
981
|
+
// reflects the network-readonly state again. Fan out so DDSes
|
|
982
|
+
// know they can submit once more. No open hook is needed —
|
|
983
|
+
// the apply window opens before `channelCollection` exists,
|
|
984
|
+
// so a fanout there would be a no-op; data stores instead
|
|
985
|
+
// pick up the initial readonly state from `isReadOnly()`
|
|
986
|
+
// when they're first asked.
|
|
987
|
+
onAfterStashedOpsApplied: () => {
|
|
988
|
+
this.notifyReadOnlyState();
|
|
989
|
+
},
|
|
990
|
+
});
|
|
952
991
|
let outerDeltaManager = this.innerDeltaManager;
|
|
953
992
|
this.useDeltaManagerOpsProxy =
|
|
954
993
|
this.mc.config.getBoolean("Fluid.ContainerRuntime.DeltaManagerOpsProxy") === true;
|
|
@@ -1214,6 +1253,13 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
|
|
|
1214
1253
|
telemetryDocumentId: this.telemetryDocumentId,
|
|
1215
1254
|
groupedBatchingEnabled: this.groupedBatchingEnabled,
|
|
1216
1255
|
initialSequenceNumber: this.deltaManager.initialSequenceNumber,
|
|
1256
|
+
// Number of ops since the last summary that this client is aware of (including ops still
|
|
1257
|
+
// queued for processing). Computed as the gap between the latest known op sequence number
|
|
1258
|
+
// and the sequence number of the message at which the last summary was taken (per snapshot
|
|
1259
|
+
// metadata). Falls back to lastKnownSeqNumber when no prior summary message is recorded
|
|
1260
|
+
// (e.g. new container or older snapshot without metadata).
|
|
1261
|
+
numUnsummarizedOps: this.deltaManager.lastKnownSeqNumber -
|
|
1262
|
+
(this.messageAtLastSummary?.sequenceNumber ?? 0),
|
|
1217
1263
|
minVersionForCollab: this.minVersionForCollab,
|
|
1218
1264
|
// logging hardware telemetry
|
|
1219
1265
|
deviceSpec: { ...getDeviceSpec() },
|
|
@@ -1666,6 +1712,24 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
|
|
|
1666
1712
|
if (!this.shouldSendOps()) {
|
|
1667
1713
|
return;
|
|
1668
1714
|
}
|
|
1715
|
+
// Invariant: the canSendOps edge in `setConnectionStateCore` — the
|
|
1716
|
+
// only caller of this method — cannot fire while
|
|
1717
|
+
// `applyStashedOpsAt` is in flight, because the loader awaits the
|
|
1718
|
+
// apply before transitioning the runtime to a write-capable
|
|
1719
|
+
// connection. If this assert ever fires, that contract has changed
|
|
1720
|
+
// and the submit guard at `submit()` would catch a runtime-internal
|
|
1721
|
+
// resubmit (`Rejoin`, `GC`, `FluidDataStoreOp`) for an op type
|
|
1722
|
+
// outside the apply-window allowlist.
|
|
1723
|
+
//
|
|
1724
|
+
// The precondition is held by the load sequence: `loadRuntime2`
|
|
1725
|
+
// awaits `pendingStateManager.applyStashedOpsAt(...)` before
|
|
1726
|
+
// returning the runtime, and the loader gates `setLoaded` on that
|
|
1727
|
+
// completion before any write-capable connection edge fires. A
|
|
1728
|
+
// maintainer reordering either sequence (or adding a new
|
|
1729
|
+
// `canSendOps` edge that fires before the apply resolves) is what
|
|
1730
|
+
// would trip this assert.
|
|
1731
|
+
// @see {@link ContainerRuntime.loadRuntime2} (awaits `applyStashedOpsAt`)
|
|
1732
|
+
(0, internal_2.assert)(!this.pendingStateManager.isApplyingStashedOps, 0xd01 /* replayPendingStates must not be called during stashed-op apply window */);
|
|
1669
1733
|
// Replaying is an internal operation and we don't want to generate noise while doing it.
|
|
1670
1734
|
// So temporarily disable dirty state change events, and save the old state.
|
|
1671
1735
|
// When we're done, we'll emit the event if the state changed.
|
|
@@ -3062,6 +3126,45 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
|
|
|
3062
3126
|
}
|
|
3063
3127
|
submit(containerRuntimeMessage, localOpMetadata = undefined, metadata) {
|
|
3064
3128
|
this.verifyNotClosed();
|
|
3129
|
+
// Nothing should be submitting while we're replaying stashed ops.
|
|
3130
|
+
// The runtime is readonly during the apply window (see
|
|
3131
|
+
// `PendingStateManager._applyLifecycle`), so a compliant DDS skips
|
|
3132
|
+
// submits. If we land here anyway, a DDS bypassed the readonly gate
|
|
3133
|
+
// (e.g. a realize-time write that doesn't consult `readOnly`) and
|
|
3134
|
+
// produced a local op that has no counterpart in the saved-op
|
|
3135
|
+
// replay — we cannot reconcile the mismatch, so fail fatally. We
|
|
3136
|
+
// check here (rather than at flush) because outbox flushes are
|
|
3137
|
+
// deferred and the apply window could close before the offending op
|
|
3138
|
+
// reaches the pending queue.
|
|
3139
|
+
//
|
|
3140
|
+
// Allowlist: `BlobAttach` is a runtime-internal op type that may
|
|
3141
|
+
// legitimately fire during apply — produced by `sharePendingBlobs`,
|
|
3142
|
+
// which is invoked from `loadRuntime2` before `applyStashedOpsAt`
|
|
3143
|
+
// resolves. `IdAllocation` is not in this allowlist because the
|
|
3144
|
+
// assert at 0x9a5 below enforces that it never reaches `submit()`
|
|
3145
|
+
// at all; treating that assert as the single source of truth.
|
|
3146
|
+
//
|
|
3147
|
+
// Always surface the error event to telemetry on a bypass so we can
|
|
3148
|
+
// attribute incidents regardless of the on-switch state. The
|
|
3149
|
+
// `EnableSubmitDuringStashedApplyThrow` config opts in to the
|
|
3150
|
+
// throw + container close; by default we log only, so a first- or
|
|
3151
|
+
// third-party DDS that quietly bypasses the readonly gate in
|
|
3152
|
+
// production is observable without escalating to a fatal close.
|
|
3153
|
+
if (this.pendingStateManager.isApplyingStashedOps &&
|
|
3154
|
+
containerRuntimeMessage.type !== messageTypes_js_1.ContainerMessageType.BlobAttach) {
|
|
3155
|
+
const error = new internal_8.UsageError("Local op submitted during stashed-op apply window", {
|
|
3156
|
+
messageType: containerRuntimeMessage.type,
|
|
3157
|
+
});
|
|
3158
|
+
this.mc.logger.sendErrorEvent({ eventName: "SubmitDuringStashedOpApply" }, error);
|
|
3159
|
+
if (this.mc.config.getBoolean("Fluid.ContainerRuntime.EnableSubmitDuringStashedApplyThrow") === true) {
|
|
3160
|
+
// Close the container before throwing so the "throw + close"
|
|
3161
|
+
// contract is enforced by this code path rather than by
|
|
3162
|
+
// whichever caller happens to wrap the throw in `.catch(closeFn)`.
|
|
3163
|
+
// `closeFn` is idempotent; a caller that also closes won't double-close.
|
|
3164
|
+
this.closeFn(error);
|
|
3165
|
+
throw error;
|
|
3166
|
+
}
|
|
3167
|
+
}
|
|
3065
3168
|
// There should be no ops in detached container state!
|
|
3066
3169
|
(0, internal_2.assert)(this.attachState !== container_definitions_1.AttachState.Detached, 0x132 /* "sending ops in detached container" */);
|
|
3067
3170
|
(0, internal_2.assert)(metadata === undefined ||
|