@fluidframework/container-runtime 2.0.0-dev.4.4.0.162574 → 2.0.0-dev.5.3.2.178189

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (367) hide show
  1. package/CHANGELOG.md +69 -0
  2. package/dist/batchTracker.d.ts +4 -4
  3. package/dist/batchTracker.d.ts.map +1 -1
  4. package/dist/batchTracker.js +2 -2
  5. package/dist/batchTracker.js.map +1 -1
  6. package/dist/blobManager.d.ts +5 -2
  7. package/dist/blobManager.d.ts.map +1 -1
  8. package/dist/blobManager.js +53 -24
  9. package/dist/blobManager.js.map +1 -1
  10. package/dist/connectionTelemetry.d.ts +2 -2
  11. package/dist/connectionTelemetry.d.ts.map +1 -1
  12. package/dist/connectionTelemetry.js +8 -1
  13. package/dist/connectionTelemetry.js.map +1 -1
  14. package/dist/containerRuntime.d.ts +19 -7
  15. package/dist/containerRuntime.d.ts.map +1 -1
  16. package/dist/containerRuntime.js +98 -22
  17. package/dist/containerRuntime.js.map +1 -1
  18. package/dist/dataStore.d.ts +2 -2
  19. package/dist/dataStore.d.ts.map +1 -1
  20. package/dist/dataStore.js +1 -1
  21. package/dist/dataStore.js.map +1 -1
  22. package/dist/dataStoreContext.d.ts +3 -4
  23. package/dist/dataStoreContext.d.ts.map +1 -1
  24. package/dist/dataStoreContext.js +5 -5
  25. package/dist/dataStoreContext.js.map +1 -1
  26. package/dist/dataStoreContexts.d.ts +2 -1
  27. package/dist/dataStoreContexts.d.ts.map +1 -1
  28. package/dist/dataStoreContexts.js +2 -1
  29. package/dist/dataStoreContexts.js.map +1 -1
  30. package/dist/dataStores.d.ts +1 -1
  31. package/dist/dataStores.d.ts.map +1 -1
  32. package/dist/dataStores.js +2 -1
  33. package/dist/dataStores.js.map +1 -1
  34. package/dist/deltaScheduler.d.ts +2 -2
  35. package/dist/deltaScheduler.d.ts.map +1 -1
  36. package/dist/deltaScheduler.js +1 -1
  37. package/dist/deltaScheduler.js.map +1 -1
  38. package/dist/gc/garbageCollection.d.ts +2 -2
  39. package/dist/gc/garbageCollection.d.ts.map +1 -1
  40. package/dist/gc/garbageCollection.js +4 -3
  41. package/dist/gc/garbageCollection.js.map +1 -1
  42. package/dist/gc/gcDefinitions.d.ts +3 -4
  43. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  44. package/dist/gc/gcDefinitions.js.map +1 -1
  45. package/dist/gc/gcTelemetry.d.ts +5 -5
  46. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  47. package/dist/gc/gcTelemetry.js.map +1 -1
  48. package/dist/id-compressor/idCompressor.d.ts +2 -2
  49. package/dist/id-compressor/idCompressor.d.ts.map +1 -1
  50. package/dist/id-compressor/idCompressor.js.map +1 -1
  51. package/dist/id-compressor/uuidUtilities.d.ts +0 -2
  52. package/dist/id-compressor/uuidUtilities.d.ts.map +1 -1
  53. package/dist/id-compressor/uuidUtilities.js +1 -3
  54. package/dist/id-compressor/uuidUtilities.js.map +1 -1
  55. package/dist/index.d.ts +1 -1
  56. package/dist/index.d.ts.map +1 -1
  57. package/dist/index.js.map +1 -1
  58. package/dist/metadata.d.ts +18 -0
  59. package/dist/metadata.d.ts.map +1 -0
  60. package/dist/metadata.js +7 -0
  61. package/dist/metadata.js.map +1 -0
  62. package/dist/opLifecycle/batchManager.d.ts +2 -1
  63. package/dist/opLifecycle/batchManager.d.ts.map +1 -1
  64. package/dist/opLifecycle/batchManager.js +5 -1
  65. package/dist/opLifecycle/batchManager.js.map +1 -1
  66. package/dist/opLifecycle/definitions.d.ts +13 -2
  67. package/dist/opLifecycle/definitions.d.ts.map +1 -1
  68. package/dist/opLifecycle/definitions.js.map +1 -1
  69. package/dist/opLifecycle/index.d.ts +1 -1
  70. package/dist/opLifecycle/index.d.ts.map +1 -1
  71. package/dist/opLifecycle/index.js +2 -1
  72. package/dist/opLifecycle/index.js.map +1 -1
  73. package/dist/opLifecycle/opCompressor.d.ts +2 -2
  74. package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
  75. package/dist/opLifecycle/opCompressor.js +3 -6
  76. package/dist/opLifecycle/opCompressor.js.map +1 -1
  77. package/dist/opLifecycle/opDecompressor.d.ts +2 -2
  78. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
  79. package/dist/opLifecycle/opDecompressor.js +14 -8
  80. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  81. package/dist/opLifecycle/opGroupingManager.d.ts +1 -1
  82. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
  83. package/dist/opLifecycle/opGroupingManager.js +6 -11
  84. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  85. package/dist/opLifecycle/opSplitter.d.ts +2 -2
  86. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  87. package/dist/opLifecycle/opSplitter.js +5 -3
  88. package/dist/opLifecycle/opSplitter.js.map +1 -1
  89. package/dist/opLifecycle/outbox.d.ts +35 -4
  90. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  91. package/dist/opLifecycle/outbox.js +135 -45
  92. package/dist/opLifecycle/outbox.js.map +1 -1
  93. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  94. package/dist/opLifecycle/remoteMessageProcessor.js +3 -1
  95. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  96. package/dist/packageVersion.d.ts +1 -1
  97. package/dist/packageVersion.js +1 -1
  98. package/dist/packageVersion.js.map +1 -1
  99. package/dist/pendingStateManager.d.ts +24 -15
  100. package/dist/pendingStateManager.d.ts.map +1 -1
  101. package/dist/pendingStateManager.js +67 -72
  102. package/dist/pendingStateManager.js.map +1 -1
  103. package/dist/scheduleManager.d.ts +2 -2
  104. package/dist/scheduleManager.d.ts.map +1 -1
  105. package/dist/scheduleManager.js +8 -2
  106. package/dist/scheduleManager.js.map +1 -1
  107. package/dist/summary/index.d.ts +2 -2
  108. package/dist/summary/index.d.ts.map +1 -1
  109. package/dist/summary/index.js +2 -1
  110. package/dist/summary/index.js.map +1 -1
  111. package/dist/summary/orderedClientElection.d.ts +4 -3
  112. package/dist/summary/orderedClientElection.d.ts.map +1 -1
  113. package/dist/summary/orderedClientElection.js +3 -18
  114. package/dist/summary/orderedClientElection.js.map +1 -1
  115. package/dist/summary/runningSummarizer.d.ts +4 -3
  116. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  117. package/dist/summary/runningSummarizer.js +5 -6
  118. package/dist/summary/runningSummarizer.js.map +1 -1
  119. package/dist/summary/summarizer.d.ts +2 -3
  120. package/dist/summary/summarizer.d.ts.map +1 -1
  121. package/dist/summary/summarizer.js +2 -3
  122. package/dist/summary/summarizer.js.map +1 -1
  123. package/dist/summary/summarizerClientElection.d.ts +3 -2
  124. package/dist/summary/summarizerClientElection.d.ts.map +1 -1
  125. package/dist/summary/summarizerClientElection.js.map +1 -1
  126. package/dist/summary/summarizerHeuristics.d.ts +2 -2
  127. package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
  128. package/dist/summary/summarizerHeuristics.js.map +1 -1
  129. package/dist/summary/summarizerNode/index.d.ts +1 -1
  130. package/dist/summary/summarizerNode/index.d.ts.map +1 -1
  131. package/dist/summary/summarizerNode/index.js.map +1 -1
  132. package/dist/summary/summarizerNode/summarizerNode.d.ts +41 -14
  133. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  134. package/dist/summary/summarizerNode/summarizerNode.js +91 -23
  135. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
  136. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +24 -4
  137. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  138. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  139. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +23 -8
  140. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  141. package/dist/summary/summarizerNode/summarizerNodeWithGc.js +60 -23
  142. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  143. package/dist/summary/summarizerTypes.d.ts +16 -9
  144. package/dist/summary/summarizerTypes.d.ts.map +1 -1
  145. package/dist/summary/summarizerTypes.js.map +1 -1
  146. package/dist/summary/summaryCollection.d.ts +4 -2
  147. package/dist/summary/summaryCollection.d.ts.map +1 -1
  148. package/dist/summary/summaryCollection.js +4 -0
  149. package/dist/summary/summaryCollection.js.map +1 -1
  150. package/dist/summary/summaryFormat.d.ts +1 -0
  151. package/dist/summary/summaryFormat.d.ts.map +1 -1
  152. package/dist/summary/summaryFormat.js +2 -1
  153. package/dist/summary/summaryFormat.js.map +1 -1
  154. package/dist/summary/summaryGenerator.d.ts +14 -5
  155. package/dist/summary/summaryGenerator.d.ts.map +1 -1
  156. package/dist/summary/summaryGenerator.js +23 -9
  157. package/dist/summary/summaryGenerator.js.map +1 -1
  158. package/dist/summary/summaryManager.d.ts +4 -2
  159. package/dist/summary/summaryManager.d.ts.map +1 -1
  160. package/dist/summary/summaryManager.js.map +1 -1
  161. package/dist/tsdoc-metadata.json +11 -0
  162. package/lib/batchTracker.d.ts +4 -4
  163. package/lib/batchTracker.d.ts.map +1 -1
  164. package/lib/batchTracker.js +2 -2
  165. package/lib/batchTracker.js.map +1 -1
  166. package/lib/blobManager.d.ts +5 -2
  167. package/lib/blobManager.d.ts.map +1 -1
  168. package/lib/blobManager.js +53 -24
  169. package/lib/blobManager.js.map +1 -1
  170. package/lib/connectionTelemetry.d.ts +2 -2
  171. package/lib/connectionTelemetry.d.ts.map +1 -1
  172. package/lib/connectionTelemetry.js +8 -1
  173. package/lib/connectionTelemetry.js.map +1 -1
  174. package/lib/containerRuntime.d.ts +19 -7
  175. package/lib/containerRuntime.d.ts.map +1 -1
  176. package/lib/containerRuntime.js +101 -25
  177. package/lib/containerRuntime.js.map +1 -1
  178. package/lib/dataStore.d.ts +2 -2
  179. package/lib/dataStore.d.ts.map +1 -1
  180. package/lib/dataStore.js +1 -1
  181. package/lib/dataStore.js.map +1 -1
  182. package/lib/dataStoreContext.d.ts +3 -4
  183. package/lib/dataStoreContext.d.ts.map +1 -1
  184. package/lib/dataStoreContext.js +5 -5
  185. package/lib/dataStoreContext.js.map +1 -1
  186. package/lib/dataStoreContexts.d.ts +2 -1
  187. package/lib/dataStoreContexts.d.ts.map +1 -1
  188. package/lib/dataStoreContexts.js +2 -1
  189. package/lib/dataStoreContexts.js.map +1 -1
  190. package/lib/dataStores.d.ts +1 -1
  191. package/lib/dataStores.d.ts.map +1 -1
  192. package/lib/dataStores.js +2 -1
  193. package/lib/dataStores.js.map +1 -1
  194. package/lib/deltaScheduler.d.ts +2 -2
  195. package/lib/deltaScheduler.d.ts.map +1 -1
  196. package/lib/deltaScheduler.js +1 -1
  197. package/lib/deltaScheduler.js.map +1 -1
  198. package/lib/gc/garbageCollection.d.ts +2 -2
  199. package/lib/gc/garbageCollection.d.ts.map +1 -1
  200. package/lib/gc/garbageCollection.js +2 -1
  201. package/lib/gc/garbageCollection.js.map +1 -1
  202. package/lib/gc/gcDefinitions.d.ts +3 -4
  203. package/lib/gc/gcDefinitions.d.ts.map +1 -1
  204. package/lib/gc/gcDefinitions.js.map +1 -1
  205. package/lib/gc/gcTelemetry.d.ts +5 -5
  206. package/lib/gc/gcTelemetry.d.ts.map +1 -1
  207. package/lib/gc/gcTelemetry.js +1 -1
  208. package/lib/gc/gcTelemetry.js.map +1 -1
  209. package/lib/id-compressor/idCompressor.d.ts +2 -2
  210. package/lib/id-compressor/idCompressor.d.ts.map +1 -1
  211. package/lib/id-compressor/idCompressor.js.map +1 -1
  212. package/lib/id-compressor/uuidUtilities.d.ts +0 -2
  213. package/lib/id-compressor/uuidUtilities.d.ts.map +1 -1
  214. package/lib/id-compressor/uuidUtilities.js +1 -3
  215. package/lib/id-compressor/uuidUtilities.js.map +1 -1
  216. package/lib/index.d.ts +1 -1
  217. package/lib/index.d.ts.map +1 -1
  218. package/lib/index.js.map +1 -1
  219. package/lib/metadata.d.ts +18 -0
  220. package/lib/metadata.d.ts.map +1 -0
  221. package/lib/metadata.js +6 -0
  222. package/lib/metadata.js.map +1 -0
  223. package/lib/opLifecycle/batchManager.d.ts +2 -1
  224. package/lib/opLifecycle/batchManager.d.ts.map +1 -1
  225. package/lib/opLifecycle/batchManager.js +5 -1
  226. package/lib/opLifecycle/batchManager.js.map +1 -1
  227. package/lib/opLifecycle/definitions.d.ts +13 -2
  228. package/lib/opLifecycle/definitions.d.ts.map +1 -1
  229. package/lib/opLifecycle/definitions.js.map +1 -1
  230. package/lib/opLifecycle/index.d.ts +1 -1
  231. package/lib/opLifecycle/index.d.ts.map +1 -1
  232. package/lib/opLifecycle/index.js +1 -1
  233. package/lib/opLifecycle/index.js.map +1 -1
  234. package/lib/opLifecycle/opCompressor.d.ts +2 -2
  235. package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
  236. package/lib/opLifecycle/opCompressor.js +3 -6
  237. package/lib/opLifecycle/opCompressor.js.map +1 -1
  238. package/lib/opLifecycle/opDecompressor.d.ts +2 -2
  239. package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
  240. package/lib/opLifecycle/opDecompressor.js +14 -8
  241. package/lib/opLifecycle/opDecompressor.js.map +1 -1
  242. package/lib/opLifecycle/opGroupingManager.d.ts +1 -1
  243. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
  244. package/lib/opLifecycle/opGroupingManager.js +6 -11
  245. package/lib/opLifecycle/opGroupingManager.js.map +1 -1
  246. package/lib/opLifecycle/opSplitter.d.ts +2 -2
  247. package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
  248. package/lib/opLifecycle/opSplitter.js +5 -3
  249. package/lib/opLifecycle/opSplitter.js.map +1 -1
  250. package/lib/opLifecycle/outbox.d.ts +35 -4
  251. package/lib/opLifecycle/outbox.d.ts.map +1 -1
  252. package/lib/opLifecycle/outbox.js +133 -44
  253. package/lib/opLifecycle/outbox.js.map +1 -1
  254. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  255. package/lib/opLifecycle/remoteMessageProcessor.js +3 -1
  256. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
  257. package/lib/packageVersion.d.ts +1 -1
  258. package/lib/packageVersion.js +1 -1
  259. package/lib/packageVersion.js.map +1 -1
  260. package/lib/pendingStateManager.d.ts +24 -15
  261. package/lib/pendingStateManager.d.ts.map +1 -1
  262. package/lib/pendingStateManager.js +67 -72
  263. package/lib/pendingStateManager.js.map +1 -1
  264. package/lib/scheduleManager.d.ts +2 -2
  265. package/lib/scheduleManager.d.ts.map +1 -1
  266. package/lib/scheduleManager.js +8 -2
  267. package/lib/scheduleManager.js.map +1 -1
  268. package/lib/summary/index.d.ts +2 -2
  269. package/lib/summary/index.d.ts.map +1 -1
  270. package/lib/summary/index.js +1 -1
  271. package/lib/summary/index.js.map +1 -1
  272. package/lib/summary/orderedClientElection.d.ts +4 -3
  273. package/lib/summary/orderedClientElection.d.ts.map +1 -1
  274. package/lib/summary/orderedClientElection.js +3 -18
  275. package/lib/summary/orderedClientElection.js.map +1 -1
  276. package/lib/summary/runningSummarizer.d.ts +4 -3
  277. package/lib/summary/runningSummarizer.d.ts.map +1 -1
  278. package/lib/summary/runningSummarizer.js +5 -6
  279. package/lib/summary/runningSummarizer.js.map +1 -1
  280. package/lib/summary/summarizer.d.ts +2 -3
  281. package/lib/summary/summarizer.d.ts.map +1 -1
  282. package/lib/summary/summarizer.js +2 -3
  283. package/lib/summary/summarizer.js.map +1 -1
  284. package/lib/summary/summarizerClientElection.d.ts +3 -2
  285. package/lib/summary/summarizerClientElection.d.ts.map +1 -1
  286. package/lib/summary/summarizerClientElection.js.map +1 -1
  287. package/lib/summary/summarizerHeuristics.d.ts +2 -2
  288. package/lib/summary/summarizerHeuristics.d.ts.map +1 -1
  289. package/lib/summary/summarizerHeuristics.js.map +1 -1
  290. package/lib/summary/summarizerNode/index.d.ts +1 -1
  291. package/lib/summary/summarizerNode/index.d.ts.map +1 -1
  292. package/lib/summary/summarizerNode/index.js.map +1 -1
  293. package/lib/summary/summarizerNode/summarizerNode.d.ts +41 -14
  294. package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  295. package/lib/summary/summarizerNode/summarizerNode.js +91 -23
  296. package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
  297. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts +24 -4
  298. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  299. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  300. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +23 -8
  301. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  302. package/lib/summary/summarizerNode/summarizerNodeWithGc.js +59 -22
  303. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  304. package/lib/summary/summarizerTypes.d.ts +16 -9
  305. package/lib/summary/summarizerTypes.d.ts.map +1 -1
  306. package/lib/summary/summarizerTypes.js.map +1 -1
  307. package/lib/summary/summaryCollection.d.ts +4 -2
  308. package/lib/summary/summaryCollection.d.ts.map +1 -1
  309. package/lib/summary/summaryCollection.js +4 -0
  310. package/lib/summary/summaryCollection.js.map +1 -1
  311. package/lib/summary/summaryFormat.d.ts +1 -0
  312. package/lib/summary/summaryFormat.d.ts.map +1 -1
  313. package/lib/summary/summaryFormat.js +2 -1
  314. package/lib/summary/summaryFormat.js.map +1 -1
  315. package/lib/summary/summaryGenerator.d.ts +14 -5
  316. package/lib/summary/summaryGenerator.d.ts.map +1 -1
  317. package/lib/summary/summaryGenerator.js +21 -8
  318. package/lib/summary/summaryGenerator.js.map +1 -1
  319. package/lib/summary/summaryManager.d.ts +4 -2
  320. package/lib/summary/summaryManager.d.ts.map +1 -1
  321. package/lib/summary/summaryManager.js +1 -1
  322. package/lib/summary/summaryManager.js.map +1 -1
  323. package/package.json +25 -41
  324. package/src/batchTracker.ts +5 -6
  325. package/src/blobManager.ts +70 -29
  326. package/src/connectionTelemetry.ts +14 -6
  327. package/src/containerRuntime.ts +124 -38
  328. package/src/dataStore.ts +3 -4
  329. package/src/dataStoreContext.ts +12 -9
  330. package/src/dataStoreContexts.ts +6 -8
  331. package/src/dataStores.ts +8 -3
  332. package/src/deltaScheduler.ts +2 -3
  333. package/src/gc/garbageCollection.ts +7 -6
  334. package/src/gc/gcDefinitions.ts +3 -4
  335. package/src/gc/gcTelemetry.ts +9 -5
  336. package/src/id-compressor/idCompressor.ts +2 -2
  337. package/src/id-compressor/uuidUtilities.ts +1 -4
  338. package/src/index.ts +2 -0
  339. package/src/metadata.ts +19 -0
  340. package/src/opLifecycle/README.md +20 -0
  341. package/src/opLifecycle/batchManager.ts +9 -1
  342. package/src/opLifecycle/definitions.ts +13 -2
  343. package/src/opLifecycle/index.ts +1 -1
  344. package/src/opLifecycle/opCompressor.ts +4 -8
  345. package/src/opLifecycle/opDecompressor.ts +43 -16
  346. package/src/opLifecycle/opGroupingManager.ts +19 -13
  347. package/src/opLifecycle/opSplitter.ts +7 -6
  348. package/src/opLifecycle/outbox.ts +172 -57
  349. package/src/opLifecycle/remoteMessageProcessor.ts +5 -1
  350. package/src/packageVersion.ts +1 -1
  351. package/src/pendingStateManager.ts +113 -129
  352. package/src/scheduleManager.ts +18 -10
  353. package/src/summary/index.ts +3 -1
  354. package/src/summary/orderedClientElection.ts +7 -20
  355. package/src/summary/runningSummarizer.ts +11 -10
  356. package/src/summary/summarizer.ts +8 -8
  357. package/src/summary/summarizerClientElection.ts +3 -2
  358. package/src/summary/summarizerHeuristics.ts +2 -2
  359. package/src/summary/summarizerNode/index.ts +1 -0
  360. package/src/summary/summarizerNode/summarizerNode.ts +121 -38
  361. package/src/summary/summarizerNode/summarizerNodeUtils.ts +27 -4
  362. package/src/summary/summarizerNode/summarizerNodeWithGc.ts +73 -27
  363. package/src/summary/summarizerTypes.ts +19 -14
  364. package/src/summary/summaryCollection.ts +10 -4
  365. package/src/summary/summaryFormat.ts +5 -1
  366. package/src/summary/summaryGenerator.ts +38 -11
  367. package/src/summary/summaryManager.ts +9 -9
@@ -5,9 +5,6 @@
5
5
  import {
6
6
  ITelemetryBaseLogger,
7
7
  ITelemetryGenericEvent,
8
- ITelemetryLogger,
9
- } from "@fluidframework/common-definitions";
10
- import {
11
8
  FluidObject,
12
9
  IFluidHandle,
13
10
  IFluidHandleContext,
@@ -32,11 +29,11 @@ import {
32
29
  import {
33
30
  assert,
34
31
  delay,
35
- LazyPromise,
36
32
  Trace,
37
33
  TypedEventEmitter,
38
34
  unreachableCase,
39
35
  } from "@fluidframework/common-utils";
36
+ import { LazyPromise } from "@fluidframework/core-utils";
40
37
  import {
41
38
  ChildLogger,
42
39
  raiseConnectedEvent,
@@ -45,6 +42,7 @@ import {
45
42
  MonitoringContext,
46
43
  loggerToMonitoringContext,
47
44
  wrapError,
45
+ ITelemetryLoggerExt,
48
46
  } from "@fluidframework/telemetry-utils";
49
47
  import {
50
48
  DriverHeader,
@@ -116,7 +114,11 @@ import { v4 as uuid } from "uuid";
116
114
  import { ContainerFluidHandleContext } from "./containerHandleContext";
117
115
  import { FluidDataStoreRegistry } from "./dataStoreRegistry";
118
116
  import { ReportOpPerfTelemetry, IPerfSignalReport } from "./connectionTelemetry";
119
- import { IPendingLocalState, PendingStateManager } from "./pendingStateManager";
117
+ import {
118
+ IPendingBatchMessage,
119
+ IPendingLocalState,
120
+ PendingStateManager,
121
+ } from "./pendingStateManager";
120
122
  import { pkgVersion } from "./packageVersion";
121
123
  import { BlobManager, IBlobManagerLoadInfo, IPendingBlobs } from "./blobManager";
122
124
  import { DataStores, getSummaryForDatastores } from "./dataStores";
@@ -152,6 +154,8 @@ import {
152
154
  ISummarizerRuntime,
153
155
  IRefreshSummaryAckOptions,
154
156
  RunWhileConnectedCoordinator,
157
+ IGenerateSummaryTreeResult,
158
+ RetriableSummaryError,
155
159
  } from "./summary";
156
160
  import { formExponentialFn, Throttler } from "./throttler";
157
161
  import {
@@ -176,8 +180,10 @@ import {
176
180
  OpSplitter,
177
181
  RemoteMessageProcessor,
178
182
  OpGroupingManager,
183
+ getLongStack,
179
184
  } from "./opLifecycle";
180
185
  import { DeltaManagerSummarizerProxy } from "./deltaManagerSummarizerProxy";
186
+ import { IBatchMetadata } from "./metadata";
181
187
 
182
188
  export enum ContainerMessageType {
183
189
  // An op to be delivered to store
@@ -584,9 +590,6 @@ export class ContainerRuntime
584
590
  extends TypedEventEmitter<IContainerRuntimeEvents>
585
591
  implements IContainerRuntime, IRuntime, ISummarizerRuntime, ISummarizerInternalsProvider
586
592
  {
587
- public get IContainerRuntime() {
588
- return this;
589
- }
590
593
  public get IFluidRouter() {
591
594
  return this;
592
595
  }
@@ -828,7 +831,7 @@ export class ContainerRuntime
828
831
  opMetadata: Record<string, unknown> | undefined,
829
832
  ) => void {
830
833
  // eslint-disable-next-line @typescript-eslint/unbound-method
831
- return this.reSubmit;
834
+ return this.reSubmitCore;
832
835
  }
833
836
 
834
837
  public get disposeFn(): (error?: ICriticalContainerError) => void {
@@ -837,6 +840,11 @@ export class ContainerRuntime
837
840
  }
838
841
 
839
842
  public get closeFn(): (error?: ICriticalContainerError) => void {
843
+ if (this._summarizer !== undefined) {
844
+ // In cases of summarizer, we want to dispose instead since consumer doesn't interact with this container
845
+ return this.disposeFn;
846
+ }
847
+
840
848
  // Also call disposeFn to retain functionality of runtime being disposed on close
841
849
  return (error?: ICriticalContainerError) => {
842
850
  this.context.closeFn(error);
@@ -958,6 +966,12 @@ export class ContainerRuntime
958
966
  private readonly disableAttachReorder: boolean | undefined;
959
967
  private readonly summaryStateUpdateMethod: string | undefined;
960
968
  private readonly closeSummarizerDelayMs: number;
969
+ /**
970
+ * If true, summary generated is validate before uploading it to the server. With single commit summaries,
971
+ * summaries will be accepted once uploaded, so they should be validated before upload. However, this can
972
+ * currently be controlled via a feature flag as its a new functionality.
973
+ */
974
+ private readonly validateSummaryBeforeUpload: boolean;
961
975
 
962
976
  private readonly defaultTelemetrySignalSampleCount = 100;
963
977
  private _perfSignalData: IPerfSignalReport = {
@@ -1054,7 +1068,7 @@ export class ContainerRuntime
1054
1068
  dataStoreAliasMap: [string, string][],
1055
1069
  private readonly runtimeOptions: Readonly<Required<IContainerRuntimeOptions>>,
1056
1070
  private readonly containerScope: FluidObject,
1057
- public readonly logger: ITelemetryLogger,
1071
+ public readonly logger: ITelemetryLoggerExt,
1058
1072
  existing: boolean,
1059
1073
  blobManagerSnapshot: IBlobManagerLoadInfo,
1060
1074
  private readonly _storage: IDocumentStorageService,
@@ -1212,7 +1226,6 @@ export class ContainerRuntime
1212
1226
  getNodePackagePath: async (nodePath: string) => this.getGCNodePackagePath(nodePath),
1213
1227
  getLastSummaryTimestampMs: () => this.messageAtLastSummary?.timestamp,
1214
1228
  readAndParseBlob: async <T>(id: string) => readAndParse<T>(this.storage, id),
1215
- getContainerDiagnosticId: () => this.context.id,
1216
1229
  // GC runs in summarizer client and needs access to the real (non-proxy) active information. The proxy
1217
1230
  // delta manager would always return false for summarizer client.
1218
1231
  activeConnection: () => this.innerDeltaManager.active,
@@ -1305,8 +1318,7 @@ export class ContainerRuntime
1305
1318
  close: this.closeFn,
1306
1319
  connected: () => this.connected,
1307
1320
  reSubmit: this.reSubmit.bind(this),
1308
- rollback: this.rollback.bind(this),
1309
- orderSequentially: this.orderSequentially.bind(this),
1321
+ reSubmitBatch: this.reSubmitBatch.bind(this),
1310
1322
  },
1311
1323
  pendingRuntimeState?.pending,
1312
1324
  );
@@ -1335,6 +1347,7 @@ export class ContainerRuntime
1335
1347
  compressionOptions,
1336
1348
  maxBatchSizeInBytes: runtimeOptions.maxBatchSizeInBytes,
1337
1349
  disablePartialFlush: disablePartialFlush === true,
1350
+ enableGroupedBatching: this.groupedBatchingEnabled,
1338
1351
  },
1339
1352
  logger: this.mc.logger,
1340
1353
  groupingManager: opGroupingManager,
@@ -1342,6 +1355,9 @@ export class ContainerRuntime
1342
1355
  referenceSequenceNumber: this.deltaManager.lastSequenceNumber,
1343
1356
  clientSequenceNumber: this._processedClientSequenceNumber,
1344
1357
  }),
1358
+ reSubmit: this.reSubmit.bind(this),
1359
+ opReentrancy: () => this.ensureNoDataModelChangesCalls > 0,
1360
+ closeContainer: this.closeFn,
1345
1361
  });
1346
1362
 
1347
1363
  this.context.quorum.on("removeMember", (clientId: string) => {
@@ -1349,12 +1365,15 @@ export class ContainerRuntime
1349
1365
  });
1350
1366
 
1351
1367
  this.summaryStateUpdateMethod = this.mc.config.getString(
1352
- "Fluid.ContainerRuntime.Test.SummaryStateUpdateMethod",
1368
+ "Fluid.ContainerRuntime.Test.SummaryStateUpdateMethodV2",
1353
1369
  );
1354
1370
  const closeSummarizerDelayOverride = this.mc.config.getNumber(
1355
1371
  "Fluid.ContainerRuntime.Test.CloseSummarizerDelayOverrideMs",
1356
1372
  );
1357
1373
  this.closeSummarizerDelayMs = closeSummarizerDelayOverride ?? defaultCloseSummarizerDelayMs;
1374
+ this.validateSummaryBeforeUpload =
1375
+ this.mc.config.getBoolean("Fluid.ContainerRuntime.Test.ValidateSummaryBeforeUpload") ??
1376
+ false;
1358
1377
 
1359
1378
  this.summaryCollection = new SummaryCollection(this.deltaManager, this.logger);
1360
1379
 
@@ -1762,8 +1781,14 @@ export class ContainerRuntime
1762
1781
  return this.consecutiveReconnects < this.maxConsecutiveReconnects;
1763
1782
  }
1764
1783
 
1765
- private resetReconnectCount() {
1766
- this.consecutiveReconnects = 0;
1784
+ private resetReconnectCount(message?: ISequencedDocumentMessage) {
1785
+ // Chunked ops don't count towards making progress as they are sent
1786
+ // in their own batches before the originating batch is sent.
1787
+ // Therefore, receiving them while attempting to send the originating batch
1788
+ // does not mean that the container is making any progress.
1789
+ if (message?.type !== ContainerMessageType.ChunkedOp) {
1790
+ this.consecutiveReconnects = 0;
1791
+ }
1767
1792
  }
1768
1793
 
1769
1794
  private replayPendingStates() {
@@ -1812,7 +1837,23 @@ export class ContainerRuntime
1812
1837
  this.idCompressor = IdCompressor.deserialize(op.stashedState);
1813
1838
  }
1814
1839
 
1815
- private async applyStashedOp(type: ContainerMessageType, contents: unknown): Promise<unknown> {
1840
+ /**
1841
+ * Parse an op's type and actual content from given serialized content
1842
+ * ! Note: this format needs to be in-line with what is set in the "ContainerRuntime.submit(...)" method
1843
+ */
1844
+ private parseOpContent(serializedContent?: string): {
1845
+ type: ContainerMessageType;
1846
+ contents: unknown;
1847
+ } {
1848
+ assert(serializedContent !== undefined, 0x6d5 /* content must be defined */);
1849
+ const parsed = JSON.parse(serializedContent);
1850
+ assert(parsed.type !== undefined, 0x6d6 /* incorrect op content format */);
1851
+ return { type: parsed.type as ContainerMessageType, contents: parsed.contents };
1852
+ }
1853
+
1854
+ private async applyStashedOp(op: string): Promise<unknown> {
1855
+ // Need to parse from string for back-compat
1856
+ const { type, contents } = this.parseOpContent(op);
1816
1857
  switch (type) {
1817
1858
  case ContainerMessageType.FluidDataStoreOp:
1818
1859
  return this.dataStores.applyStashedOp(contents as IEnvelope);
@@ -2009,7 +2050,7 @@ export class ContainerRuntime
2009
2050
  local,
2010
2051
  type: message.type,
2011
2052
  contentType: typeof message.contents,
2012
- batch: message.metadata?.batch,
2053
+ batch: (message.metadata as IBatchMetadata | undefined)?.batch,
2013
2054
  compression: message.compression,
2014
2055
  },
2015
2056
  );
@@ -2028,7 +2069,7 @@ export class ContainerRuntime
2028
2069
  // If we have processed a local op, this means that the container is
2029
2070
  // making progress and we can reset the counter for how many times
2030
2071
  // we have consecutively replayed the pending states
2031
- this.resetReconnectCount();
2072
+ this.resetReconnectCount(message);
2032
2073
  }
2033
2074
  } catch (e) {
2034
2075
  this.scheduleManager.afterOpProcessing(e, message);
@@ -2152,11 +2193,7 @@ export class ContainerRuntime
2152
2193
  // This will throw and close the container if rollback fails
2153
2194
  try {
2154
2195
  checkpoint.rollback((message: BatchMessage) =>
2155
- this.rollback(
2156
- message.deserializedContent.type,
2157
- message.deserializedContent.contents,
2158
- message.localOpMetadata,
2159
- ),
2196
+ this.rollback(message.contents, message.localOpMetadata),
2160
2197
  );
2161
2198
  } catch (err) {
2162
2199
  const error2 = wrapError(err, (message) => {
@@ -2409,7 +2446,7 @@ export class ContainerRuntime
2409
2446
  /** True to track the state for this summary in the SummarizerNodes; defaults to true */
2410
2447
  trackState?: boolean;
2411
2448
  /** Logger to use for correlated summary events */
2412
- summaryLogger?: ITelemetryLogger;
2449
+ summaryLogger?: ITelemetryLoggerExt;
2413
2450
  /** True to run garbage collection before summarizing; defaults to true */
2414
2451
  runGC?: boolean;
2415
2452
  /** True to generate full GC data */
@@ -2626,7 +2663,7 @@ export class ContainerRuntime
2626
2663
  public async collectGarbage(
2627
2664
  options: {
2628
2665
  /** Logger to use for logging GC events */
2629
- logger?: ITelemetryLogger;
2666
+ logger?: ITelemetryLoggerExt;
2630
2667
  /** True to run GC sweep phase after the mark phase */
2631
2668
  runSweep?: boolean;
2632
2669
  /** True to generate full GC data */
@@ -2797,7 +2834,7 @@ export class ContainerRuntime
2797
2834
  summaryNumber,
2798
2835
  ...partialStats,
2799
2836
  };
2800
- const generateSummaryData = {
2837
+ const generateSummaryData: Omit<IGenerateSummaryTreeResult, "stage" | "error"> = {
2801
2838
  referenceSequenceNumber: summaryRefSeqNum,
2802
2839
  minimumSequenceNumber,
2803
2840
  summaryTree,
@@ -2806,6 +2843,21 @@ export class ContainerRuntime
2806
2843
  forcedFullTree,
2807
2844
  } as const;
2808
2845
 
2846
+ // If validateSummaryBeforeUpload is true, validate that the summary generated by the summarizer nodes is
2847
+ // correct before this summary is uploaded.
2848
+ if (this.validateSummaryBeforeUpload) {
2849
+ const validateResult = this.summarizerNode.validateSummary();
2850
+ if (!validateResult.success) {
2851
+ const { success, ...loggingProps } = validateResult;
2852
+ const error = new RetriableSummaryError(
2853
+ validateResult.reason,
2854
+ validateResult.retryAfterSeconds,
2855
+ { ...loggingProps },
2856
+ );
2857
+ return { stage: "base", ...generateSummaryData, error };
2858
+ }
2859
+ }
2860
+
2809
2861
  continueResult = checkContinue();
2810
2862
  if (!continueResult.continue) {
2811
2863
  return { stage: "generate", ...generateSummaryData, error: continueResult.error };
@@ -2883,7 +2935,15 @@ export class ContainerRuntime
2883
2935
  submitOpDuration: trace.trace().duration,
2884
2936
  } as const;
2885
2937
 
2886
- this.summarizerNode.completeSummary(handle);
2938
+ try {
2939
+ // If validateSummaryBeforeUpload is false, the summary should be validated in this step.
2940
+ this.summarizerNode.completeSummary(
2941
+ handle,
2942
+ !this.validateSummaryBeforeUpload /* validate */,
2943
+ );
2944
+ } catch (error) {
2945
+ return { stage: "upload", ...uploadData, error };
2946
+ }
2887
2947
  return submitData;
2888
2948
  } finally {
2889
2949
  // Cleanup wip summary in case of failure
@@ -2973,10 +3033,10 @@ export class ContainerRuntime
2973
3033
  };
2974
3034
  idAllocationBatchMessage = {
2975
3035
  contents: JSON.stringify(idAllocationMessage),
2976
- deserializedContent: idAllocationMessage,
2977
3036
  referenceSequenceNumber: this.deltaManager.lastSequenceNumber,
2978
3037
  metadata: undefined,
2979
3038
  localOpMetadata: this.idCompressor?.serialize(true),
3039
+ type: ContainerMessageType.IdAllocation,
2980
3040
  };
2981
3041
  }
2982
3042
 
@@ -3014,7 +3074,7 @@ export class ContainerRuntime
3014
3074
 
3015
3075
  const message: BatchMessage = {
3016
3076
  contents: serializedContent,
3017
- deserializedContent: JSON.parse(serializedContent), // Deep copy in case caller changes reference object
3077
+ type,
3018
3078
  metadata,
3019
3079
  localOpMetadata,
3020
3080
  referenceSequenceNumber: this.deltaManager.lastSequenceNumber,
@@ -3053,6 +3113,9 @@ export class ContainerRuntime
3053
3113
  this.disableAttachReorder !== true
3054
3114
  ) {
3055
3115
  this.outbox.submitAttach(message);
3116
+ } else if (type === ContainerMessageType.BlobAttach) {
3117
+ // BlobAttach ops must have their metadata visible and cannot be grouped (see opGroupingManager.ts)
3118
+ this.outbox.submitBlobAttach(message);
3056
3119
  } else {
3057
3120
  this.outbox.submit(message);
3058
3121
  }
@@ -3146,7 +3209,7 @@ export class ContainerRuntime
3146
3209
  this.mc.logger.sendTelemetryEvent(
3147
3210
  { eventName: "OpReentry" },
3148
3211
  // We need to capture the call stack in order to inspect the source of this usage pattern
3149
- new UsageError(errorMessage),
3212
+ getLongStack(() => new UsageError(errorMessage)),
3150
3213
  );
3151
3214
  this.opReentryCallsToReport--;
3152
3215
  }
@@ -3169,13 +3232,28 @@ export class ContainerRuntime
3169
3232
  }
3170
3233
  }
3171
3234
 
3235
+ private reSubmitBatch(batch: IPendingBatchMessage[]) {
3236
+ this.orderSequentially(() => {
3237
+ for (const message of batch) {
3238
+ this.reSubmit(message);
3239
+ }
3240
+ });
3241
+ this.flush();
3242
+ }
3243
+
3244
+ private reSubmit(message: IPendingBatchMessage) {
3245
+ // Need to parse from string for back-compat
3246
+ const { contents, type } = this.parseOpContent(message.content);
3247
+ this.reSubmitCore(type, contents, message.localOpMetadata, message.opMetadata);
3248
+ }
3249
+
3172
3250
  /**
3173
3251
  * Finds the right store and asks it to resubmit the message. This typically happens when we
3174
3252
  * reconnect and there are pending messages.
3175
3253
  * @param content - The content of the original message.
3176
3254
  * @param localOpMetadata - The local metadata associated with the original message.
3177
3255
  */
3178
- private reSubmit(
3256
+ private reSubmitCore(
3179
3257
  type: ContainerMessageType,
3180
3258
  content: any,
3181
3259
  localOpMetadata: unknown,
@@ -3189,7 +3267,13 @@ export class ContainerRuntime
3189
3267
  break;
3190
3268
  case ContainerMessageType.Attach:
3191
3269
  case ContainerMessageType.Alias:
3270
+ this.submit(type, content, localOpMetadata);
3271
+ break;
3192
3272
  case ContainerMessageType.IdAllocation:
3273
+ // Remove the stashedState from the op if it's a stashed op
3274
+ if (content.stashedState !== undefined) {
3275
+ delete content.stashedState;
3276
+ }
3193
3277
  this.submit(type, content, localOpMetadata);
3194
3278
  break;
3195
3279
  case ContainerMessageType.ChunkedOp:
@@ -3205,12 +3289,14 @@ export class ContainerRuntime
3205
3289
  }
3206
3290
  }
3207
3291
 
3208
- private rollback(type: ContainerMessageType, content: any, localOpMetadata: unknown) {
3292
+ private rollback(content: string | undefined, localOpMetadata: unknown) {
3293
+ // Need to parse from string for back-compat
3294
+ const { type, contents } = this.parseOpContent(content);
3209
3295
  switch (type) {
3210
3296
  case ContainerMessageType.FluidDataStoreOp:
3211
3297
  // For operations, call rollbackDataStoreOp which will find the right store
3212
3298
  // and trigger rollback on it.
3213
- this.dataStores.rollbackDataStoreOp(content, localOpMetadata);
3299
+ this.dataStores.rollbackDataStoreOp(contents as IEnvelope, localOpMetadata);
3214
3300
  break;
3215
3301
  default:
3216
3302
  throw new Error(`Can't rollback ${type}`);
@@ -3219,7 +3305,7 @@ export class ContainerRuntime
3219
3305
 
3220
3306
  private async waitForDeltaManagerToCatchup(
3221
3307
  latestSnapshotRefSeq: number,
3222
- summaryLogger: ITelemetryLogger,
3308
+ summaryLogger: ITelemetryLoggerExt,
3223
3309
  ): Promise<void> {
3224
3310
  if (latestSnapshotRefSeq > this.deltaManager.lastSequenceNumber) {
3225
3311
  // We need to catch up to the latest summary's reference sequence number before proceeding.
@@ -3331,7 +3417,7 @@ export class ContainerRuntime
3331
3417
  * @returns downloaded snapshot's reference sequence number
3332
3418
  */
3333
3419
  private async refreshLatestSummaryAckFromServer(
3334
- summaryLogger: ITelemetryLogger,
3420
+ summaryLogger: ITelemetryLoggerExt,
3335
3421
  ): Promise<{ latestSnapshotRefSeq: number; latestSnapshotVersionId: string | undefined }> {
3336
3422
  const readAndParseBlob = async <T>(id: string) => readAndParse<T>(this.storage, id);
3337
3423
  const { snapshotTree, versionId, latestSnapshotRefSeq } =
@@ -3365,7 +3451,7 @@ export class ContainerRuntime
3365
3451
  }
3366
3452
 
3367
3453
  private async fetchLatestSnapshotFromStorage(
3368
- logger: ITelemetryLogger,
3454
+ logger: ITelemetryLoggerExt,
3369
3455
  event: ITelemetryGenericEvent,
3370
3456
  readAndParseBlob: ReadAndParseBlob,
3371
3457
  ): Promise<{ snapshotTree: ISnapshotTree; versionId: string; latestSnapshotRefSeq: number }> {
@@ -3373,7 +3459,7 @@ export class ContainerRuntime
3373
3459
  }
3374
3460
 
3375
3461
  private async fetchSnapshotFromStorage(
3376
- logger: ITelemetryLogger,
3462
+ logger: ITelemetryLoggerExt,
3377
3463
  event: ITelemetryGenericEvent,
3378
3464
  readAndParseBlob: ReadAndParseBlob,
3379
3465
  versionId: string | null,
package/src/dataStore.ts CHANGED
@@ -3,7 +3,7 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { ITelemetryLogger } from "@fluidframework/common-definitions";
6
+ import { ITelemetryLoggerExt, TelemetryDataTag } from "@fluidframework/telemetry-utils";
7
7
  import { assert, unreachableCase } from "@fluidframework/common-utils";
8
8
  import { AttachState } from "@fluidframework/container-definitions";
9
9
  import { UsageError } from "@fluidframework/container-utils";
@@ -13,7 +13,6 @@ import {
13
13
  IDataStore,
14
14
  IFluidDataStoreChannel,
15
15
  } from "@fluidframework/runtime-definitions";
16
- import { TelemetryDataTag } from "@fluidframework/telemetry-utils";
17
16
  import { ContainerRuntime } from "./containerRuntime";
18
17
  import { DataStores } from "./dataStores";
19
18
 
@@ -48,7 +47,7 @@ export const channelToDataStore = (
48
47
  internalId: string,
49
48
  runtime: ContainerRuntime,
50
49
  datastores: DataStores,
51
- logger: ITelemetryLogger,
50
+ logger: ITelemetryLoggerExt,
52
51
  ): IDataStore => new DataStore(fluidDataStoreChannel, internalId, runtime, datastores, logger);
53
52
 
54
53
  enum AliasState {
@@ -175,7 +174,7 @@ class DataStore implements IDataStore {
175
174
  private readonly internalId: string,
176
175
  private readonly runtime: ContainerRuntime,
177
176
  private readonly datastores: DataStores,
178
- private readonly logger: ITelemetryLogger,
177
+ private readonly logger: ITelemetryLoggerExt,
179
178
  ) {
180
179
  this.pendingAliases = datastores.pendingAliases;
181
180
  }
@@ -5,20 +5,22 @@
5
5
 
6
6
  import {
7
7
  IDisposable,
8
- ITelemetryLogger,
8
+ FluidObject,
9
+ IRequest,
10
+ IResponse,
11
+ IFluidHandle,
9
12
  ITelemetryProperties,
10
- } from "@fluidframework/common-definitions";
11
- import { FluidObject, IRequest, IResponse, IFluidHandle } from "@fluidframework/core-interfaces";
13
+ } from "@fluidframework/core-interfaces";
12
14
  import {
13
15
  IAudience,
14
16
  IDeltaManager,
15
17
  AttachState,
16
18
  ILoaderOptions,
17
19
  } from "@fluidframework/container-definitions";
18
- import { assert, Deferred, LazyPromise, TypedEventEmitter } from "@fluidframework/common-utils";
20
+ import { assert, Deferred, TypedEventEmitter } from "@fluidframework/common-utils";
21
+ import { LazyPromise } from "@fluidframework/core-utils";
19
22
  import { IDocumentStorageService } from "@fluidframework/driver-definitions";
20
- import { readAndParse } from "@fluidframework/driver-utils";
21
- import { BlobTreeEntry } from "@fluidframework/protocol-base";
23
+ import { BlobTreeEntry, readAndParse } from "@fluidframework/driver-utils";
22
24
  import {
23
25
  IClientDetails,
24
26
  IDocumentMessage,
@@ -60,6 +62,7 @@ import {
60
62
  import {
61
63
  ChildLogger,
62
64
  generateStack,
65
+ ITelemetryLoggerExt,
63
66
  loggerToMonitoringContext,
64
67
  LoggingError,
65
68
  MonitoringContext,
@@ -163,7 +166,7 @@ export abstract class FluidDataStoreContext
163
166
  return this._containerRuntime.clientDetails;
164
167
  }
165
168
 
166
- public get logger(): ITelemetryLogger {
169
+ public get logger(): ITelemetryLoggerExt {
167
170
  return this._containerRuntime.logger;
168
171
  }
169
172
 
@@ -394,7 +397,7 @@ export abstract class FluidDataStoreContext
394
397
  packageName: packagePathToTelemetryProperty(this.pkg),
395
398
  });
396
399
  this.channelDeferred?.reject(errorWrapped);
397
- this.logger.sendErrorEvent({ eventName: "RealizeError" }, errorWrapped);
400
+ this.mc.logger.sendErrorEvent({ eventName: "RealizeError" }, errorWrapped);
398
401
  });
399
402
  }
400
403
  return this.channelDeferred.promise;
@@ -784,7 +787,7 @@ export abstract class FluidDataStoreContext
784
787
  this.channelDeferred.resolve(this.channel);
785
788
  } catch (error) {
786
789
  this.channelDeferred?.reject(error);
787
- this.logger.sendErrorEvent(
790
+ this.mc.logger.sendErrorEvent(
788
791
  {
789
792
  eventName: "BindRuntimeError",
790
793
  fluidDataStoreId: {
@@ -3,13 +3,11 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import {
7
- IDisposable,
8
- ITelemetryBaseLogger,
9
- ITelemetryLogger,
10
- } from "@fluidframework/common-definitions";
11
- import { assert, Deferred, Lazy } from "@fluidframework/common-utils";
12
- import { ChildLogger } from "@fluidframework/telemetry-utils";
6
+ import { ITelemetryBaseLogger } from "@fluidframework/common-definitions";
7
+ import { assert, Deferred } from "@fluidframework/common-utils";
8
+ import { Lazy } from "@fluidframework/core-utils";
9
+ import { IDisposable } from "@fluidframework/core-interfaces";
10
+ import { ChildLogger, ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
13
11
  import { FluidDataStoreContext, LocalFluidDataStoreContext } from "./dataStoreContext";
14
12
 
15
13
  export class DataStoreContexts implements Iterable<[string, FluidDataStoreContext]>, IDisposable {
@@ -46,7 +44,7 @@ export class DataStoreContexts implements Iterable<[string, FluidDataStoreContex
46
44
  }
47
45
  });
48
46
 
49
- private readonly _logger: ITelemetryLogger;
47
+ private readonly _logger: ITelemetryLoggerExt;
50
48
 
51
49
  constructor(baseLogger: ITelemetryBaseLogger) {
52
50
  this._logger = ChildLogger.create(baseLogger);
package/src/dataStores.ts CHANGED
@@ -3,12 +3,16 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { ITelemetryBaseLogger, IDisposable } from "@fluidframework/common-definitions";
7
6
  import {
8
7
  DataCorruptionError,
9
8
  extractSafePropertiesFromMessage,
10
9
  } from "@fluidframework/container-utils";
11
- import { IFluidHandle, IRequest } from "@fluidframework/core-interfaces";
10
+ import {
11
+ ITelemetryBaseLogger,
12
+ IDisposable,
13
+ IFluidHandle,
14
+ IRequest,
15
+ } from "@fluidframework/core-interfaces";
12
16
  import { FluidObjectHandle } from "@fluidframework/datastore";
13
17
  import { ISequencedDocumentMessage, ISnapshotTree } from "@fluidframework/protocol-definitions";
14
18
  import {
@@ -46,7 +50,8 @@ import {
46
50
  } from "@fluidframework/telemetry-utils";
47
51
  import { AttachState } from "@fluidframework/container-definitions";
48
52
  import { buildSnapshotTree } from "@fluidframework/driver-utils";
49
- import { assert, Lazy } from "@fluidframework/common-utils";
53
+ import { assert } from "@fluidframework/common-utils";
54
+ import { Lazy } from "@fluidframework/core-utils";
50
55
  import { v4 as uuid } from "uuid";
51
56
  import { DataStoreContexts } from "./dataStoreContexts";
52
57
  import {
@@ -3,12 +3,11 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { ITelemetryLogger } from "@fluidframework/common-definitions";
6
+ import { ITelemetryLoggerExt, TelemetryLogger } from "@fluidframework/telemetry-utils";
7
7
  import { performance } from "@fluidframework/common-utils";
8
8
  import { IDeltaManager } from "@fluidframework/container-definitions";
9
9
  import { IDocumentMessage, ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
10
10
 
11
- import { TelemetryLogger } from "@fluidframework/telemetry-utils";
12
11
  /**
13
12
  * DeltaScheduler is responsible for the scheduling of inbound delta queue in cases where there
14
13
  * is more than one op a particular run of the queue. It does not schedule if there is just one
@@ -52,7 +51,7 @@ export class DeltaScheduler {
52
51
 
53
52
  constructor(
54
53
  deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>,
55
- private readonly logger: ITelemetryLogger,
54
+ private readonly logger: ITelemetryLoggerExt,
56
55
  ) {
57
56
  this.deltaManager = deltaManager;
58
57
  this.deltaManager.inbound.on("idle", () => {
@@ -3,8 +3,8 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { ITelemetryLogger } from "@fluidframework/common-definitions";
7
- import { LazyPromise, Timer } from "@fluidframework/common-utils";
6
+ import { Timer } from "@fluidframework/common-utils";
7
+ import { LazyPromise } from "@fluidframework/core-utils";
8
8
  import { ClientSessionExpiredError, DataProcessingError } from "@fluidframework/container-utils";
9
9
  import { IRequestHeader } from "@fluidframework/core-interfaces";
10
10
  import {
@@ -17,6 +17,7 @@ import {
17
17
  import { ReadAndParseBlob } from "@fluidframework/runtime-utils";
18
18
  import {
19
19
  ChildLogger,
20
+ ITelemetryLoggerExt,
20
21
  loggerToMonitoringContext,
21
22
  MonitoringContext,
22
23
  PerformanceEvent,
@@ -446,7 +447,7 @@ export class GarbageCollector implements IGarbageCollector {
446
447
  public async collectGarbage(
447
448
  options: {
448
449
  /** Logger to use for logging GC events */
449
- logger?: ITelemetryLogger;
450
+ logger?: ITelemetryLoggerExt;
450
451
  /** True to run GC sweep phase after the mark phase */
451
452
  runSweep?: boolean;
452
453
  /** True to generate full GC data */
@@ -528,7 +529,7 @@ export class GarbageCollector implements IGarbageCollector {
528
529
  private async runGC(
529
530
  fullGC: boolean,
530
531
  currentReferenceTimestampMs: number,
531
- logger: ITelemetryLogger,
532
+ logger: ITelemetryLoggerExt,
532
533
  ): Promise<IGCStats> {
533
534
  // 1. Generate / analyze the runtime's reference graph.
534
535
  // Get the reference graph (gcData) and run GC algorithm to get referenced / unreferenced nodes.
@@ -641,7 +642,7 @@ export class GarbageCollector implements IGarbageCollector {
641
642
  gcResult: IGCResult,
642
643
  sweepReadyNodes: string[],
643
644
  currentReferenceTimestampMs: number,
644
- logger: ITelemetryLogger,
645
+ logger: ITelemetryLoggerExt,
645
646
  ): string[] {
646
647
  // Log events for objects that are ready to be deleted by sweep. This will give us data on sweep when
647
648
  // its not enabled.
@@ -719,7 +720,7 @@ export class GarbageCollector implements IGarbageCollector {
719
720
  private findAllNodesReferencedBetweenGCs(
720
721
  currentGCData: IGarbageCollectionData,
721
722
  previousGCData: IGarbageCollectionData | undefined,
722
- logger: ITelemetryLogger,
723
+ logger: ITelemetryLoggerExt,
723
724
  ): string[] | undefined {
724
725
  // If we haven't run GC before there is nothing to do.
725
726
  // No previousGCData, means nothing is unreferenced, and there are no reference state trackers to clear