@fluidframework/container-runtime 2.0.0-internal.5.4.0 → 2.0.0-internal.6.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/CHANGELOG.md +75 -0
  2. package/dist/batchTracker.d.ts +2 -1
  3. package/dist/batchTracker.d.ts.map +1 -1
  4. package/dist/batchTracker.js.map +1 -1
  5. package/dist/blobManager.d.ts +4 -1
  6. package/dist/blobManager.d.ts.map +1 -1
  7. package/dist/blobManager.js +61 -26
  8. package/dist/blobManager.js.map +1 -1
  9. package/dist/connectionTelemetry.js +10 -2
  10. package/dist/connectionTelemetry.js.map +1 -1
  11. package/dist/containerRuntime.d.ts +26 -11
  12. package/dist/containerRuntime.d.ts.map +1 -1
  13. package/dist/containerRuntime.js +189 -131
  14. package/dist/containerRuntime.js.map +1 -1
  15. package/dist/dataStore.js +8 -2
  16. package/dist/dataStore.js.map +1 -1
  17. package/dist/dataStoreContext.d.ts.map +1 -1
  18. package/dist/dataStoreContext.js +24 -26
  19. package/dist/dataStoreContext.js.map +1 -1
  20. package/dist/dataStores.d.ts +20 -4
  21. package/dist/dataStores.d.ts.map +1 -1
  22. package/dist/dataStores.js +107 -53
  23. package/dist/dataStores.js.map +1 -1
  24. package/dist/deltaManagerProxyBase.d.ts +35 -0
  25. package/dist/deltaManagerProxyBase.d.ts.map +1 -0
  26. package/dist/deltaManagerProxyBase.js +77 -0
  27. package/dist/deltaManagerProxyBase.js.map +1 -0
  28. package/dist/deltaManagerSummarizerProxy.d.ts +1 -1
  29. package/dist/deltaManagerSummarizerProxy.d.ts.map +1 -1
  30. package/dist/deltaManagerSummarizerProxy.js +2 -2
  31. package/dist/deltaManagerSummarizerProxy.js.map +1 -1
  32. package/dist/gc/garbageCollection.js +17 -20
  33. package/dist/gc/garbageCollection.js.map +1 -1
  34. package/dist/gc/gcConfigs.js +13 -11
  35. package/dist/gc/gcConfigs.js.map +1 -1
  36. package/dist/gc/gcHelpers.js +4 -6
  37. package/dist/gc/gcHelpers.js.map +1 -1
  38. package/dist/gc/gcSummaryStateTracker.js +4 -6
  39. package/dist/gc/gcSummaryStateTracker.js.map +1 -1
  40. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  41. package/dist/gc/gcTelemetry.js +55 -37
  42. package/dist/gc/gcTelemetry.js.map +1 -1
  43. package/dist/id-compressor/idCompressor.js +49 -51
  44. package/dist/id-compressor/idCompressor.js.map +1 -1
  45. package/dist/id-compressor/idRange.js +2 -2
  46. package/dist/id-compressor/idRange.js.map +1 -1
  47. package/dist/id-compressor/sessionIdNormalizer.js +11 -16
  48. package/dist/id-compressor/sessionIdNormalizer.js.map +1 -1
  49. package/dist/index.d.ts +1 -1
  50. package/dist/index.d.ts.map +1 -1
  51. package/dist/index.js.map +1 -1
  52. package/dist/opLifecycle/batchManager.js +10 -6
  53. package/dist/opLifecycle/batchManager.js.map +1 -1
  54. package/dist/opLifecycle/opCompressor.js +6 -1
  55. package/dist/opLifecycle/opCompressor.js.map +1 -1
  56. package/dist/opLifecycle/opDecompressor.js +11 -9
  57. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  58. package/dist/opLifecycle/opGroupingManager.js +13 -5
  59. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  60. package/dist/opLifecycle/opSplitter.js +10 -6
  61. package/dist/opLifecycle/opSplitter.js.map +1 -1
  62. package/dist/opLifecycle/outbox.js +1 -2
  63. package/dist/opLifecycle/outbox.js.map +1 -1
  64. package/dist/opLifecycle/remoteMessageProcessor.js +1 -1
  65. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  66. package/dist/opProperties.js +1 -2
  67. package/dist/opProperties.js.map +1 -1
  68. package/dist/packageVersion.d.ts +1 -1
  69. package/dist/packageVersion.js +1 -1
  70. package/dist/packageVersion.js.map +1 -1
  71. package/dist/pendingStateManager.d.ts +2 -2
  72. package/dist/pendingStateManager.d.ts.map +1 -1
  73. package/dist/pendingStateManager.js +22 -22
  74. package/dist/pendingStateManager.js.map +1 -1
  75. package/dist/scheduleManager.js +14 -10
  76. package/dist/scheduleManager.js.map +1 -1
  77. package/dist/summary/orderedClientElection.d.ts +2 -1
  78. package/dist/summary/orderedClientElection.d.ts.map +1 -1
  79. package/dist/summary/orderedClientElection.js +17 -18
  80. package/dist/summary/orderedClientElection.js.map +1 -1
  81. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  82. package/dist/summary/runningSummarizer.js +35 -57
  83. package/dist/summary/runningSummarizer.js.map +1 -1
  84. package/dist/summary/summarizer.js +4 -7
  85. package/dist/summary/summarizer.js.map +1 -1
  86. package/dist/summary/summarizerClientElection.js +5 -9
  87. package/dist/summary/summarizerClientElection.js.map +1 -1
  88. package/dist/summary/summarizerHeuristics.js +8 -12
  89. package/dist/summary/summarizerHeuristics.js.map +1 -1
  90. package/dist/summary/summarizerNode/summarizerNode.js +22 -15
  91. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
  92. package/dist/summary/summarizerNode/summarizerNodeUtils.js +2 -4
  93. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  94. package/dist/summary/summarizerNode/summarizerNodeWithGc.js +17 -16
  95. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  96. package/dist/summary/summaryCollection.js +3 -5
  97. package/dist/summary/summaryCollection.js.map +1 -1
  98. package/dist/summary/summaryFormat.js +1 -2
  99. package/dist/summary/summaryFormat.js.map +1 -1
  100. package/dist/summary/summaryGenerator.d.ts.map +1 -1
  101. package/dist/summary/summaryGenerator.js +62 -21
  102. package/dist/summary/summaryGenerator.js.map +1 -1
  103. package/dist/summary/summaryManager.js +3 -5
  104. package/dist/summary/summaryManager.js.map +1 -1
  105. package/lib/batchTracker.d.ts +2 -1
  106. package/lib/batchTracker.d.ts.map +1 -1
  107. package/lib/batchTracker.js.map +1 -1
  108. package/lib/blobManager.d.ts +4 -1
  109. package/lib/blobManager.d.ts.map +1 -1
  110. package/lib/blobManager.js +61 -26
  111. package/lib/blobManager.js.map +1 -1
  112. package/lib/connectionTelemetry.js +10 -2
  113. package/lib/connectionTelemetry.js.map +1 -1
  114. package/lib/containerRuntime.d.ts +26 -11
  115. package/lib/containerRuntime.d.ts.map +1 -1
  116. package/lib/containerRuntime.js +189 -131
  117. package/lib/containerRuntime.js.map +1 -1
  118. package/lib/dataStore.js +8 -2
  119. package/lib/dataStore.js.map +1 -1
  120. package/lib/dataStoreContext.d.ts.map +1 -1
  121. package/lib/dataStoreContext.js +24 -26
  122. package/lib/dataStoreContext.js.map +1 -1
  123. package/lib/dataStores.d.ts +20 -4
  124. package/lib/dataStores.d.ts.map +1 -1
  125. package/lib/dataStores.js +107 -53
  126. package/lib/dataStores.js.map +1 -1
  127. package/lib/deltaManagerProxyBase.d.ts +35 -0
  128. package/lib/deltaManagerProxyBase.d.ts.map +1 -0
  129. package/lib/deltaManagerProxyBase.js +73 -0
  130. package/lib/deltaManagerProxyBase.js.map +1 -0
  131. package/lib/deltaManagerSummarizerProxy.d.ts +1 -1
  132. package/lib/deltaManagerSummarizerProxy.d.ts.map +1 -1
  133. package/lib/deltaManagerSummarizerProxy.js +1 -1
  134. package/lib/deltaManagerSummarizerProxy.js.map +1 -1
  135. package/lib/gc/garbageCollection.js +17 -20
  136. package/lib/gc/garbageCollection.js.map +1 -1
  137. package/lib/gc/gcConfigs.js +13 -11
  138. package/lib/gc/gcConfigs.js.map +1 -1
  139. package/lib/gc/gcHelpers.js +4 -6
  140. package/lib/gc/gcHelpers.js.map +1 -1
  141. package/lib/gc/gcSummaryStateTracker.js +4 -6
  142. package/lib/gc/gcSummaryStateTracker.js.map +1 -1
  143. package/lib/gc/gcTelemetry.d.ts.map +1 -1
  144. package/lib/gc/gcTelemetry.js +55 -37
  145. package/lib/gc/gcTelemetry.js.map +1 -1
  146. package/lib/id-compressor/idCompressor.js +49 -51
  147. package/lib/id-compressor/idCompressor.js.map +1 -1
  148. package/lib/id-compressor/idRange.js +2 -2
  149. package/lib/id-compressor/idRange.js.map +1 -1
  150. package/lib/id-compressor/sessionIdNormalizer.js +11 -16
  151. package/lib/id-compressor/sessionIdNormalizer.js.map +1 -1
  152. package/lib/index.d.ts +1 -1
  153. package/lib/index.d.ts.map +1 -1
  154. package/lib/index.js.map +1 -1
  155. package/lib/opLifecycle/batchManager.js +10 -6
  156. package/lib/opLifecycle/batchManager.js.map +1 -1
  157. package/lib/opLifecycle/opCompressor.js +6 -1
  158. package/lib/opLifecycle/opCompressor.js.map +1 -1
  159. package/lib/opLifecycle/opDecompressor.js +11 -9
  160. package/lib/opLifecycle/opDecompressor.js.map +1 -1
  161. package/lib/opLifecycle/opGroupingManager.js +13 -5
  162. package/lib/opLifecycle/opGroupingManager.js.map +1 -1
  163. package/lib/opLifecycle/opSplitter.js +10 -6
  164. package/lib/opLifecycle/opSplitter.js.map +1 -1
  165. package/lib/opLifecycle/outbox.js +1 -2
  166. package/lib/opLifecycle/outbox.js.map +1 -1
  167. package/lib/opLifecycle/remoteMessageProcessor.js +1 -1
  168. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
  169. package/lib/opProperties.js +1 -2
  170. package/lib/opProperties.js.map +1 -1
  171. package/lib/packageVersion.d.ts +1 -1
  172. package/lib/packageVersion.js +1 -1
  173. package/lib/packageVersion.js.map +1 -1
  174. package/lib/pendingStateManager.d.ts +2 -2
  175. package/lib/pendingStateManager.d.ts.map +1 -1
  176. package/lib/pendingStateManager.js +22 -22
  177. package/lib/pendingStateManager.js.map +1 -1
  178. package/lib/scheduleManager.js +14 -10
  179. package/lib/scheduleManager.js.map +1 -1
  180. package/lib/summary/orderedClientElection.d.ts +2 -1
  181. package/lib/summary/orderedClientElection.d.ts.map +1 -1
  182. package/lib/summary/orderedClientElection.js +17 -18
  183. package/lib/summary/orderedClientElection.js.map +1 -1
  184. package/lib/summary/runningSummarizer.d.ts.map +1 -1
  185. package/lib/summary/runningSummarizer.js +35 -57
  186. package/lib/summary/runningSummarizer.js.map +1 -1
  187. package/lib/summary/summarizer.js +4 -7
  188. package/lib/summary/summarizer.js.map +1 -1
  189. package/lib/summary/summarizerClientElection.js +5 -9
  190. package/lib/summary/summarizerClientElection.js.map +1 -1
  191. package/lib/summary/summarizerHeuristics.js +8 -12
  192. package/lib/summary/summarizerHeuristics.js.map +1 -1
  193. package/lib/summary/summarizerNode/summarizerNode.js +22 -15
  194. package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
  195. package/lib/summary/summarizerNode/summarizerNodeUtils.js +2 -4
  196. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  197. package/lib/summary/summarizerNode/summarizerNodeWithGc.js +17 -16
  198. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  199. package/lib/summary/summaryCollection.js +3 -5
  200. package/lib/summary/summaryCollection.js.map +1 -1
  201. package/lib/summary/summaryFormat.js +1 -2
  202. package/lib/summary/summaryFormat.js.map +1 -1
  203. package/lib/summary/summaryGenerator.d.ts.map +1 -1
  204. package/lib/summary/summaryGenerator.js +62 -21
  205. package/lib/summary/summaryGenerator.js.map +1 -1
  206. package/lib/summary/summaryManager.js +3 -5
  207. package/lib/summary/summaryManager.js.map +1 -1
  208. package/package.json +19 -19
  209. package/src/batchTracker.ts +2 -1
  210. package/src/blobManager.ts +43 -2
  211. package/src/containerRuntime.ts +95 -67
  212. package/src/dataStore.ts +7 -1
  213. package/src/dataStoreContext.ts +1 -2
  214. package/src/dataStores.ts +95 -55
  215. package/src/deltaManagerProxyBase.ts +111 -0
  216. package/src/deltaManagerSummarizerProxy.ts +2 -1
  217. package/src/gc/gcTelemetry.ts +1 -2
  218. package/src/index.ts +0 -1
  219. package/src/packageVersion.ts +1 -1
  220. package/src/pendingStateManager.ts +12 -15
  221. package/src/summary/orderedClientElection.ts +2 -1
  222. package/src/summary/runningSummarizer.ts +9 -31
  223. package/src/summary/summaryGenerator.ts +0 -1
package/src/index.ts CHANGED
@@ -12,7 +12,6 @@ export {
12
12
  ISummaryConfigurationDisableSummarizer,
13
13
  ISummaryConfigurationDisableHeuristics,
14
14
  IContainerRuntimeOptions,
15
- IRootSummaryTreeWithStats,
16
15
  isRuntimeMessage,
17
16
  RuntimeMessage,
18
17
  agentSchedulerId,
@@ -6,4 +6,4 @@
6
6
  */
7
7
 
8
8
  export const pkgName = "@fluidframework/container-runtime";
9
- export const pkgVersion = "2.0.0-internal.5.4.0";
9
+ export const pkgVersion = "2.0.0-internal.6.1.0";
@@ -16,7 +16,7 @@ import { pkgVersion } from "./packageVersion";
16
16
  import { IBatchMetadata } from "./metadata";
17
17
 
18
18
  /**
19
- * ! TODO: Remove this interface in "2.0.0-internal.7.0.0" once we only read IPendingMessageNew
19
+ * ! TODO: Remove this interface in "2.0.0-internal.7.0.0" once we only read IPendingMessageNew (AB#4763)
20
20
  */
21
21
  export interface IPendingMessageOld {
22
22
  type: "message";
@@ -42,7 +42,7 @@ export interface IPendingMessageNew {
42
42
  }
43
43
 
44
44
  /**
45
- * ! TODO: Remove this type in "2.0.0-internal.7.0.0"
45
+ * ! TODO: Remove this type in "2.0.0-internal.7.0.0" (AB#4763)
46
46
  */
47
47
  export type IPendingState = IPendingMessageOld | IPendingMessageNew;
48
48
 
@@ -115,21 +115,18 @@ export class PendingStateManager implements IDisposable {
115
115
  if (!this.pendingMessages.isEmpty()) {
116
116
  return {
117
117
  pendingStates: this.pendingMessages.toArray().map((message) => {
118
- // ! TODO: Remove conversion to IPendingMessageOld in "2.0.0-internal.6.0.0" AB#3826
119
- const content = JSON.parse(message.content);
118
+ let content = message.content;
119
+ const parsedContent = JSON.parse(content);
120
120
  // IdAllocations need their localOpMetadata stashed in the contents
121
121
  // of the op to correctly resume the session when processing stashed ops
122
- if (content.type === ContainerMessageType.IdAllocation) {
123
- content.contents.stashedState = message.localOpMetadata;
122
+ if (parsedContent.type === ContainerMessageType.IdAllocation) {
123
+ parsedContent.contents.stashedState = message.localOpMetadata;
124
+ content = JSON.stringify(parsedContent);
124
125
  }
125
- return {
126
- ...message,
127
- messageType: content.type,
128
- content: content.contents,
129
- // delete localOpMetadata since it may not be serializable
130
- // and will be regenerated by applyStashedOp()
131
- localOpMetadata: undefined,
132
- };
126
+
127
+ // delete localOpMetadata since it may not be serializable
128
+ // and will be regenerated by applyStashedOp()
129
+ return { ...message, content, localOpMetadata: undefined };
133
130
  }),
134
131
  };
135
132
  }
@@ -142,7 +139,7 @@ export class PendingStateManager implements IDisposable {
142
139
  ) {
143
140
  /**
144
141
  * Convert old local state format to the new format (IPendingMessageOld to IPendingMessageNew)
145
- * ! TODO: Remove this conversion in "2.0.0-internal.7.0.0"
142
+ * ! TODO: Remove this conversion in "2.0.0-internal.7.0.0" (AB#4763)
146
143
  */
147
144
  if (initialLocalState?.pendingStates) {
148
145
  for (const initialState of initialLocalState.pendingStates) {
@@ -9,6 +9,7 @@ import { assert, TypedEventEmitter } from "@fluidframework/common-utils";
9
9
  import { IDeltaManager } from "@fluidframework/container-definitions";
10
10
  import { UsageError } from "@fluidframework/container-utils";
11
11
  import { IClient, IQuorumClients, ISequencedClient } from "@fluidframework/protocol-definitions";
12
+ import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
12
13
  import { summarizerClientType } from "./summarizerClientElection";
13
14
 
14
15
  // helper types for recursive readonly.
@@ -101,7 +102,7 @@ export class OrderedClientCollection
101
102
  }
102
103
 
103
104
  constructor(
104
- logger: ITelemetryLoggerExt,
105
+ logger: ITelemetryBaseLogger,
105
106
  deltaManager: Pick<IDeltaManager<unknown, unknown>, "lastSequenceNumber">,
106
107
  quorum: Pick<IQuorumClients, "getMembers" | "on">,
107
108
  ) {
@@ -44,8 +44,6 @@ import {
44
44
 
45
45
  const maxSummarizeAckWaitTime = 10 * 60 * 1000; // 10 minutes
46
46
 
47
- const defaultNumberSummarizationAttempts = 2; // only up to 2 attempts
48
-
49
47
  /**
50
48
  * An instance of RunningSummarizer manages the heuristics for summarizing.
51
49
  * Until disposed, the instance of RunningSummarizer can assume that it is
@@ -573,31 +571,15 @@ export class RunningSummarizer implements IDisposable {
573
571
  this.beforeSummaryAction();
574
572
  },
575
573
  async () => {
576
- const attempts: (ISummarizeOptions & { delaySeconds?: number })[] = [
574
+ const attempts: ISummarizeOptions[] = [
577
575
  { refreshLatestAck: false, fullTree: false },
578
576
  { refreshLatestAck: true, fullTree: false },
579
- { refreshLatestAck: true, fullTree: false, delaySeconds: 2 * 60 },
580
- { refreshLatestAck: true, fullTree: true, delaySeconds: 10 * 60 },
581
577
  ];
582
578
  let overrideDelaySeconds: number | undefined;
583
579
  let summaryAttempts = 0;
584
580
  let summaryAttemptsPerPhase = 0;
585
- // Reducing the default number of attempts to defaultNumberofSummarizationAttempts.
586
- let totalAttempts =
587
- this.mc.config.getNumber("Fluid.Summarizer.Attempts") ??
588
- defaultNumberSummarizationAttempts;
589
-
590
- if (totalAttempts > attempts.length) {
591
- this.mc.logger.sendTelemetryEvent({
592
- eventName: "InvalidSummarizerAttempts",
593
- attempts: totalAttempts,
594
- });
595
- totalAttempts = defaultNumberSummarizationAttempts;
596
- } else if (totalAttempts < 1) {
597
- throw new UsageError("Invalid number of attempts.");
598
- }
599
-
600
- for (let summaryAttemptPhase = 0; summaryAttemptPhase < totalAttempts; ) {
581
+ let summaryAttemptPhase = 0;
582
+ while (summaryAttemptPhase < attempts.length) {
601
583
  if (this.cancellationToken.cancelled) {
602
584
  return;
603
585
  }
@@ -609,22 +591,20 @@ export class RunningSummarizer implements IDisposable {
609
591
 
610
592
  summaryAttemptsPerPhase++;
611
593
 
612
- const { delaySeconds: regularDelaySeconds = 0, ...options } =
613
- attempts[summaryAttemptPhase];
614
-
594
+ const summarizeOptions = attempts[summaryAttemptPhase];
615
595
  const summarizeProps: ISummarizeTelemetryProperties = {
616
596
  reason,
617
597
  summaryAttempts,
618
598
  summaryAttemptsPerPhase,
619
599
  summaryAttemptPhase: summaryAttemptPhase + 1, // make everything 1-based
620
- ...options,
600
+ ...summarizeOptions,
621
601
  };
622
602
 
623
603
  // Note: no need to account for cancellationToken.waitCancelled here, as
624
604
  // this is accounted SummaryGenerator.summarizeCore that controls receivedSummaryAckOrNack.
625
605
  const resultSummarize = this.generator.summarize(
626
606
  summarizeProps,
627
- options,
607
+ summarizeOptions,
628
608
  cancellationToken,
629
609
  );
630
610
  const result = await resultSummarize.receivedSummaryAckOrNack;
@@ -635,15 +615,13 @@ export class RunningSummarizer implements IDisposable {
635
615
 
636
616
  // Check for retryDelay that can come from summaryNack or upload summary flow.
637
617
  // Retry the same step only once per retryAfter response.
638
- overrideDelaySeconds = result.retryAfterSeconds;
639
- if (overrideDelaySeconds === undefined || summaryAttemptsPerPhase > 1) {
618
+ const delaySeconds = result.retryAfterSeconds;
619
+ if (delaySeconds === undefined || summaryAttemptsPerPhase > 1) {
640
620
  summaryAttemptPhase++;
641
621
  summaryAttemptsPerPhase = 0;
642
622
  }
643
623
 
644
- const delaySeconds = overrideDelaySeconds ?? regularDelaySeconds;
645
-
646
- if (delaySeconds > 0) {
624
+ if (delaySeconds !== undefined) {
647
625
  this.mc.logger.sendPerformanceEvent({
648
626
  eventName: "SummarizeAttemptDelay",
649
627
  duration: delaySeconds,
@@ -242,7 +242,6 @@ export class SummaryGenerator {
242
242
  const { refreshLatestAck, fullTree } = options;
243
243
  const logger = createChildLogger({
244
244
  logger: this.logger,
245
- namespace: undefined,
246
245
  properties: { all: summarizeProps },
247
246
  });
248
247