@fluidframework/container-runtime 2.0.0-dev.4.1.0.148229 → 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 (152) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/README.md +69 -0
  3. package/dist/blobManager.d.ts +6 -14
  4. package/dist/blobManager.d.ts.map +1 -1
  5. package/dist/blobManager.js +50 -37
  6. package/dist/blobManager.js.map +1 -1
  7. package/dist/containerRuntime.d.ts +14 -1
  8. package/dist/containerRuntime.d.ts.map +1 -1
  9. package/dist/containerRuntime.js +37 -12
  10. package/dist/containerRuntime.js.map +1 -1
  11. package/dist/gc/gcHelpers.d.ts.map +1 -1
  12. package/dist/gc/gcHelpers.js +6 -6
  13. package/dist/gc/gcHelpers.js.map +1 -1
  14. package/dist/opLifecycle/index.d.ts +1 -0
  15. package/dist/opLifecycle/index.d.ts.map +1 -1
  16. package/dist/opLifecycle/index.js +3 -1
  17. package/dist/opLifecycle/index.js.map +1 -1
  18. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
  19. package/dist/opLifecycle/opDecompressor.js +2 -1
  20. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  21. package/dist/opLifecycle/opGroupingManager.d.ts +14 -0
  22. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -0
  23. package/dist/opLifecycle/opGroupingManager.js +56 -0
  24. package/dist/opLifecycle/opGroupingManager.js.map +1 -0
  25. package/dist/opLifecycle/opSplitter.d.ts +1 -1
  26. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  27. package/dist/opLifecycle/opSplitter.js +5 -6
  28. package/dist/opLifecycle/opSplitter.js.map +1 -1
  29. package/dist/opLifecycle/outbox.d.ts +2 -0
  30. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  31. package/dist/opLifecycle/outbox.js +3 -3
  32. package/dist/opLifecycle/outbox.js.map +1 -1
  33. package/dist/opLifecycle/remoteMessageProcessor.d.ts +4 -2
  34. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  35. package/dist/opLifecycle/remoteMessageProcessor.js +30 -20
  36. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  37. package/dist/packageVersion.d.ts +1 -1
  38. package/dist/packageVersion.js +1 -1
  39. package/dist/packageVersion.js.map +1 -1
  40. package/dist/summary/index.d.ts +1 -1
  41. package/dist/summary/index.d.ts.map +1 -1
  42. package/dist/summary/index.js +3 -1
  43. package/dist/summary/index.js.map +1 -1
  44. package/dist/summary/runningSummarizer.d.ts +5 -3
  45. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  46. package/dist/summary/runningSummarizer.js +82 -67
  47. package/dist/summary/runningSummarizer.js.map +1 -1
  48. package/dist/summary/summarizer.d.ts.map +1 -1
  49. package/dist/summary/summarizer.js +1 -5
  50. package/dist/summary/summarizer.js.map +1 -1
  51. package/dist/summary/summarizerHeuristics.d.ts +1 -0
  52. package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
  53. package/dist/summary/summarizerHeuristics.js +3 -0
  54. package/dist/summary/summarizerHeuristics.js.map +1 -1
  55. package/dist/summary/summarizerNode/summarizerNode.js +1 -1
  56. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
  57. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +128 -2
  58. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  59. package/dist/summary/summarizerNode/summarizerNodeWithGc.js +4 -3
  60. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  61. package/dist/summary/summarizerTypes.d.ts +14 -2
  62. package/dist/summary/summarizerTypes.d.ts.map +1 -1
  63. package/dist/summary/summarizerTypes.js.map +1 -1
  64. package/dist/summary/summaryGenerator.d.ts +28 -2
  65. package/dist/summary/summaryGenerator.d.ts.map +1 -1
  66. package/dist/summary/summaryGenerator.js +19 -16
  67. package/dist/summary/summaryGenerator.js.map +1 -1
  68. package/lib/blobManager.d.ts +6 -14
  69. package/lib/blobManager.d.ts.map +1 -1
  70. package/lib/blobManager.js +50 -37
  71. package/lib/blobManager.js.map +1 -1
  72. package/lib/containerRuntime.d.ts +14 -1
  73. package/lib/containerRuntime.d.ts.map +1 -1
  74. package/lib/containerRuntime.js +38 -13
  75. package/lib/containerRuntime.js.map +1 -1
  76. package/lib/gc/gcHelpers.d.ts.map +1 -1
  77. package/lib/gc/gcHelpers.js +6 -6
  78. package/lib/gc/gcHelpers.js.map +1 -1
  79. package/lib/opLifecycle/index.d.ts +1 -0
  80. package/lib/opLifecycle/index.d.ts.map +1 -1
  81. package/lib/opLifecycle/index.js +1 -0
  82. package/lib/opLifecycle/index.js.map +1 -1
  83. package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
  84. package/lib/opLifecycle/opDecompressor.js +2 -1
  85. package/lib/opLifecycle/opDecompressor.js.map +1 -1
  86. package/lib/opLifecycle/opGroupingManager.d.ts +14 -0
  87. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -0
  88. package/lib/opLifecycle/opGroupingManager.js +52 -0
  89. package/lib/opLifecycle/opGroupingManager.js.map +1 -0
  90. package/lib/opLifecycle/opSplitter.d.ts +1 -1
  91. package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
  92. package/lib/opLifecycle/opSplitter.js +5 -6
  93. package/lib/opLifecycle/opSplitter.js.map +1 -1
  94. package/lib/opLifecycle/outbox.d.ts +2 -0
  95. package/lib/opLifecycle/outbox.d.ts.map +1 -1
  96. package/lib/opLifecycle/outbox.js +3 -3
  97. package/lib/opLifecycle/outbox.js.map +1 -1
  98. package/lib/opLifecycle/remoteMessageProcessor.d.ts +4 -2
  99. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  100. package/lib/opLifecycle/remoteMessageProcessor.js +30 -20
  101. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
  102. package/lib/packageVersion.d.ts +1 -1
  103. package/lib/packageVersion.js +1 -1
  104. package/lib/packageVersion.js.map +1 -1
  105. package/lib/summary/index.d.ts +1 -1
  106. package/lib/summary/index.d.ts.map +1 -1
  107. package/lib/summary/index.js +1 -0
  108. package/lib/summary/index.js.map +1 -1
  109. package/lib/summary/runningSummarizer.d.ts +5 -3
  110. package/lib/summary/runningSummarizer.d.ts.map +1 -1
  111. package/lib/summary/runningSummarizer.js +82 -67
  112. package/lib/summary/runningSummarizer.js.map +1 -1
  113. package/lib/summary/summarizer.d.ts.map +1 -1
  114. package/lib/summary/summarizer.js +1 -5
  115. package/lib/summary/summarizer.js.map +1 -1
  116. package/lib/summary/summarizerHeuristics.d.ts +1 -0
  117. package/lib/summary/summarizerHeuristics.d.ts.map +1 -1
  118. package/lib/summary/summarizerHeuristics.js +3 -0
  119. package/lib/summary/summarizerHeuristics.js.map +1 -1
  120. package/lib/summary/summarizerNode/summarizerNode.js +1 -1
  121. package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
  122. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +128 -2
  123. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  124. package/lib/summary/summarizerNode/summarizerNodeWithGc.js +3 -3
  125. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  126. package/lib/summary/summarizerTypes.d.ts +14 -2
  127. package/lib/summary/summarizerTypes.d.ts.map +1 -1
  128. package/lib/summary/summarizerTypes.js.map +1 -1
  129. package/lib/summary/summaryGenerator.d.ts +28 -2
  130. package/lib/summary/summaryGenerator.d.ts.map +1 -1
  131. package/lib/summary/summaryGenerator.js +17 -15
  132. package/lib/summary/summaryGenerator.js.map +1 -1
  133. package/package.json +19 -16
  134. package/src/blobManager.ts +64 -41
  135. package/src/containerRuntime.ts +70 -9
  136. package/src/gc/gcHelpers.ts +9 -6
  137. package/src/opLifecycle/README.md +106 -0
  138. package/src/opLifecycle/index.ts +1 -0
  139. package/src/opLifecycle/opDecompressor.ts +1 -0
  140. package/src/opLifecycle/opGroupingManager.ts +78 -0
  141. package/src/opLifecycle/opSplitter.ts +1 -5
  142. package/src/opLifecycle/outbox.ts +7 -3
  143. package/src/opLifecycle/remoteMessageProcessor.ts +38 -22
  144. package/src/packageVersion.ts +1 -1
  145. package/src/summary/index.ts +1 -1
  146. package/src/summary/runningSummarizer.ts +102 -80
  147. package/src/summary/summarizer.ts +0 -8
  148. package/src/summary/summarizerHeuristics.ts +4 -0
  149. package/src/summary/summarizerNode/summarizerNode.ts +1 -1
  150. package/src/summary/summarizerNode/summarizerNodeWithGc.ts +3 -3
  151. package/src/summary/summarizerTypes.ts +20 -3
  152. package/src/summary/summaryGenerator.ts +22 -16
@@ -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,
@@ -235,16 +238,12 @@ export class SummaryGenerator {
235
238
  { start: true, end: true, cancel: "generic" },
236
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