@fluidframework/container-runtime 2.0.0-dev.3.1.0.125672 → 2.0.0-dev.4.2.0.153917

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 (486) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/README.md +69 -0
  3. package/dist/blobManager.d.ts +29 -24
  4. package/dist/blobManager.d.ts.map +1 -1
  5. package/dist/blobManager.js +162 -92
  6. package/dist/blobManager.js.map +1 -1
  7. package/dist/containerRuntime.d.ts +74 -76
  8. package/dist/containerRuntime.d.ts.map +1 -1
  9. package/dist/containerRuntime.js +328 -264
  10. package/dist/containerRuntime.js.map +1 -1
  11. package/dist/dataStoreContext.d.ts +39 -13
  12. package/dist/dataStoreContext.d.ts.map +1 -1
  13. package/dist/dataStoreContext.js +112 -49
  14. package/dist/dataStoreContext.js.map +1 -1
  15. package/dist/dataStores.d.ts +28 -4
  16. package/dist/dataStores.d.ts.map +1 -1
  17. package/dist/dataStores.js +107 -41
  18. package/dist/dataStores.js.map +1 -1
  19. package/dist/deltaManagerSummarizerProxy.d.ts +19 -0
  20. package/dist/deltaManagerSummarizerProxy.d.ts.map +1 -0
  21. package/dist/deltaManagerSummarizerProxy.js +40 -0
  22. package/dist/deltaManagerSummarizerProxy.js.map +1 -0
  23. package/dist/gc/garbageCollection.d.ts +204 -0
  24. package/dist/gc/garbageCollection.d.ts.map +1 -0
  25. package/dist/{garbageCollection.js → gc/garbageCollection.js} +190 -554
  26. package/dist/gc/garbageCollection.js.map +1 -0
  27. package/dist/gc/gcConfigs.d.ts +22 -0
  28. package/dist/gc/gcConfigs.d.ts.map +1 -0
  29. package/dist/gc/gcConfigs.js +143 -0
  30. package/dist/gc/gcConfigs.js.map +1 -0
  31. package/dist/gc/gcDefinitions.d.ts +320 -0
  32. package/dist/gc/gcDefinitions.d.ts.map +1 -0
  33. package/dist/gc/gcDefinitions.js +81 -0
  34. package/dist/gc/gcDefinitions.js.map +1 -0
  35. package/dist/gc/gcHelpers.d.ts +86 -0
  36. package/dist/gc/gcHelpers.d.ts.map +1 -0
  37. package/dist/gc/gcHelpers.js +268 -0
  38. package/dist/gc/gcHelpers.js.map +1 -0
  39. package/dist/gc/gcReferenceGraphAlgorithm.d.ts +16 -0
  40. package/dist/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -0
  41. package/dist/gc/gcReferenceGraphAlgorithm.js +49 -0
  42. package/dist/gc/gcReferenceGraphAlgorithm.js.map +1 -0
  43. package/dist/gc/gcSummaryDefinitions.d.ts +52 -0
  44. package/dist/gc/gcSummaryDefinitions.d.ts.map +1 -0
  45. package/dist/gc/gcSummaryDefinitions.js +7 -0
  46. package/dist/gc/gcSummaryDefinitions.js.map +1 -0
  47. package/dist/gc/gcSummaryStateTracker.d.ts +93 -0
  48. package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -0
  49. package/dist/gc/gcSummaryStateTracker.js +239 -0
  50. package/dist/gc/gcSummaryStateTracker.js.map +1 -0
  51. package/dist/gc/gcSweepReadyUsageDetection.d.ts.map +1 -0
  52. package/dist/{gcSweepReadyUsageDetection.js → gc/gcSweepReadyUsageDetection.js} +2 -2
  53. package/dist/gc/gcSweepReadyUsageDetection.js.map +1 -0
  54. package/dist/gc/gcUnreferencedStateTracker.d.ts +34 -0
  55. package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -0
  56. package/dist/gc/gcUnreferencedStateTracker.js +94 -0
  57. package/dist/gc/gcUnreferencedStateTracker.js.map +1 -0
  58. package/dist/gc/index.d.ts +13 -0
  59. package/dist/gc/index.d.ts.map +1 -0
  60. package/dist/gc/index.js +50 -0
  61. package/dist/gc/index.js.map +1 -0
  62. package/dist/index.d.ts +3 -7
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +5 -9
  65. package/dist/index.js.map +1 -1
  66. package/dist/opLifecycle/batchManager.d.ts +11 -13
  67. package/dist/opLifecycle/batchManager.d.ts.map +1 -1
  68. package/dist/opLifecycle/batchManager.js +26 -38
  69. package/dist/opLifecycle/batchManager.js.map +1 -1
  70. package/dist/opLifecycle/definitions.d.ts +4 -0
  71. package/dist/opLifecycle/definitions.d.ts.map +1 -1
  72. package/dist/opLifecycle/definitions.js.map +1 -1
  73. package/dist/opLifecycle/index.d.ts +2 -1
  74. package/dist/opLifecycle/index.d.ts.map +1 -1
  75. package/dist/opLifecycle/index.js +4 -1
  76. package/dist/opLifecycle/index.js.map +1 -1
  77. package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
  78. package/dist/opLifecycle/opCompressor.js +25 -10
  79. package/dist/opLifecycle/opCompressor.js.map +1 -1
  80. package/dist/opLifecycle/opDecompressor.d.ts +4 -0
  81. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
  82. package/dist/opLifecycle/opDecompressor.js +43 -4
  83. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  84. package/dist/opLifecycle/opGroupingManager.d.ts +14 -0
  85. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -0
  86. package/dist/opLifecycle/opGroupingManager.js +56 -0
  87. package/dist/opLifecycle/opGroupingManager.js.map +1 -0
  88. package/dist/opLifecycle/opSplitter.d.ts +16 -4
  89. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  90. package/dist/opLifecycle/opSplitter.js +39 -15
  91. package/dist/opLifecycle/opSplitter.js.map +1 -1
  92. package/dist/opLifecycle/outbox.d.ts +21 -3
  93. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  94. package/dist/opLifecycle/outbox.js +90 -51
  95. package/dist/opLifecycle/outbox.js.map +1 -1
  96. package/dist/opLifecycle/remoteMessageProcessor.d.ts +4 -2
  97. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  98. package/dist/opLifecycle/remoteMessageProcessor.js +30 -20
  99. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  100. package/dist/packageVersion.d.ts +1 -1
  101. package/dist/packageVersion.js +1 -1
  102. package/dist/packageVersion.js.map +1 -1
  103. package/dist/pendingStateManager.d.ts +3 -3
  104. package/dist/pendingStateManager.d.ts.map +1 -1
  105. package/dist/pendingStateManager.js +20 -21
  106. package/dist/pendingStateManager.js.map +1 -1
  107. package/dist/storageServiceWithAttachBlobs.d.ts +17 -0
  108. package/dist/storageServiceWithAttachBlobs.d.ts.map +1 -0
  109. package/dist/storageServiceWithAttachBlobs.js +32 -0
  110. package/dist/storageServiceWithAttachBlobs.js.map +1 -0
  111. package/dist/summary/index.d.ts +17 -0
  112. package/dist/summary/index.d.ts.map +1 -0
  113. package/dist/summary/index.js +48 -0
  114. package/dist/summary/index.js.map +1 -0
  115. package/dist/summary/orderedClientElection.d.ts.map +1 -0
  116. package/dist/summary/orderedClientElection.js.map +1 -0
  117. package/dist/{runWhileConnectedCoordinator.d.ts → summary/runWhileConnectedCoordinator.d.ts} +3 -2
  118. package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -0
  119. package/dist/{runWhileConnectedCoordinator.js → summary/runWhileConnectedCoordinator.js} +5 -4
  120. package/dist/summary/runWhileConnectedCoordinator.js.map +1 -0
  121. package/{lib → dist/summary}/runningSummarizer.d.ts +23 -20
  122. package/dist/summary/runningSummarizer.d.ts.map +1 -0
  123. package/dist/{runningSummarizer.js → summary/runningSummarizer.js} +191 -74
  124. package/dist/summary/runningSummarizer.js.map +1 -0
  125. package/dist/{summarizer.d.ts → summary/summarizer.d.ts} +4 -9
  126. package/dist/summary/summarizer.d.ts.map +1 -0
  127. package/dist/{summarizer.js → summary/summarizer.js} +10 -79
  128. package/dist/summary/summarizer.js.map +1 -0
  129. package/dist/summary/summarizerClientElection.d.ts.map +1 -0
  130. package/dist/summary/summarizerClientElection.js.map +1 -0
  131. package/dist/{summarizerHeuristics.d.ts → summary/summarizerHeuristics.d.ts} +2 -1
  132. package/dist/summary/summarizerHeuristics.d.ts.map +1 -0
  133. package/dist/{summarizerHeuristics.js → summary/summarizerHeuristics.js} +6 -3
  134. package/dist/summary/summarizerHeuristics.js.map +1 -0
  135. package/dist/summary/summarizerNode/index.d.ts +8 -0
  136. package/dist/summary/summarizerNode/index.d.ts.map +1 -0
  137. package/dist/summary/summarizerNode/index.js +12 -0
  138. package/dist/summary/summarizerNode/index.js.map +1 -0
  139. package/dist/summary/summarizerNode/summarizerNode.d.ts +149 -0
  140. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -0
  141. package/dist/summary/summarizerNode/summarizerNode.js +531 -0
  142. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -0
  143. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +125 -0
  144. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -0
  145. package/dist/summary/summarizerNode/summarizerNodeUtils.js +132 -0
  146. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -0
  147. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +148 -0
  148. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -0
  149. package/dist/summary/summarizerNode/summarizerNodeWithGc.js +424 -0
  150. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -0
  151. package/{lib → dist/summary}/summarizerTypes.d.ts +21 -19
  152. package/dist/summary/summarizerTypes.d.ts.map +1 -0
  153. package/dist/{summarizerTypes.js → summary/summarizerTypes.js} +0 -5
  154. package/dist/summary/summarizerTypes.js.map +1 -0
  155. package/dist/summary/summaryCollection.d.ts.map +1 -0
  156. package/dist/summary/summaryCollection.js.map +1 -0
  157. package/{lib → dist/summary}/summaryFormat.d.ts +3 -21
  158. package/dist/summary/summaryFormat.d.ts.map +1 -0
  159. package/dist/{summaryFormat.js → summary/summaryFormat.js} +1 -10
  160. package/dist/summary/summaryFormat.js.map +1 -0
  161. package/{lib → dist/summary}/summaryGenerator.d.ts +28 -2
  162. package/dist/summary/summaryGenerator.d.ts.map +1 -0
  163. package/dist/{summaryGenerator.js → summary/summaryGenerator.js} +23 -20
  164. package/dist/summary/summaryGenerator.js.map +1 -0
  165. package/dist/{summaryManager.d.ts → summary/summaryManager.d.ts} +1 -1
  166. package/dist/summary/summaryManager.d.ts.map +1 -0
  167. package/dist/summary/summaryManager.js.map +1 -0
  168. package/lib/blobManager.d.ts +29 -24
  169. package/lib/blobManager.d.ts.map +1 -1
  170. package/lib/blobManager.js +159 -89
  171. package/lib/blobManager.js.map +1 -1
  172. package/lib/containerRuntime.d.ts +74 -76
  173. package/lib/containerRuntime.d.ts.map +1 -1
  174. package/lib/containerRuntime.js +301 -237
  175. package/lib/containerRuntime.js.map +1 -1
  176. package/lib/dataStoreContext.d.ts +39 -13
  177. package/lib/dataStoreContext.d.ts.map +1 -1
  178. package/lib/dataStoreContext.js +101 -38
  179. package/lib/dataStoreContext.js.map +1 -1
  180. package/lib/dataStores.d.ts +28 -4
  181. package/lib/dataStores.d.ts.map +1 -1
  182. package/lib/dataStores.js +100 -34
  183. package/lib/dataStores.js.map +1 -1
  184. package/lib/deltaManagerSummarizerProxy.d.ts +19 -0
  185. package/lib/deltaManagerSummarizerProxy.d.ts.map +1 -0
  186. package/lib/deltaManagerSummarizerProxy.js +36 -0
  187. package/lib/deltaManagerSummarizerProxy.js.map +1 -0
  188. package/lib/gc/garbageCollection.d.ts +204 -0
  189. package/lib/gc/garbageCollection.d.ts.map +1 -0
  190. package/lib/{garbageCollection.js → gc/garbageCollection.js} +172 -535
  191. package/lib/gc/garbageCollection.js.map +1 -0
  192. package/lib/gc/gcConfigs.d.ts +22 -0
  193. package/lib/gc/gcConfigs.d.ts.map +1 -0
  194. package/lib/gc/gcConfigs.js +139 -0
  195. package/lib/gc/gcConfigs.js.map +1 -0
  196. package/lib/gc/gcDefinitions.d.ts +320 -0
  197. package/lib/gc/gcDefinitions.d.ts.map +1 -0
  198. package/lib/gc/gcDefinitions.js +78 -0
  199. package/lib/gc/gcDefinitions.js.map +1 -0
  200. package/lib/gc/gcHelpers.d.ts +86 -0
  201. package/lib/gc/gcHelpers.d.ts.map +1 -0
  202. package/lib/gc/gcHelpers.js +254 -0
  203. package/lib/gc/gcHelpers.js.map +1 -0
  204. package/lib/gc/gcReferenceGraphAlgorithm.d.ts +16 -0
  205. package/lib/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -0
  206. package/lib/gc/gcReferenceGraphAlgorithm.js +45 -0
  207. package/lib/gc/gcReferenceGraphAlgorithm.js.map +1 -0
  208. package/lib/gc/gcSummaryDefinitions.d.ts +52 -0
  209. package/lib/gc/gcSummaryDefinitions.d.ts.map +1 -0
  210. package/lib/gc/gcSummaryDefinitions.js +6 -0
  211. package/lib/gc/gcSummaryDefinitions.js.map +1 -0
  212. package/lib/gc/gcSummaryStateTracker.d.ts +93 -0
  213. package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -0
  214. package/lib/gc/gcSummaryStateTracker.js +235 -0
  215. package/lib/gc/gcSummaryStateTracker.js.map +1 -0
  216. package/lib/gc/gcSweepReadyUsageDetection.d.ts.map +1 -0
  217. package/lib/{gcSweepReadyUsageDetection.js → gc/gcSweepReadyUsageDetection.js} +1 -1
  218. package/lib/gc/gcSweepReadyUsageDetection.js.map +1 -0
  219. package/lib/gc/gcUnreferencedStateTracker.d.ts +34 -0
  220. package/lib/gc/gcUnreferencedStateTracker.d.ts.map +1 -0
  221. package/lib/gc/gcUnreferencedStateTracker.js +90 -0
  222. package/lib/gc/gcUnreferencedStateTracker.js.map +1 -0
  223. package/lib/gc/index.d.ts +13 -0
  224. package/lib/gc/index.d.ts.map +1 -0
  225. package/lib/gc/index.js +12 -0
  226. package/lib/gc/index.js.map +1 -0
  227. package/lib/index.d.ts +3 -7
  228. package/lib/index.d.ts.map +1 -1
  229. package/lib/index.js +1 -4
  230. package/lib/index.js.map +1 -1
  231. package/lib/opLifecycle/batchManager.d.ts +11 -13
  232. package/lib/opLifecycle/batchManager.d.ts.map +1 -1
  233. package/lib/opLifecycle/batchManager.js +24 -37
  234. package/lib/opLifecycle/batchManager.js.map +1 -1
  235. package/lib/opLifecycle/definitions.d.ts +4 -0
  236. package/lib/opLifecycle/definitions.d.ts.map +1 -1
  237. package/lib/opLifecycle/definitions.js.map +1 -1
  238. package/lib/opLifecycle/index.d.ts +2 -1
  239. package/lib/opLifecycle/index.d.ts.map +1 -1
  240. package/lib/opLifecycle/index.js +2 -1
  241. package/lib/opLifecycle/index.js.map +1 -1
  242. package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
  243. package/lib/opLifecycle/opCompressor.js +26 -11
  244. package/lib/opLifecycle/opCompressor.js.map +1 -1
  245. package/lib/opLifecycle/opDecompressor.d.ts +4 -0
  246. package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
  247. package/lib/opLifecycle/opDecompressor.js +43 -4
  248. package/lib/opLifecycle/opDecompressor.js.map +1 -1
  249. package/lib/opLifecycle/opGroupingManager.d.ts +14 -0
  250. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -0
  251. package/lib/opLifecycle/opGroupingManager.js +52 -0
  252. package/lib/opLifecycle/opGroupingManager.js.map +1 -0
  253. package/lib/opLifecycle/opSplitter.d.ts +16 -4
  254. package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
  255. package/lib/opLifecycle/opSplitter.js +39 -15
  256. package/lib/opLifecycle/opSplitter.js.map +1 -1
  257. package/lib/opLifecycle/outbox.d.ts +21 -3
  258. package/lib/opLifecycle/outbox.d.ts.map +1 -1
  259. package/lib/opLifecycle/outbox.js +92 -53
  260. package/lib/opLifecycle/outbox.js.map +1 -1
  261. package/lib/opLifecycle/remoteMessageProcessor.d.ts +4 -2
  262. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  263. package/lib/opLifecycle/remoteMessageProcessor.js +30 -20
  264. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
  265. package/lib/packageVersion.d.ts +1 -1
  266. package/lib/packageVersion.js +1 -1
  267. package/lib/packageVersion.js.map +1 -1
  268. package/lib/pendingStateManager.d.ts +3 -3
  269. package/lib/pendingStateManager.d.ts.map +1 -1
  270. package/lib/pendingStateManager.js +20 -21
  271. package/lib/pendingStateManager.js.map +1 -1
  272. package/lib/storageServiceWithAttachBlobs.d.ts +17 -0
  273. package/lib/storageServiceWithAttachBlobs.d.ts.map +1 -0
  274. package/lib/storageServiceWithAttachBlobs.js +28 -0
  275. package/lib/storageServiceWithAttachBlobs.js.map +1 -0
  276. package/lib/summary/index.d.ts +17 -0
  277. package/lib/summary/index.d.ts.map +1 -0
  278. package/lib/summary/index.js +16 -0
  279. package/lib/summary/index.js.map +1 -0
  280. package/lib/summary/orderedClientElection.d.ts.map +1 -0
  281. package/lib/summary/orderedClientElection.js.map +1 -0
  282. package/lib/{runWhileConnectedCoordinator.d.ts → summary/runWhileConnectedCoordinator.d.ts} +3 -2
  283. package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -0
  284. package/lib/{runWhileConnectedCoordinator.js → summary/runWhileConnectedCoordinator.js} +5 -4
  285. package/lib/summary/runWhileConnectedCoordinator.js.map +1 -0
  286. package/{dist → lib/summary}/runningSummarizer.d.ts +23 -20
  287. package/lib/summary/runningSummarizer.d.ts.map +1 -0
  288. package/lib/{runningSummarizer.js → summary/runningSummarizer.js} +192 -75
  289. package/lib/summary/runningSummarizer.js.map +1 -0
  290. package/lib/{summarizer.d.ts → summary/summarizer.d.ts} +4 -9
  291. package/lib/summary/summarizer.d.ts.map +1 -0
  292. package/lib/{summarizer.js → summary/summarizer.js} +12 -81
  293. package/lib/summary/summarizer.js.map +1 -0
  294. package/lib/summary/summarizerClientElection.d.ts.map +1 -0
  295. package/lib/summary/summarizerClientElection.js.map +1 -0
  296. package/lib/{summarizerHeuristics.d.ts → summary/summarizerHeuristics.d.ts} +2 -1
  297. package/lib/summary/summarizerHeuristics.d.ts.map +1 -0
  298. package/lib/{summarizerHeuristics.js → summary/summarizerHeuristics.js} +6 -3
  299. package/lib/summary/summarizerHeuristics.js.map +1 -0
  300. package/lib/summary/summarizerNode/index.d.ts +8 -0
  301. package/lib/summary/summarizerNode/index.d.ts.map +1 -0
  302. package/lib/summary/summarizerNode/index.js +7 -0
  303. package/lib/summary/summarizerNode/index.js.map +1 -0
  304. package/lib/summary/summarizerNode/summarizerNode.d.ts +149 -0
  305. package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -0
  306. package/lib/summary/summarizerNode/summarizerNode.js +526 -0
  307. package/lib/summary/summarizerNode/summarizerNode.js.map +1 -0
  308. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts +125 -0
  309. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -0
  310. package/lib/summary/summarizerNode/summarizerNodeUtils.js +125 -0
  311. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -0
  312. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +148 -0
  313. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -0
  314. package/lib/summary/summarizerNode/summarizerNodeWithGc.js +419 -0
  315. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -0
  316. package/{dist → lib/summary}/summarizerTypes.d.ts +21 -19
  317. package/lib/summary/summarizerTypes.d.ts.map +1 -0
  318. package/lib/summary/summarizerTypes.js +6 -0
  319. package/lib/summary/summarizerTypes.js.map +1 -0
  320. package/lib/summary/summaryCollection.d.ts.map +1 -0
  321. package/lib/summary/summaryCollection.js.map +1 -0
  322. package/{dist → lib/summary}/summaryFormat.d.ts +3 -21
  323. package/lib/summary/summaryFormat.d.ts.map +1 -0
  324. package/lib/{summaryFormat.js → summary/summaryFormat.js} +0 -8
  325. package/lib/summary/summaryFormat.js.map +1 -0
  326. package/{dist → lib/summary}/summaryGenerator.d.ts +28 -2
  327. package/lib/summary/summaryGenerator.d.ts.map +1 -0
  328. package/lib/{summaryGenerator.js → summary/summaryGenerator.js} +21 -19
  329. package/lib/summary/summaryGenerator.js.map +1 -0
  330. package/lib/{summaryManager.d.ts → summary/summaryManager.d.ts} +1 -1
  331. package/lib/summary/summaryManager.d.ts.map +1 -0
  332. package/lib/summary/summaryManager.js.map +1 -0
  333. package/package.json +66 -60
  334. package/src/blobManager.ts +196 -110
  335. package/src/containerRuntime.ts +491 -391
  336. package/src/dataStoreContext.ts +140 -49
  337. package/src/dataStores.ts +139 -41
  338. package/src/deltaManagerSummarizerProxy.ts +46 -0
  339. package/{garbageCollection.md → src/gc/garbageCollection.md} +2 -2
  340. package/src/{garbageCollection.ts → gc/garbageCollection.ts} +245 -890
  341. package/src/gc/gcConfigs.ts +193 -0
  342. package/src/gc/gcDefinitions.ts +387 -0
  343. package/src/gc/gcHelpers.ts +335 -0
  344. package/src/gc/gcReferenceGraphAlgorithm.ts +52 -0
  345. package/src/gc/gcSummaryDefinitions.ts +54 -0
  346. package/src/gc/gcSummaryStateTracker.ts +329 -0
  347. package/src/{gcSweepReadyUsageDetection.ts → gc/gcSweepReadyUsageDetection.ts} +1 -1
  348. package/src/gc/gcUnreferencedStateTracker.ts +114 -0
  349. package/src/gc/index.ts +65 -0
  350. package/src/index.ts +10 -22
  351. package/src/opLifecycle/README.md +263 -0
  352. package/src/opLifecycle/batchManager.ts +26 -55
  353. package/src/opLifecycle/definitions.ts +4 -0
  354. package/src/opLifecycle/index.ts +2 -1
  355. package/src/opLifecycle/opCompressor.ts +32 -12
  356. package/src/opLifecycle/opDecompressor.ts +50 -5
  357. package/src/opLifecycle/opGroupingManager.ts +78 -0
  358. package/src/opLifecycle/opSplitter.ts +56 -17
  359. package/src/opLifecycle/outbox.ts +126 -62
  360. package/src/opLifecycle/remoteMessageProcessor.ts +38 -22
  361. package/src/packageVersion.ts +1 -1
  362. package/src/pendingStateManager.ts +34 -27
  363. package/src/storageServiceWithAttachBlobs.ts +38 -0
  364. package/src/summary/index.ts +105 -0
  365. package/src/{runWhileConnectedCoordinator.ts → summary/runWhileConnectedCoordinator.ts} +7 -7
  366. package/src/{runningSummarizer.ts → summary/runningSummarizer.ts} +318 -156
  367. package/src/{summarizer.ts → summary/summarizer.ts} +12 -105
  368. package/src/{summarizerHeuristics.ts → summary/summarizerHeuristics.ts} +13 -4
  369. package/src/summary/summarizerNode/index.ts +12 -0
  370. package/src/summary/summarizerNode/summarizerNode.ts +766 -0
  371. package/src/summary/summarizerNode/summarizerNodeUtils.ts +214 -0
  372. package/src/summary/summarizerNode/summarizerNodeWithGc.ts +644 -0
  373. package/src/{summarizerTypes.ts → summary/summarizerTypes.ts} +28 -25
  374. package/src/{summaryFormat.ts → summary/summaryFormat.ts} +3 -29
  375. package/src/{summaryGenerator.ts → summary/summaryGenerator.ts} +34 -27
  376. package/src/{summaryManager.ts → summary/summaryManager.ts} +1 -1
  377. package/dist/garbageCollection.d.ts +0 -411
  378. package/dist/garbageCollection.d.ts.map +0 -1
  379. package/dist/garbageCollection.js.map +0 -1
  380. package/dist/garbageCollectionConstants.d.ts +0 -23
  381. package/dist/garbageCollectionConstants.d.ts.map +0 -1
  382. package/dist/garbageCollectionConstants.js +0 -36
  383. package/dist/garbageCollectionConstants.js.map +0 -1
  384. package/dist/garbageCollectionHelpers.d.ts +0 -15
  385. package/dist/garbageCollectionHelpers.d.ts.map +0 -1
  386. package/dist/garbageCollectionHelpers.js +0 -27
  387. package/dist/garbageCollectionHelpers.js.map +0 -1
  388. package/dist/gcSweepReadyUsageDetection.d.ts.map +0 -1
  389. package/dist/gcSweepReadyUsageDetection.js.map +0 -1
  390. package/dist/orderedClientElection.d.ts.map +0 -1
  391. package/dist/orderedClientElection.js.map +0 -1
  392. package/dist/runWhileConnectedCoordinator.d.ts.map +0 -1
  393. package/dist/runWhileConnectedCoordinator.js.map +0 -1
  394. package/dist/runningSummarizer.d.ts.map +0 -1
  395. package/dist/runningSummarizer.js.map +0 -1
  396. package/dist/serializedSnapshotStorage.d.ts +0 -58
  397. package/dist/serializedSnapshotStorage.d.ts.map +0 -1
  398. package/dist/serializedSnapshotStorage.js +0 -110
  399. package/dist/serializedSnapshotStorage.js.map +0 -1
  400. package/dist/summarizer.d.ts.map +0 -1
  401. package/dist/summarizer.js.map +0 -1
  402. package/dist/summarizerClientElection.d.ts.map +0 -1
  403. package/dist/summarizerClientElection.js.map +0 -1
  404. package/dist/summarizerHandle.d.ts +0 -12
  405. package/dist/summarizerHandle.d.ts.map +0 -1
  406. package/dist/summarizerHandle.js +0 -22
  407. package/dist/summarizerHandle.js.map +0 -1
  408. package/dist/summarizerHeuristics.d.ts.map +0 -1
  409. package/dist/summarizerHeuristics.js.map +0 -1
  410. package/dist/summarizerTypes.d.ts.map +0 -1
  411. package/dist/summarizerTypes.js.map +0 -1
  412. package/dist/summaryCollection.d.ts.map +0 -1
  413. package/dist/summaryCollection.js.map +0 -1
  414. package/dist/summaryFormat.d.ts.map +0 -1
  415. package/dist/summaryFormat.js.map +0 -1
  416. package/dist/summaryGenerator.d.ts.map +0 -1
  417. package/dist/summaryGenerator.js.map +0 -1
  418. package/dist/summaryManager.d.ts.map +0 -1
  419. package/dist/summaryManager.js.map +0 -1
  420. package/lib/garbageCollection.d.ts +0 -411
  421. package/lib/garbageCollection.d.ts.map +0 -1
  422. package/lib/garbageCollection.js.map +0 -1
  423. package/lib/garbageCollectionConstants.d.ts +0 -23
  424. package/lib/garbageCollectionConstants.d.ts.map +0 -1
  425. package/lib/garbageCollectionConstants.js +0 -33
  426. package/lib/garbageCollectionConstants.js.map +0 -1
  427. package/lib/garbageCollectionHelpers.d.ts +0 -15
  428. package/lib/garbageCollectionHelpers.d.ts.map +0 -1
  429. package/lib/garbageCollectionHelpers.js +0 -23
  430. package/lib/garbageCollectionHelpers.js.map +0 -1
  431. package/lib/gcSweepReadyUsageDetection.d.ts.map +0 -1
  432. package/lib/gcSweepReadyUsageDetection.js.map +0 -1
  433. package/lib/orderedClientElection.d.ts.map +0 -1
  434. package/lib/orderedClientElection.js.map +0 -1
  435. package/lib/runWhileConnectedCoordinator.d.ts.map +0 -1
  436. package/lib/runWhileConnectedCoordinator.js.map +0 -1
  437. package/lib/runningSummarizer.d.ts.map +0 -1
  438. package/lib/runningSummarizer.js.map +0 -1
  439. package/lib/serializedSnapshotStorage.d.ts +0 -58
  440. package/lib/serializedSnapshotStorage.d.ts.map +0 -1
  441. package/lib/serializedSnapshotStorage.js +0 -106
  442. package/lib/serializedSnapshotStorage.js.map +0 -1
  443. package/lib/summarizer.d.ts.map +0 -1
  444. package/lib/summarizer.js.map +0 -1
  445. package/lib/summarizerClientElection.d.ts.map +0 -1
  446. package/lib/summarizerClientElection.js.map +0 -1
  447. package/lib/summarizerHandle.d.ts +0 -12
  448. package/lib/summarizerHandle.d.ts.map +0 -1
  449. package/lib/summarizerHandle.js +0 -18
  450. package/lib/summarizerHandle.js.map +0 -1
  451. package/lib/summarizerHeuristics.d.ts.map +0 -1
  452. package/lib/summarizerHeuristics.js.map +0 -1
  453. package/lib/summarizerTypes.d.ts.map +0 -1
  454. package/lib/summarizerTypes.js +0 -9
  455. package/lib/summarizerTypes.js.map +0 -1
  456. package/lib/summaryCollection.d.ts.map +0 -1
  457. package/lib/summaryCollection.js.map +0 -1
  458. package/lib/summaryFormat.d.ts.map +0 -1
  459. package/lib/summaryFormat.js.map +0 -1
  460. package/lib/summaryGenerator.d.ts.map +0 -1
  461. package/lib/summaryGenerator.js.map +0 -1
  462. package/lib/summaryManager.d.ts.map +0 -1
  463. package/lib/summaryManager.js.map +0 -1
  464. package/src/garbageCollectionConstants.ts +0 -38
  465. package/src/garbageCollectionHelpers.ts +0 -37
  466. package/src/serializedSnapshotStorage.ts +0 -151
  467. package/src/summarizerHandle.ts +0 -23
  468. /package/dist/{gcSweepReadyUsageDetection.d.ts → gc/gcSweepReadyUsageDetection.d.ts} +0 -0
  469. /package/dist/{orderedClientElection.d.ts → summary/orderedClientElection.d.ts} +0 -0
  470. /package/dist/{orderedClientElection.js → summary/orderedClientElection.js} +0 -0
  471. /package/dist/{summarizerClientElection.d.ts → summary/summarizerClientElection.d.ts} +0 -0
  472. /package/dist/{summarizerClientElection.js → summary/summarizerClientElection.js} +0 -0
  473. /package/dist/{summaryCollection.d.ts → summary/summaryCollection.d.ts} +0 -0
  474. /package/dist/{summaryCollection.js → summary/summaryCollection.js} +0 -0
  475. /package/dist/{summaryManager.js → summary/summaryManager.js} +0 -0
  476. /package/lib/{gcSweepReadyUsageDetection.d.ts → gc/gcSweepReadyUsageDetection.d.ts} +0 -0
  477. /package/lib/{orderedClientElection.d.ts → summary/orderedClientElection.d.ts} +0 -0
  478. /package/lib/{orderedClientElection.js → summary/orderedClientElection.js} +0 -0
  479. /package/lib/{summarizerClientElection.d.ts → summary/summarizerClientElection.d.ts} +0 -0
  480. /package/lib/{summarizerClientElection.js → summary/summarizerClientElection.js} +0 -0
  481. /package/lib/{summaryCollection.d.ts → summary/summaryCollection.d.ts} +0 -0
  482. /package/lib/{summaryCollection.js → summary/summaryCollection.js} +0 -0
  483. /package/lib/{summaryManager.js → summary/summaryManager.js} +0 -0
  484. /package/src/{orderedClientElection.ts → summary/orderedClientElection.ts} +0 -0
  485. /package/src/{summarizerClientElection.ts → summary/summarizerClientElection.ts} +0 -0
  486. /package/src/{summaryCollection.ts → summary/summaryCollection.ts} +0 -0
@@ -10,7 +10,6 @@ import {
10
10
  ITelemetryProperties,
11
11
  } from "@fluidframework/common-definitions";
12
12
  import { ITelemetryLoggerPropertyBag } from "@fluidframework/telemetry-utils";
13
- import { IFluidLoadable } from "@fluidframework/core-interfaces";
14
13
  import { ContainerWarning, IDeltaManager } from "@fluidframework/container-definitions";
15
14
  import {
16
15
  ISequencedDocumentMessage,
@@ -18,24 +17,9 @@ import {
18
17
  IDocumentMessage,
19
18
  } from "@fluidframework/protocol-definitions";
20
19
  import { ISummaryStats } from "@fluidframework/runtime-definitions";
20
+ import { ISummaryConfigurationHeuristics } from "../containerRuntime";
21
21
  import { ISummaryAckMessage, ISummaryNackMessage, ISummaryOpMessage } from "./summaryCollection";
22
22
  import { SummarizeReason } from "./summaryGenerator";
23
- import { ISummaryConfigurationHeuristics } from ".";
24
-
25
- /**
26
- * @deprecated This will be removed in a later release.
27
- */
28
- export const ISummarizer: keyof IProvideSummarizer = "ISummarizer";
29
-
30
- /**
31
- * @deprecated This will be removed in a later release.
32
- */
33
- export interface IProvideSummarizer {
34
- /**
35
- * @deprecated This will be removed in a later release.
36
- */
37
- readonly ISummarizer: ISummarizer;
38
- }
39
23
 
40
24
  /**
41
25
  * Similar to AbortSignal, but using promise instead of events
@@ -84,7 +68,6 @@ export interface IConnectableRuntime {
84
68
  readonly disposed: boolean;
85
69
  readonly connected: boolean;
86
70
  readonly clientId: string | undefined;
87
- readonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>;
88
71
  once(event: "connected" | "disconnected" | "dispose", listener: () => void): this;
89
72
  }
90
73
 
@@ -92,8 +75,17 @@ export interface ISummarizerRuntime extends IConnectableRuntime {
92
75
  readonly logger: ITelemetryLogger;
93
76
  /** clientId of parent (non-summarizing) container that owns summarizer container */
94
77
  readonly summarizerClientId: string | undefined;
78
+ readonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>;
95
79
  disposeFn?(): void;
96
80
  closeFn(): void;
81
+ on?(
82
+ event: "op",
83
+ listener: (op: ISequencedDocumentMessage, runtimeMessage?: boolean) => void,
84
+ ): this;
85
+ off?(
86
+ event: "op",
87
+ listener: (op: ISequencedDocumentMessage, runtimeMessage?: boolean) => void,
88
+ ): this;
97
89
  }
98
90
 
99
91
  /** Options affecting summarize behavior. */
@@ -310,8 +302,13 @@ export type SummarizerStopReason =
310
302
  | "notElectedClient"
311
303
  /** Summarizer client was disconnected */
312
304
  | "summarizerClientDisconnected"
313
- /* running summarizer threw an exception */
314
- | "summarizerException";
305
+ /** running summarizer threw an exception */
306
+ | "summarizerException"
307
+ /**
308
+ * The previous summary state on the summarizer is not the most recently acked summary. this also happens when the
309
+ * first submitSummary attempt fails for any reason and there's a 2nd summary attempt without an ack
310
+ */
311
+ | "latestSummaryStateStale";
315
312
 
316
313
  export interface ISummarizerEvents extends IEvent {
317
314
  /**
@@ -320,10 +317,12 @@ export interface ISummarizerEvents extends IEvent {
320
317
  (event: "summarizingError", listener: (error: ISummarizingWarning) => void);
321
318
  }
322
319
 
323
- export interface ISummarizer
324
- extends IEventProvider<ISummarizerEvents>,
325
- IFluidLoadable,
326
- Partial<IProvideSummarizer> {
320
+ export interface ISummarizer extends IEventProvider<ISummarizerEvents> {
321
+ /**
322
+ * Allows {@link ISummarizer} to be used with our {@link @fluidframework/core-interfaces#FluidObject} pattern.
323
+ */
324
+ readonly ISummarizer?: ISummarizer;
325
+
327
326
  /*
328
327
  * Asks summarizer to move to exit.
329
328
  * Summarizer will finish current processes, which may take a while.
@@ -412,6 +411,8 @@ export interface ISummarizeHeuristicData {
412
411
 
413
412
  /** Mark that the last sent summary attempt has received an ack */
414
413
  markLastAttemptAsSuccessful(): void;
414
+
415
+ opsSinceLastSummary: number;
415
416
  }
416
417
 
417
418
  /** Responsible for running heuristics determining when to summarize. */
@@ -505,7 +506,9 @@ type SummaryGeneratorOptionalTelemetryProperties =
505
506
  /** Actual sequence number of the summary op proposal. */
506
507
  | "summarySequenceNumber"
507
508
  /** Optional Retry-After time in seconds. If specified, the client should wait this many seconds before retrying. */
508
- | "nackRetryAfter";
509
+ | "nackRetryAfter"
510
+ /** The stage at which the submit summary method failed at. This can help determine what type of failure we have */
511
+ | "stage";
509
512
 
510
513
  export type SummaryGeneratorTelemetry = Pick<
511
514
  ITelemetryProperties,
@@ -16,6 +16,7 @@ import {
16
16
  gcTreeKey,
17
17
  ISummaryTreeWithStats,
18
18
  } from "@fluidframework/runtime-definitions";
19
+ import { IGCMetadata } from "../gc";
19
20
 
20
21
  type OmitAttributesVersions<T> = Omit<T, "snapshotFormatVersion" | "summaryFormatVersion">;
21
22
  interface IFluidDataStoreAttributes0 {
@@ -88,6 +89,8 @@ export interface IContainerRuntimeMetadata extends ICreateContainerMetadata, IGC
88
89
  readonly disableIsolatedChannels?: true;
89
90
  /** The summary number for a container's summary. Incremented on summaries throughout its lifetime. */
90
91
  readonly summaryNumber?: number;
92
+ /** GUID to identify a document in telemetry */
93
+ readonly telemetryDocumentId?: string;
91
94
  }
92
95
 
93
96
  export interface ICreateContainerMetadata {
@@ -97,27 +100,6 @@ export interface ICreateContainerMetadata {
97
100
  createContainerTimestamp?: number;
98
101
  }
99
102
 
100
- export type GCVersion = number;
101
- export interface IGCMetadata {
102
- /**
103
- * The version of the GC code that was run to generate the GC data that is written in the summary.
104
- * Also, used to determine whether GC is enabled for this container or not:
105
- * - A value of 0 or undefined means GC is disabled.
106
- * - A value greater than 0 means GC is enabled.
107
- */
108
- readonly gcFeature?: GCVersion;
109
- /**
110
- * Tells whether the GC sweep phase is enabled for this container.
111
- * - True means sweep phase is enabled.
112
- * - False means sweep phase is disabled. If GC is disabled as per gcFeature, sweep is also disabled.
113
- */
114
- readonly sweepEnabled?: boolean;
115
- /** If this is present, the session for this container will expire after this time and the container will close */
116
- readonly sessionExpiryTimeoutMs?: number;
117
- /** How long to wait after an object is unreferenced before deleting it via GC Sweep */
118
- readonly sweepTimeoutMs?: number;
119
- }
120
-
121
103
  /** The properties of an ISequencedDocumentMessage to be stored in the metadata blob in summary. */
122
104
  export type ISummaryMetadataMessage = Pick<
123
105
  ISequencedDocumentMessage,
@@ -173,14 +155,6 @@ export function rootHasIsolatedChannels(metadata?: IContainerRuntimeMetadata): b
173
155
  return !!metadata && !metadata.disableIsolatedChannels;
174
156
  }
175
157
 
176
- export function getGCVersion(metadata?: IGCMetadata): GCVersion {
177
- if (!metadata) {
178
- // Force to 0/disallowed in prior versions
179
- return 0;
180
- }
181
- return metadata.gcFeature ?? 0;
182
- }
183
-
184
158
  export const protocolTreeName = ".protocol";
185
159
 
186
160
  /**
@@ -120,6 +120,10 @@ const summarizeErrors = {
120
120
  disconnect: "Summary cancelled due to summarizer or main client disconnect",
121
121
  } as const;
122
122
 
123
+ // Helper functions to report failures and return.
124
+ export const getFailMessage = (errorCode: keyof typeof summarizeErrors) =>
125
+ `${errorCode}: ${summarizeErrors[errorCode]}`;
126
+
123
127
  export class SummarizeResultBuilder {
124
128
  public readonly summarySubmitted = new Deferred<SummarizeResultPart<SubmitSummaryResult>>();
125
129
  public readonly summaryOpBroadcasted = new Deferred<
@@ -171,7 +175,6 @@ export class SummaryGenerator {
171
175
  private readonly submitSummaryCallback: (
172
176
  options: ISubmitSummaryOptions,
173
177
  ) => Promise<SubmitSummaryResult>,
174
- private readonly raiseSummarizingError: (errorMessage: string) => void,
175
178
  private readonly successfulSummaryCallback: () => void,
176
179
  private readonly summaryWatcher: Pick<IClientSummaryWatcher, "watchSummary">,
177
180
  private readonly logger: ITelemetryLogger,
@@ -194,10 +197,6 @@ export class SummaryGenerator {
194
197
  cancellationToken: ISummaryCancellationToken,
195
198
  resultsBuilder = new SummarizeResultBuilder(),
196
199
  ): ISummarizeResults {
197
- this.logger.sendTelemetryEvent({
198
- eventName: "Summarize_start",
199
- ...summarizeProps,
200
- });
201
200
  this.summarizeCore(summarizeProps, options, resultsBuilder, cancellationToken).catch(
202
201
  (error) => {
203
202
  const message = "UnexpectedSummarizeError";
@@ -229,22 +228,22 @@ export class SummaryGenerator {
229
228
  timeSinceLastSummary,
230
229
  };
231
230
 
232
- const summarizeEvent = PerformanceEvent.start(logger, {
233
- eventName: "Summarize",
234
- refreshLatestAck,
235
- ...summarizeTelemetryProps,
236
- });
231
+ const summarizeEvent = PerformanceEvent.start(
232
+ logger,
233
+ {
234
+ eventName: "Summarize",
235
+ refreshLatestAck,
236
+ ...summarizeTelemetryProps,
237
+ },
238
+ { start: true, end: true, cancel: "generic" },
239
+ );
237
240
 
238
- // Helper functions to report failures and return.
239
- const getFailMessage = (errorCode: keyof typeof summarizeErrors) =>
240
- `${errorCode}: ${summarizeErrors[errorCode]}`;
241
241
  const fail = (
242
242
  errorCode: keyof typeof summarizeErrors,
243
243
  error?: any,
244
244
  properties?: SummaryGeneratorTelemetry,
245
245
  nackSummaryResult?: INackSummaryResult,
246
246
  ) => {
247
- this.raiseSummarizingError(summarizeErrors[errorCode]);
248
247
  // UploadSummary may fail with 429 and retryAfter - respect that
249
248
  // Summary Nack also can have retryAfter, it's parsed below and comes as a property.
250
249
  const retryAfterSeconds = getRetryDelaySecondsFromError(error);
@@ -257,17 +256,17 @@ export class SummaryGenerator {
257
256
  ? "generic"
258
257
  : "error";
259
258
 
260
- const message = getFailMessage(errorCode);
259
+ const reason = getFailMessage(errorCode);
261
260
  summarizeEvent.cancel(
262
261
  {
263
262
  ...properties,
264
- reason: errorCode,
263
+ reason,
265
264
  category,
266
265
  retryAfterSeconds,
267
266
  },
268
- error ?? message,
267
+ error ?? reason,
269
268
  ); // disconnect & summaryAckTimeout do not have proper error.
270
- resultsBuilder.fail(message, error, nackSummaryResult, retryAfterSeconds);
269
+ resultsBuilder.fail(reason, error, nackSummaryResult, retryAfterSeconds);
271
270
  };
272
271
 
273
272
  // Wait to generate and send summary
@@ -283,18 +282,20 @@ export class SummaryGenerator {
283
282
  cancellationToken,
284
283
  });
285
284
 
285
+ this.heuristicData.recordAttempt(summaryData.referenceSequenceNumber);
286
+
286
287
  // Cumulatively add telemetry properties based on how far generateSummary went.
287
288
  const referenceSequenceNumber = summaryData.referenceSequenceNumber;
288
- const opsSinceLastSummary =
289
- referenceSequenceNumber -
290
- this.heuristicData.lastSuccessfulSummary.refSequenceNumber;
291
289
  summarizeTelemetryProps = {
292
290
  ...summarizeTelemetryProps,
293
291
  referenceSequenceNumber,
294
292
  minimumSequenceNumber: summaryData.minimumSequenceNumber,
295
293
  opsSinceLastAttempt:
296
294
  referenceSequenceNumber - this.heuristicData.lastAttempt.refSequenceNumber,
297
- opsSinceLastSummary,
295
+ opsSinceLastSummary:
296
+ referenceSequenceNumber -
297
+ this.heuristicData.lastSuccessfulSummary.refSequenceNumber,
298
+ stage: summaryData.stage,
298
299
  };
299
300
  summarizeTelemetryProps = this.addSummaryDataToTelemetryProps(
300
301
  summaryData,
@@ -318,12 +319,15 @@ export class SummaryGenerator {
318
319
  if (!fullTree && !summaryData.forcedFullTree) {
319
320
  const { summarizedDataStoreCount, gcStateUpdatedDataStoreCount = 0 } =
320
321
  summaryData.summaryStats;
321
- if (summarizedDataStoreCount > gcStateUpdatedDataStoreCount + opsSinceLastSummary) {
322
+ if (
323
+ summarizedDataStoreCount >
324
+ gcStateUpdatedDataStoreCount + this.heuristicData.opsSinceLastSummary
325
+ ) {
322
326
  logger.sendErrorEvent({
323
327
  eventName: "IncrementalSummaryViolation",
324
328
  summarizedDataStoreCount,
325
329
  gcStateUpdatedDataStoreCount,
326
- opsSinceLastSummary,
330
+ opsSinceLastSummary: this.heuristicData.opsSinceLastSummary,
327
331
  });
328
332
  }
329
333
  }
@@ -334,7 +338,9 @@ export class SummaryGenerator {
334
338
  } catch (error) {
335
339
  return fail("submitSummaryFailure", error);
336
340
  } finally {
337
- this.heuristicData.recordAttempt(summaryData?.referenceSequenceNumber);
341
+ if (summaryData === undefined) {
342
+ this.heuristicData.recordAttempt();
343
+ }
338
344
  this.summarizeTimer.clear();
339
345
  }
340
346
 
@@ -414,12 +420,13 @@ export class SummaryGenerator {
414
420
  // Check for retryDelay in summaryNack response.
415
421
  assert(ackNackOp.type === MessageType.SummaryNack, 0x274 /* "type check" */);
416
422
  const summaryNack = ackNackOp.contents;
417
- const message = summaryNack?.message;
423
+ const errorMessage = summaryNack?.message;
418
424
  const retryAfterSeconds = summaryNack?.retryAfter;
419
425
 
420
426
  // pre-0.58 error message prefix: summaryNack
421
- const error = new LoggingError(`Received summaryNack: ${message}`, {
427
+ const error = new LoggingError(`Received summaryNack`, {
422
428
  retryAfterSeconds,
429
+ errorMessage,
423
430
  });
424
431
 
425
432
  assert(
@@ -12,8 +12,8 @@ import {
12
12
  import { assert } from "@fluidframework/common-utils";
13
13
  import { ChildLogger, PerformanceEvent } from "@fluidframework/telemetry-utils";
14
14
  import { DriverErrorType } from "@fluidframework/driver-definitions";
15
+ import { IThrottler } from "../throttler";
15
16
  import { ISummarizerClientElection } from "./summarizerClientElection";
16
- import { IThrottler } from "./throttler";
17
17
  import { ISummarizer, SummarizerStopReason } from "./summarizerTypes";
18
18
  import { SummaryCollection } from "./summaryCollection";
19
19
  import { Summarizer } from "./summarizer";