@fluidframework/container-runtime 2.3.0-288113 → 2.3.1

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.
Files changed (183) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/api-report/container-runtime.legacy.alpha.api.md +15 -0
  3. package/container-runtime.test-files.tar +0 -0
  4. package/dist/channelCollection.d.ts +1 -1
  5. package/dist/channelCollection.d.ts.map +1 -1
  6. package/dist/channelCollection.js +1 -16
  7. package/dist/channelCollection.js.map +1 -1
  8. package/dist/connectionTelemetry.d.ts +27 -3
  9. package/dist/connectionTelemetry.d.ts.map +1 -1
  10. package/dist/connectionTelemetry.js.map +1 -1
  11. package/dist/containerRuntime.d.ts +68 -13
  12. package/dist/containerRuntime.d.ts.map +1 -1
  13. package/dist/containerRuntime.js +262 -180
  14. package/dist/containerRuntime.js.map +1 -1
  15. package/dist/deltaManagerProxies.d.ts.map +1 -1
  16. package/dist/deltaManagerProxies.js +11 -4
  17. package/dist/deltaManagerProxies.js.map +1 -1
  18. package/dist/gc/garbageCollection.d.ts.map +1 -1
  19. package/dist/gc/garbageCollection.js +0 -2
  20. package/dist/gc/garbageCollection.js.map +1 -1
  21. package/dist/gc/gcHelpers.d.ts.map +1 -1
  22. package/dist/gc/gcHelpers.js +0 -8
  23. package/dist/gc/gcHelpers.js.map +1 -1
  24. package/dist/index.d.ts +1 -1
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +2 -1
  27. package/dist/index.js.map +1 -1
  28. package/dist/legacy.d.ts +3 -1
  29. package/dist/messageTypes.d.ts +0 -9
  30. package/dist/messageTypes.d.ts.map +1 -1
  31. package/dist/messageTypes.js.map +1 -1
  32. package/dist/opLifecycle/batchManager.d.ts +9 -0
  33. package/dist/opLifecycle/batchManager.d.ts.map +1 -1
  34. package/dist/opLifecycle/batchManager.js +19 -6
  35. package/dist/opLifecycle/batchManager.js.map +1 -1
  36. package/dist/opLifecycle/duplicateBatchDetector.d.ts +32 -0
  37. package/dist/opLifecycle/duplicateBatchDetector.d.ts.map +1 -0
  38. package/dist/opLifecycle/duplicateBatchDetector.js +68 -0
  39. package/dist/opLifecycle/duplicateBatchDetector.js.map +1 -0
  40. package/dist/opLifecycle/index.d.ts +3 -2
  41. package/dist/opLifecycle/index.d.ts.map +1 -1
  42. package/dist/opLifecycle/index.js +4 -1
  43. package/dist/opLifecycle/index.js.map +1 -1
  44. package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
  45. package/dist/opLifecycle/opCompressor.js +0 -4
  46. package/dist/opLifecycle/opCompressor.js.map +1 -1
  47. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
  48. package/dist/opLifecycle/opGroupingManager.js +0 -4
  49. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  50. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  51. package/dist/opLifecycle/opSplitter.js +1 -6
  52. package/dist/opLifecycle/opSplitter.js.map +1 -1
  53. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  54. package/dist/opLifecycle/outbox.js +1 -4
  55. package/dist/opLifecycle/outbox.js.map +1 -1
  56. package/dist/opLifecycle/remoteMessageProcessor.d.ts +37 -17
  57. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  58. package/dist/opLifecycle/remoteMessageProcessor.js +47 -37
  59. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  60. package/dist/packageVersion.d.ts +1 -1
  61. package/dist/packageVersion.d.ts.map +1 -1
  62. package/dist/packageVersion.js +1 -1
  63. package/dist/packageVersion.js.map +1 -1
  64. package/dist/pendingStateManager.d.ts +27 -17
  65. package/dist/pendingStateManager.d.ts.map +1 -1
  66. package/dist/pendingStateManager.js +85 -56
  67. package/dist/pendingStateManager.js.map +1 -1
  68. package/dist/scheduleManager.d.ts +2 -4
  69. package/dist/scheduleManager.d.ts.map +1 -1
  70. package/dist/scheduleManager.js +6 -37
  71. package/dist/scheduleManager.js.map +1 -1
  72. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  73. package/dist/summary/summarizerNode/summarizerNodeUtils.js +0 -2
  74. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  75. package/dist/summary/summaryCollection.d.ts.map +1 -1
  76. package/dist/summary/summaryCollection.js +5 -7
  77. package/dist/summary/summaryCollection.js.map +1 -1
  78. package/dist/summary/summaryFormat.d.ts.map +1 -1
  79. package/dist/summary/summaryFormat.js +1 -4
  80. package/dist/summary/summaryFormat.js.map +1 -1
  81. package/lib/channelCollection.d.ts +1 -1
  82. package/lib/channelCollection.d.ts.map +1 -1
  83. package/lib/channelCollection.js +1 -16
  84. package/lib/channelCollection.js.map +1 -1
  85. package/lib/connectionTelemetry.d.ts +27 -3
  86. package/lib/connectionTelemetry.d.ts.map +1 -1
  87. package/lib/connectionTelemetry.js.map +1 -1
  88. package/lib/containerRuntime.d.ts +68 -13
  89. package/lib/containerRuntime.d.ts.map +1 -1
  90. package/lib/containerRuntime.js +262 -181
  91. package/lib/containerRuntime.js.map +1 -1
  92. package/lib/deltaManagerProxies.d.ts.map +1 -1
  93. package/lib/deltaManagerProxies.js +11 -4
  94. package/lib/deltaManagerProxies.js.map +1 -1
  95. package/lib/gc/garbageCollection.d.ts.map +1 -1
  96. package/lib/gc/garbageCollection.js +0 -2
  97. package/lib/gc/garbageCollection.js.map +1 -1
  98. package/lib/gc/gcHelpers.d.ts.map +1 -1
  99. package/lib/gc/gcHelpers.js +0 -8
  100. package/lib/gc/gcHelpers.js.map +1 -1
  101. package/lib/index.d.ts +1 -1
  102. package/lib/index.d.ts.map +1 -1
  103. package/lib/index.js +1 -1
  104. package/lib/index.js.map +1 -1
  105. package/lib/legacy.d.ts +3 -1
  106. package/lib/messageTypes.d.ts +0 -9
  107. package/lib/messageTypes.d.ts.map +1 -1
  108. package/lib/messageTypes.js.map +1 -1
  109. package/lib/opLifecycle/batchManager.d.ts +9 -0
  110. package/lib/opLifecycle/batchManager.d.ts.map +1 -1
  111. package/lib/opLifecycle/batchManager.js +17 -5
  112. package/lib/opLifecycle/batchManager.js.map +1 -1
  113. package/lib/opLifecycle/duplicateBatchDetector.d.ts +32 -0
  114. package/lib/opLifecycle/duplicateBatchDetector.d.ts.map +1 -0
  115. package/lib/opLifecycle/duplicateBatchDetector.js +64 -0
  116. package/lib/opLifecycle/duplicateBatchDetector.js.map +1 -0
  117. package/lib/opLifecycle/index.d.ts +3 -2
  118. package/lib/opLifecycle/index.d.ts.map +1 -1
  119. package/lib/opLifecycle/index.js +2 -1
  120. package/lib/opLifecycle/index.js.map +1 -1
  121. package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
  122. package/lib/opLifecycle/opCompressor.js +0 -4
  123. package/lib/opLifecycle/opCompressor.js.map +1 -1
  124. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
  125. package/lib/opLifecycle/opGroupingManager.js +0 -4
  126. package/lib/opLifecycle/opGroupingManager.js.map +1 -1
  127. package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
  128. package/lib/opLifecycle/opSplitter.js +1 -6
  129. package/lib/opLifecycle/opSplitter.js.map +1 -1
  130. package/lib/opLifecycle/outbox.d.ts.map +1 -1
  131. package/lib/opLifecycle/outbox.js +1 -4
  132. package/lib/opLifecycle/outbox.js.map +1 -1
  133. package/lib/opLifecycle/remoteMessageProcessor.d.ts +37 -17
  134. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  135. package/lib/opLifecycle/remoteMessageProcessor.js +47 -37
  136. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
  137. package/lib/packageVersion.d.ts +1 -1
  138. package/lib/packageVersion.d.ts.map +1 -1
  139. package/lib/packageVersion.js +1 -1
  140. package/lib/packageVersion.js.map +1 -1
  141. package/lib/pendingStateManager.d.ts +27 -17
  142. package/lib/pendingStateManager.d.ts.map +1 -1
  143. package/lib/pendingStateManager.js +85 -56
  144. package/lib/pendingStateManager.js.map +1 -1
  145. package/lib/scheduleManager.d.ts +2 -4
  146. package/lib/scheduleManager.d.ts.map +1 -1
  147. package/lib/scheduleManager.js +6 -37
  148. package/lib/scheduleManager.js.map +1 -1
  149. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  150. package/lib/summary/summarizerNode/summarizerNodeUtils.js +0 -2
  151. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  152. package/lib/summary/summaryCollection.d.ts.map +1 -1
  153. package/lib/summary/summaryCollection.js +5 -7
  154. package/lib/summary/summaryCollection.js.map +1 -1
  155. package/lib/summary/summaryFormat.d.ts.map +1 -1
  156. package/lib/summary/summaryFormat.js +1 -4
  157. package/lib/summary/summaryFormat.js.map +1 -1
  158. package/lib/tsdoc-metadata.json +1 -1
  159. package/package.json +50 -24
  160. package/src/channelCollection.ts +7 -21
  161. package/src/connectionTelemetry.ts +33 -3
  162. package/src/containerRuntime.ts +382 -233
  163. package/src/deltaManagerProxies.ts +11 -4
  164. package/src/gc/garbageCollection.ts +1 -3
  165. package/src/gc/gcHelpers.ts +4 -12
  166. package/src/index.ts +2 -0
  167. package/src/messageTypes.ts +0 -10
  168. package/src/opLifecycle/batchManager.ts +29 -7
  169. package/src/opLifecycle/duplicateBatchDetector.ts +78 -0
  170. package/src/opLifecycle/index.ts +4 -1
  171. package/src/opLifecycle/opCompressor.ts +2 -6
  172. package/src/opLifecycle/opGroupingManager.ts +2 -6
  173. package/src/opLifecycle/opSplitter.ts +2 -6
  174. package/src/opLifecycle/outbox.ts +1 -3
  175. package/src/opLifecycle/remoteMessageProcessor.ts +87 -59
  176. package/src/packageVersion.ts +1 -1
  177. package/src/pendingStateManager.ts +114 -66
  178. package/src/scheduleManager.ts +8 -47
  179. package/src/summary/summarizerNode/summarizerNodeUtils.ts +1 -3
  180. package/src/summary/summaryCollection.ts +7 -9
  181. package/src/summary/summaryFormat.ts +1 -3
  182. package/src/summary/summaryFormats.md +11 -9
  183. package/tsconfig.json +1 -0
@@ -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 { performance } from \"@fluid-internal/client-utils\";\nimport { IDeltaManager } from \"@fluidframework/container-definitions/internal\";\nimport { IContainerRuntimeEvents } from \"@fluidframework/container-runtime-definitions/internal\";\nimport { IEventProvider } from \"@fluidframework/core-interfaces\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport {\n\tIDocumentMessage,\n\tMessageType,\n\tISequencedDocumentMessage,\n} from \"@fluidframework/driver-definitions/internal\";\nimport { isRuntimeMessage } from \"@fluidframework/driver-utils/internal\";\nimport {\n\tIEventSampler,\n\tITelemetryLoggerExt,\n\tISampledTelemetryLogger,\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/** Measure time between (1) and (2) - Measure time outbound op is sitting in queue due to active batch */\n\tdurationOutboundBatching: number; // was durationOutboundQueue in previous versions\n\t/** Measure time between (2) and (3) - Track how long it took for op to be acked by service */\n\tdurationNetwork: number; // was durationInboundQueue\n\t/** Measure time between (3) and (4) - Time between DM's inbound \"push\" event until DM's \"op\" event */\n\tdurationInboundToProcessing: number;\n\t/** Length of the DeltaManager's inbound queue at the time of the DM's inbound \"push\" event (3) */\n\tlengthInboundQueue: number;\n}\n\n/**\n * Timings collected at various moments during the op processing.\n */\ninterface IOpPerfTimings {\n\t/** Starting time for (1) */\n\tsubmitOpEventTime: number;\n\t/** Starting time for (2) */\n\toutboundPushEventTime: number;\n\t/** Starting time for (3) */\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 = performance.now();\n\tprivate connectionStartTime = 0;\n\tprivate gap = 0;\n\n\t/** Count of no-ops sent by this client. This variable is reset everytime the OpStats sampled event is logged */\n\tprivate noOpCountForTelemetry = 0;\n\t/** Cumulative size of the ops processed by this client. This variable is reset everytime the OpStats sampled event is logged */\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: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>,\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 = performance.now();\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() {\n\t\tthis.connectionOpSeqNumber = undefined;\n\t\tthis.logger.sendPerformanceEvent({\n\t\t\teventName: \"ConnectionSpeed\",\n\t\t\tduration: performance.now() - this.connectionStartTime,\n\t\t\tops: this.gap,\n\t\t\t// track time to connect only for first connection.\n\t\t\ttimeToConnect: this.firstConnection\n\t\t\t\t? formatTick(this.connectionStartTime - this.bootTime)\n\t\t\t\t: undefined,\n\t\t\tfirstConnection: this.firstConnection,\n\t\t});\n\t}\n\n\tprivate recordPingTime(latency: number) {\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) {\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) {\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}\nexport interface IPerfSignalReport {\n\t/**\n\t * Identifier for the signal being submitted in order to\n\t * allow collection of data around the roundtrip of signal messages.\n\t */\n\tsignalSequenceNumber: number;\n\t/**\n\t * Number of signals that were expected but not received.\n\t */\n\tsignalsLost: number;\n\n\t/**\n\t * Timestamp before submitting the signal we will trace.\n\t */\n\tsignalTimestamp: number;\n\n\t/**\n\t * Expected Signal Sequence to be received.\n\t */\n\ttrackingSignalSequenceNumber: number | undefined;\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: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>,\n\tcontainerRuntimeEvents: IEventProvider<IContainerRuntimeEvents>,\n\tlogger: ITelemetryLoggerExt,\n): void {\n\tnew OpPerfTelemetry(clientId, deltaManager, containerRuntimeEvents, logger);\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 { performance } from \"@fluid-internal/client-utils\";\nimport { IDeltaManager } from \"@fluidframework/container-definitions/internal\";\nimport { IContainerRuntimeEvents } from \"@fluidframework/container-runtime-definitions/internal\";\nimport { IEventProvider } from \"@fluidframework/core-interfaces\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport {\n\tIDocumentMessage,\n\tMessageType,\n\tISequencedDocumentMessage,\n} from \"@fluidframework/driver-definitions/internal\";\nimport { isRuntimeMessage } from \"@fluidframework/driver-utils/internal\";\nimport {\n\tIEventSampler,\n\tITelemetryLoggerExt,\n\tISampledTelemetryLogger,\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/** Measure time between (1) and (2) - Measure time outbound op is sitting in queue due to active batch */\n\tdurationOutboundBatching: number; // was durationOutboundQueue in previous versions\n\t/** Measure time between (2) and (3) - Track how long it took for op to be acked by service */\n\tdurationNetwork: number; // was durationInboundQueue\n\t/** Measure time between (3) and (4) - Time between DM's inbound \"push\" event until DM's \"op\" event */\n\tdurationInboundToProcessing: number;\n\t/** Length of the DeltaManager's inbound queue at the time of the DM's inbound \"push\" event (3) */\n\tlengthInboundQueue: number;\n}\n\n/**\n * Timings collected at various moments during the op processing.\n */\ninterface IOpPerfTimings {\n\t/** Starting time for (1) */\n\tsubmitOpEventTime: number;\n\t/** Starting time for (2) */\n\toutboundPushEventTime: number;\n\t/** Starting time for (3) */\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 = performance.now();\n\tprivate connectionStartTime = 0;\n\tprivate gap = 0;\n\n\t/** Count of no-ops sent by this client. This variable is reset everytime the OpStats sampled event is logged */\n\tprivate noOpCountForTelemetry = 0;\n\t/** Cumulative size of the ops processed by this client. This variable is reset everytime the OpStats sampled event is logged */\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: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>,\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 = performance.now();\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() {\n\t\tthis.connectionOpSeqNumber = undefined;\n\t\tthis.logger.sendPerformanceEvent({\n\t\t\teventName: \"ConnectionSpeed\",\n\t\t\tduration: performance.now() - this.connectionStartTime,\n\t\t\tops: this.gap,\n\t\t\t// track time to connect only for first connection.\n\t\t\ttimeToConnect: this.firstConnection\n\t\t\t\t? formatTick(this.connectionStartTime - this.bootTime)\n\t\t\t\t: undefined,\n\t\t\tfirstConnection: this.firstConnection,\n\t\t});\n\t}\n\n\tprivate recordPingTime(latency: number) {\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) {\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) {\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}\nexport interface IPerfSignalReport {\n\t/**\n\t * Identifier to track broadcast signals being submitted in order to\n\t * allow collection of data around the roundtrip of signal messages.\n\t */\n\tbroadcastSignalSequenceNumber: number;\n\n\t/**\n\t * Accumulates the total number of broadcast signals sent during the current signal latency measurement window.\n\t * This value represents the total number of signals sent since the latency measurement began and is used\n\t * logged in telemetry when the latency measurement completes.\n\t */\n\ttotalSignalsSentInLatencyWindow: number;\n\n\t/**\n\t * Counts the number of broadcast signals sent since the last latency measurement was initiated.\n\t * This counter increments with each broadcast signal sent. When a new latency measurement starts,\n\t * this counter is added to `totalSignalsSentInLatencyWindow` and then reset to zero.\n\t */\n\tsignalsSentSinceLastLatencyMeasurement: number;\n\n\t/**\n\t * Number of signals that were expected but not received.\n\t */\n\tsignalsLost: number;\n\n\t/**\n\t * Number of signals received out of order/non-sequentially.\n\t */\n\tsignalsOutOfOrder: number;\n\n\t/**\n\t * Timestamp before submitting the signal we will trace.\n\t */\n\tsignalTimestamp: number;\n\n\t/**\n\t * Signal we will trace for roundtrip latency.\n\t */\n\troundTripSignalSequenceNumber: number | undefined;\n\n\t/**\n\t * Next expected signal sequence number to be received.\n\t */\n\ttrackingSignalSequenceNumber: number | undefined;\n\n\t/**\n\t * Inclusive lower bound of signal monitoring window.\n\t */\n\tminimumTrackingSignalSequenceNumber: number | undefined;\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: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>,\n\tcontainerRuntimeEvents: IEventProvider<IContainerRuntimeEvents>,\n\tlogger: ITelemetryLoggerExt,\n): void {\n\tnew OpPerfTelemetry(clientId, deltaManager, containerRuntimeEvents, logger);\n}\n"]}
@@ -332,6 +332,51 @@ export declare function getDeviceSpec(): {
332
332
  * we can provide a partially-applied function to keep those items private to the ContainerRuntime.
333
333
  */
334
334
  export declare const makeLegacySendBatchFn: (submitFn: (type: MessageType, contents: any, batch: boolean, appData?: any) => number, deltaManager: Pick<IDeltaManager<unknown, unknown>, "flush">) => (batch: IBatch) => number;
335
+ /**
336
+ * This object holds the parameters necessary for the {@link loadContainerRuntime} function.
337
+ * @legacy
338
+ * @alpha
339
+ */
340
+ export interface LoadContainerRuntimeParams {
341
+ /**
342
+ * Context of the container.
343
+ */
344
+ context: IContainerContext;
345
+ /**
346
+ * Mapping from data store types to their corresponding factories
347
+ */
348
+ registryEntries: NamedFluidDataStoreRegistryEntries;
349
+ /**
350
+ * Pass 'true' if loading from an existing snapshot.
351
+ */
352
+ existing: boolean;
353
+ /**
354
+ * Additional options to be passed to the runtime
355
+ */
356
+ runtimeOptions?: IContainerRuntimeOptions;
357
+ /**
358
+ * runtime services provided with context
359
+ */
360
+ containerScope?: FluidObject;
361
+ /**
362
+ * Promise that resolves to an object which will act as entryPoint for the Container.
363
+ */
364
+ provideEntryPoint: (containerRuntime: IContainerRuntime) => Promise<FluidObject>;
365
+ /**
366
+ * Request handler for the request() method of the container runtime.
367
+ * Only relevant for back-compat while we remove the request() method and move fully to entryPoint as the main pattern.
368
+ * @deprecated Will be removed once Loader LTS version is "2.0.0-internal.7.0.0". Migrate all usage of IFluidRouter to the "entryPoint" pattern. Refer to Removing-IFluidRouter.md
369
+ * */
370
+ requestHandler?: (request: IRequest, runtime: IContainerRuntime) => Promise<IResponse>;
371
+ }
372
+ /**
373
+ * This is meant to be used by a {@link @fluidframework/container-definitions#IRuntimeFactory} to instantiate a container runtime.
374
+ * @param params - An object which specifies all required and optional params necessary to instantiate a runtime.
375
+ * @returns A runtime which provides all the functionality necessary to bind with the loader layer via the {@link @fluidframework/container-definitions#IRuntime} interface and provide a runtime environment via the {@link @fluidframework/container-runtime-definitions#IContainerRuntime} interface.
376
+ * @legacy
377
+ * @alpha
378
+ */
379
+ export declare function loadContainerRuntime(params: LoadContainerRuntimeParams): Promise<IContainerRuntime & IRuntime>;
335
380
  /**
336
381
  * Represents the runtime of the container. Contains helper functions/state of the container.
337
382
  * It will define the store level mappings.
@@ -490,9 +535,10 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
490
535
  private dirtyContainer;
491
536
  private emitDirtyDocumentEvent;
492
537
  private readonly disableAttachReorder;
538
+ private readonly useDeltaManagerOpsProxy;
493
539
  private readonly closeSummarizerDelayMs;
494
540
  private readonly defaultTelemetrySignalSampleCount;
495
- private readonly _perfSignalData;
541
+ private readonly _signalTracking;
496
542
  /**
497
543
  * Summarizer is responsible for coordinating when to send generate and send summaries.
498
544
  * It is the main entry point for summary work.
@@ -502,6 +548,7 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
502
548
  private readonly scheduleManager;
503
549
  private readonly blobManager;
504
550
  private readonly pendingStateManager;
551
+ private readonly duplicateBatchDetector;
505
552
  private readonly outbox;
506
553
  private readonly garbageCollector;
507
554
  private readonly channelCollection;
@@ -626,20 +673,17 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
626
673
  process({ ...messageCopy }: ISequencedDocumentMessage, local: boolean): void;
627
674
  private _processedClientSequenceNumber;
628
675
  /**
629
- * Processes messages that are intended for the runtime layer to process.
630
- * It redirects the message to the correct subsystem for processing, and implement other side effects
631
- * @param messageWithContext - message to process with additional context and isRuntimeMessage prop as true
676
+ * Processes inbound message(s). It calls schedule manager according to the messages' location in the batch.
677
+ * @param messages - messages to process.
678
+ * @param locationInBatch - Are we processing the start and/or end of a batch?
679
+ * @param local - true if the messages were originally generated by the client receiving it.
680
+ * @param savedOp - true if the message is a replayed saved op.
681
+ * @param runtimeBatch - true if these are runtime messages.
632
682
  */
633
- private processRuntimeMessage;
634
- /**
635
- * Process an empty batch, which will execute expected actions while processing even if there are no messages.
636
- * This is a separate function because the processCore function expects at least one message to process.
637
- * It is expected to happen only when the outbox produces an empty batch due to a resubmit flow.
638
- */
639
- private processEmptyBatch;
683
+ private processInboundMessages;
640
684
  /**
641
685
  * Observes messages that are not intended for the runtime layer, updating/notifying Runtime systems as needed.
642
- * @param messageWithContext - non-runtime messages to process with additional context and isRuntimeMessage prop as false
686
+ * @param message - non-runtime message to process.
643
687
  */
644
688
  private observeNonRuntimeMessage;
645
689
  /**
@@ -650,7 +694,6 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
650
694
  private validateAndProcessRuntimeMessage;
651
695
  /**
652
696
  * Emits the Signal event and update the perf signal data.
653
- * @param clientSignalSequenceNumber - is the client signal sequence number to be uploaded.
654
697
  */
655
698
  private sendSignalTelemetryEvent;
656
699
  processSignal(message: ISignalMessage, local: boolean): void;
@@ -699,6 +742,12 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
699
742
  * @param type - Type of the signal.
700
743
  * @param content - Content of the signal. Should be a JSON serializable object or primitive.
701
744
  * @param targetClientId - When specified, the signal is only sent to the provided client id.
745
+ *
746
+ * @remarks
747
+ *
748
+ * The `targetClientId` parameter here is currently intended for internal testing purposes only.
749
+ * Support for this option at container runtime is planned to be deprecated in the future.
750
+ *
702
751
  */
703
752
  submitSignal(type: string, content: unknown, targetClientId?: string): void;
704
753
  setAttachState(attachState: AttachState.Attaching | AttachState.Attached): void;
@@ -833,6 +882,12 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
833
882
  * be called after dispose due to asynchrony should not call this.
834
883
  */
835
884
  private verifyNotClosed;
885
+ /**
886
+ * Resubmits each message in the batch, and then flushes the outbox.
887
+ *
888
+ * @remarks - If the "Offline Load" feature is enabled, the batchId is included in the resubmitted messages,
889
+ * for correlation to detect container forking.
890
+ */
836
891
  private reSubmitBatch;
837
892
  private reSubmit;
838
893
  /**
@@ -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":"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"}