@fluidframework/container-runtime 2.1.0-276985 → 2.1.0-281041

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 (196) hide show
  1. package/README.md +71 -18
  2. package/api-extractor/api-extractor.current.json +5 -0
  3. package/api-extractor/api-extractor.legacy.json +1 -1
  4. package/api-extractor.json +1 -1
  5. package/api-report/container-runtime.legacy.public.api.md +9 -0
  6. package/container-runtime.test-files.tar +0 -0
  7. package/dist/blobManager/blobManager.d.ts +10 -0
  8. package/dist/blobManager/blobManager.d.ts.map +1 -1
  9. package/dist/blobManager/blobManager.js +19 -0
  10. package/dist/blobManager/blobManager.js.map +1 -1
  11. package/dist/channelCollection.d.ts +1 -1
  12. package/dist/channelCollection.d.ts.map +1 -1
  13. package/dist/channelCollection.js +40 -8
  14. package/dist/channelCollection.js.map +1 -1
  15. package/dist/containerRuntime.d.ts +14 -5
  16. package/dist/containerRuntime.d.ts.map +1 -1
  17. package/dist/containerRuntime.js +142 -98
  18. package/dist/containerRuntime.js.map +1 -1
  19. package/dist/dataStoreContext.d.ts +4 -0
  20. package/dist/dataStoreContext.d.ts.map +1 -1
  21. package/dist/dataStoreContext.js +9 -3
  22. package/dist/dataStoreContext.js.map +1 -1
  23. package/dist/gc/garbageCollection.d.ts +1 -1
  24. package/dist/gc/garbageCollection.d.ts.map +1 -1
  25. package/dist/gc/garbageCollection.js +14 -8
  26. package/dist/gc/garbageCollection.js.map +1 -1
  27. package/dist/gc/gcDefinitions.d.ts +4 -2
  28. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  29. package/dist/gc/gcDefinitions.js.map +1 -1
  30. package/dist/gc/gcHelpers.d.ts.map +1 -1
  31. package/dist/gc/gcHelpers.js +12 -0
  32. package/dist/gc/gcHelpers.js.map +1 -1
  33. package/dist/gc/gcTelemetry.d.ts +3 -2
  34. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  35. package/dist/gc/gcTelemetry.js +6 -6
  36. package/dist/gc/gcTelemetry.js.map +1 -1
  37. package/dist/legacy.d.ts +1 -1
  38. package/dist/metadata.d.ts +7 -1
  39. package/dist/metadata.d.ts.map +1 -1
  40. package/dist/metadata.js +6 -0
  41. package/dist/metadata.js.map +1 -1
  42. package/dist/opLifecycle/batchManager.d.ts +8 -1
  43. package/dist/opLifecycle/batchManager.d.ts.map +1 -1
  44. package/dist/opLifecycle/batchManager.js +37 -16
  45. package/dist/opLifecycle/batchManager.js.map +1 -1
  46. package/dist/opLifecycle/definitions.d.ts +1 -1
  47. package/dist/opLifecycle/definitions.d.ts.map +1 -1
  48. package/dist/opLifecycle/definitions.js.map +1 -1
  49. package/dist/opLifecycle/index.d.ts +1 -1
  50. package/dist/opLifecycle/index.d.ts.map +1 -1
  51. package/dist/opLifecycle/index.js +2 -1
  52. package/dist/opLifecycle/index.js.map +1 -1
  53. package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
  54. package/dist/opLifecycle/opCompressor.js +12 -8
  55. package/dist/opLifecycle/opCompressor.js.map +1 -1
  56. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
  57. package/dist/opLifecycle/opGroupingManager.js +14 -11
  58. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  59. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  60. package/dist/opLifecycle/opSplitter.js +11 -6
  61. package/dist/opLifecycle/opSplitter.js.map +1 -1
  62. package/dist/opLifecycle/outbox.d.ts +22 -6
  63. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  64. package/dist/opLifecycle/outbox.js +43 -21
  65. package/dist/opLifecycle/outbox.js.map +1 -1
  66. package/dist/opLifecycle/remoteMessageProcessor.d.ts +6 -6
  67. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  68. package/dist/opLifecycle/remoteMessageProcessor.js +18 -6
  69. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  70. package/dist/packageVersion.d.ts +1 -1
  71. package/dist/packageVersion.js +1 -1
  72. package/dist/packageVersion.js.map +1 -1
  73. package/dist/pendingStateManager.d.ts +37 -13
  74. package/dist/pendingStateManager.d.ts.map +1 -1
  75. package/dist/pendingStateManager.js +95 -45
  76. package/dist/pendingStateManager.js.map +1 -1
  77. package/dist/public.d.ts +1 -1
  78. package/dist/scheduleManager.js +4 -0
  79. package/dist/scheduleManager.js.map +1 -1
  80. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  81. package/dist/summary/summarizerNode/summarizerNodeUtils.js +2 -0
  82. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  83. package/dist/summary/summaryFormat.d.ts.map +1 -1
  84. package/dist/summary/summaryFormat.js +4 -1
  85. package/dist/summary/summaryFormat.js.map +1 -1
  86. package/internal.d.ts +1 -1
  87. package/legacy.d.ts +1 -1
  88. package/lib/blobManager/blobManager.d.ts +10 -0
  89. package/lib/blobManager/blobManager.d.ts.map +1 -1
  90. package/lib/blobManager/blobManager.js +19 -0
  91. package/lib/blobManager/blobManager.js.map +1 -1
  92. package/lib/channelCollection.d.ts +1 -1
  93. package/lib/channelCollection.d.ts.map +1 -1
  94. package/lib/channelCollection.js +40 -8
  95. package/lib/channelCollection.js.map +1 -1
  96. package/lib/containerRuntime.d.ts +14 -5
  97. package/lib/containerRuntime.d.ts.map +1 -1
  98. package/lib/containerRuntime.js +142 -98
  99. package/lib/containerRuntime.js.map +1 -1
  100. package/lib/dataStoreContext.d.ts +4 -0
  101. package/lib/dataStoreContext.d.ts.map +1 -1
  102. package/lib/dataStoreContext.js +10 -4
  103. package/lib/dataStoreContext.js.map +1 -1
  104. package/lib/gc/garbageCollection.d.ts +1 -1
  105. package/lib/gc/garbageCollection.d.ts.map +1 -1
  106. package/lib/gc/garbageCollection.js +14 -8
  107. package/lib/gc/garbageCollection.js.map +1 -1
  108. package/lib/gc/gcDefinitions.d.ts +4 -2
  109. package/lib/gc/gcDefinitions.d.ts.map +1 -1
  110. package/lib/gc/gcDefinitions.js.map +1 -1
  111. package/lib/gc/gcHelpers.d.ts.map +1 -1
  112. package/lib/gc/gcHelpers.js +12 -0
  113. package/lib/gc/gcHelpers.js.map +1 -1
  114. package/lib/gc/gcTelemetry.d.ts +3 -2
  115. package/lib/gc/gcTelemetry.d.ts.map +1 -1
  116. package/lib/gc/gcTelemetry.js +6 -6
  117. package/lib/gc/gcTelemetry.js.map +1 -1
  118. package/lib/legacy.d.ts +1 -1
  119. package/lib/metadata.d.ts +7 -1
  120. package/lib/metadata.d.ts.map +1 -1
  121. package/lib/metadata.js +4 -1
  122. package/lib/metadata.js.map +1 -1
  123. package/lib/opLifecycle/batchManager.d.ts +8 -1
  124. package/lib/opLifecycle/batchManager.d.ts.map +1 -1
  125. package/lib/opLifecycle/batchManager.js +35 -15
  126. package/lib/opLifecycle/batchManager.js.map +1 -1
  127. package/lib/opLifecycle/definitions.d.ts +1 -1
  128. package/lib/opLifecycle/definitions.d.ts.map +1 -1
  129. package/lib/opLifecycle/definitions.js.map +1 -1
  130. package/lib/opLifecycle/index.d.ts +1 -1
  131. package/lib/opLifecycle/index.d.ts.map +1 -1
  132. package/lib/opLifecycle/index.js +1 -1
  133. package/lib/opLifecycle/index.js.map +1 -1
  134. package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
  135. package/lib/opLifecycle/opCompressor.js +12 -8
  136. package/lib/opLifecycle/opCompressor.js.map +1 -1
  137. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
  138. package/lib/opLifecycle/opGroupingManager.js +14 -11
  139. package/lib/opLifecycle/opGroupingManager.js.map +1 -1
  140. package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
  141. package/lib/opLifecycle/opSplitter.js +11 -6
  142. package/lib/opLifecycle/opSplitter.js.map +1 -1
  143. package/lib/opLifecycle/outbox.d.ts +22 -6
  144. package/lib/opLifecycle/outbox.d.ts.map +1 -1
  145. package/lib/opLifecycle/outbox.js +44 -22
  146. package/lib/opLifecycle/outbox.js.map +1 -1
  147. package/lib/opLifecycle/remoteMessageProcessor.d.ts +6 -6
  148. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  149. package/lib/opLifecycle/remoteMessageProcessor.js +18 -6
  150. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
  151. package/lib/packageVersion.d.ts +1 -1
  152. package/lib/packageVersion.js +1 -1
  153. package/lib/packageVersion.js.map +1 -1
  154. package/lib/pendingStateManager.d.ts +37 -13
  155. package/lib/pendingStateManager.d.ts.map +1 -1
  156. package/lib/pendingStateManager.js +95 -45
  157. package/lib/pendingStateManager.js.map +1 -1
  158. package/lib/public.d.ts +1 -1
  159. package/lib/scheduleManager.js +4 -0
  160. package/lib/scheduleManager.js.map +1 -1
  161. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  162. package/lib/summary/summarizerNode/summarizerNodeUtils.js +2 -0
  163. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  164. package/lib/summary/summaryFormat.d.ts.map +1 -1
  165. package/lib/summary/summaryFormat.js +4 -1
  166. package/lib/summary/summaryFormat.js.map +1 -1
  167. package/package.json +45 -30
  168. package/src/blobManager/blobManager.ts +19 -0
  169. package/src/channelCollection.ts +48 -11
  170. package/src/containerRuntime.ts +190 -132
  171. package/src/dataStoreContext.ts +22 -4
  172. package/src/gc/garbageCollection.ts +15 -10
  173. package/src/gc/gcDefinitions.ts +7 -2
  174. package/src/gc/gcHelpers.ts +18 -6
  175. package/src/gc/gcTelemetry.ts +20 -8
  176. package/src/metadata.ts +11 -1
  177. package/src/opLifecycle/README.md +0 -8
  178. package/src/opLifecycle/batchManager.ts +46 -16
  179. package/src/opLifecycle/definitions.ts +1 -1
  180. package/src/opLifecycle/index.ts +8 -1
  181. package/src/opLifecycle/opCompressor.ts +12 -8
  182. package/src/opLifecycle/opGroupingManager.ts +14 -11
  183. package/src/opLifecycle/opSplitter.ts +10 -6
  184. package/src/opLifecycle/outbox.ts +64 -26
  185. package/src/opLifecycle/remoteMessageProcessor.ts +24 -8
  186. package/src/packageVersion.ts +1 -1
  187. package/src/pendingStateManager.ts +173 -74
  188. package/src/scheduleManager.ts +6 -2
  189. package/src/summary/README.md +81 -0
  190. package/src/summary/summarizerNode/summarizerNodeUtils.ts +3 -1
  191. package/src/summary/summaryFormat.ts +3 -1
  192. package/src/summary/summaryFormats.md +69 -8
  193. package/tsconfig.json +0 -1
  194. package/src/summary/images/appTree.png +0 -0
  195. package/src/summary/images/protocolAndAppTree.png +0 -0
  196. package/src/summary/images/summaryTree.png +0 -0
@@ -534,6 +534,11 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
534
534
  * The id of the version used to initially load this runtime, or undefined if it's newly created.
535
535
  */
536
536
  private readonly loadedFromVersionId;
537
+ private readonly isSnapshotInstanceOfISnapshot;
538
+ /**
539
+ * The summary context of the last acked summary. The properties from this as used when uploading a summary.
540
+ */
541
+ private lastAckedSummaryContext;
537
542
  /**
538
543
  * It a cache for holding mapping for loading groupIds with its snapshot from the service. Add expiry policy of 1 minute.
539
544
  * Starting with 1 min and based on recorded usage we can tweak it later on.
@@ -624,6 +629,8 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
624
629
  /**
625
630
  * Flush the pending ops manually.
626
631
  * This method is expected to be called at the end of a batch.
632
+ * @param resubmittingBatchId - If defined, indicates this is a resubmission of a batch
633
+ * with the given Batch ID, which must be preserved
627
634
  */
628
635
  private flush;
629
636
  /**
@@ -645,7 +652,7 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
645
652
  _createDataStoreWithProps(pkg: Readonly<string | string[]>, props?: any): Promise<IDataStore>;
646
653
  private canSendOps;
647
654
  /**
648
- * Are we in the middle of batching ops together?
655
+ * Typically ops are batched and later flushed together, but in some cases we want to flush immediately.
649
656
  */
650
657
  private currentlyBatching;
651
658
  private readonly _quorum;
@@ -812,11 +819,13 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
812
819
  /** Implementation of ISummarizerInternalsProvider.refreshLatestSummaryAck */
813
820
  refreshLatestSummaryAck(options: IRefreshSummaryAckOptions): Promise<void>;
814
821
  /**
815
- * Fetches the latest snapshot from storage and closes the container. This is done in cases where
816
- * the last known snapshot is older than the latest one. This will ensure that the latest snapshot
817
- * is downloaded and we don't end up loading snapshot from cache.
822
+ * Fetches the latest snapshot from storage. If the fetched snapshot is same or newer than the one for which ack
823
+ * was received, close this client. Fetching the snapshot will update the cache for this client so if it's
824
+ * re-elected as summarizer, this will prevent any thrashing.
825
+ * If the fetched snapshot is older than the one for which ack was received, ignore the ack and return. This can
826
+ * happen in scenarios where the snapshot for the ack was lost in storage in scenarios like DB rollback, etc.
818
827
  */
819
- private fetchLatestSnapshotAndClose;
828
+ private fetchLatestSnapshotAndMaybeClose;
820
829
  getPendingLocalState(props?: IGetPendingLocalStateProps): unknown;
821
830
  summarizeOnDemand(options: IOnDemandSummarizeOptions): ISummarizeResults;
822
831
  enqueueSummarize(options: IEnqueueSummarizeOptions): EnqueueSummarizeResult;
@@ -1 +1 @@
1
- {"version":3,"file":"containerRuntime.d.ts","sourceRoot":"","sources":["../src/containerRuntime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"containerRuntime.d.ts","sourceRoot":"","sources":["../src/containerRuntime.ts"],"names":[],"mappings":"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"}
@@ -164,7 +164,7 @@ exports.getDeviceSpec = getDeviceSpec;
164
164
  const makeLegacySendBatchFn = (submitFn, deltaManager) => (batch) => {
165
165
  // Default to negative one to match Container.submitBatch behavior
166
166
  let clientSequenceNumber = -1;
167
- for (const message of batch.content) {
167
+ for (const message of batch.messages) {
168
168
  clientSequenceNumber = submitFn(internal_3.MessageType.Operation,
169
169
  // For back-compat (submitFn only works on deserialized content)
170
170
  message.contents === undefined ? undefined : JSON.parse(message.contents), true, // batch
@@ -379,9 +379,7 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
379
379
  return createIdCompressor(compressorLogger);
380
380
  }
381
381
  };
382
- const disableCompression = mc.config.getBoolean("Fluid.ContainerRuntime.CompressionDisabled");
383
- const compressionLz4 = disableCompression !== true &&
384
- compressionOptions.minimumBatchSizeInBytes !== Infinity &&
382
+ const compressionLz4 = compressionOptions.minimumBatchSizeInBytes !== Infinity &&
385
383
  compressionOptions.compressionAlgorithm === "lz4";
386
384
  const documentSchemaController = new index_js_4.DocumentsSchemaController(existing, protocolSequenceNumber, metadata?.documentSchema, {
387
385
  explicitSchemaControl,
@@ -392,9 +390,7 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
392
390
  }, (schema) => {
393
391
  runtime.onSchemaChange(schema);
394
392
  });
395
- const featureGatesForTelemetry = {
396
- disableCompression,
397
- };
393
+ const featureGatesForTelemetry = {};
398
394
  const runtime = new containerRuntimeCtor(context, registry, metadata, electedSummarizerData, chunks ?? [], aliases ?? [], {
399
395
  summaryOptions,
400
396
  gcOptions,
@@ -664,14 +660,13 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
664
660
  });
665
661
  this.telemetryDocumentId = metadata?.telemetryDocumentId ?? (0, uuid_1.v4)();
666
662
  this.disableAttachReorder = this.mc.config.getBoolean("Fluid.ContainerRuntime.disableAttachOpReorder");
667
- const disableChunking = this.mc.config.getBoolean("Fluid.ContainerRuntime.CompressionChunkingDisabled");
668
663
  const opGroupingManager = new index_js_3.OpGroupingManager({
669
664
  groupedBatchingEnabled: this.groupedBatchingEnabled,
670
665
  opCountThreshold: this.mc.config.getNumber("Fluid.ContainerRuntime.GroupedBatchingOpCount") ?? 2,
671
666
  reentrantBatchGroupingEnabled: this.mc.config.getBoolean("Fluid.ContainerRuntime.GroupedBatchingReentrancy") ??
672
667
  true,
673
668
  }, this.mc.logger);
674
- const opSplitter = new index_js_3.OpSplitter(chunks, this.submitBatchFn, disableChunking === true ? Number.POSITIVE_INFINITY : runtimeOptions.chunkSizeInBytes, runtimeOptions.maxBatchSizeInBytes, this.mc.logger);
669
+ const opSplitter = new index_js_3.OpSplitter(chunks, this.submitBatchFn, runtimeOptions.chunkSizeInBytes, runtimeOptions.maxBatchSizeInBytes, this.mc.logger);
675
670
  this.remoteMessageProcessor = new index_js_3.RemoteMessageProcessor(opSplitter, new index_js_3.OpDecompressor(this.mc.logger), opGroupingManager);
676
671
  const pendingRuntimeState = pendingLocalState;
677
672
  this.pendingStateManager = new pendingStateManager_js_1.PendingStateManager({
@@ -679,10 +674,6 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
679
674
  clientId: () => this.clientId,
680
675
  close: this.closeFn,
681
676
  connected: () => this.connected,
682
- reSubmit: (message) => {
683
- this.reSubmit(message);
684
- this.flush();
685
- },
686
677
  reSubmitBatch: this.reSubmitBatch.bind(this),
687
678
  isActiveConnection: () => this.innerDeltaManager.active,
688
679
  isAttached: () => this.attachState !== container_definitions_1.AttachState.Detached,
@@ -765,6 +756,9 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
765
756
  this.summarizerNode.updateBaseSummaryState(baseSnapshot);
766
757
  }
767
758
  const parentContext = (0, channelCollection_js_1.wrapContext)(this);
759
+ if (snapshotWithContents !== undefined) {
760
+ this.isSnapshotInstanceOfISnapshot = true;
761
+ }
768
762
  // Due to a mismatch between different layers in terms of
769
763
  // what is the interface of passing signals, we need the
770
764
  // downstream stores to wrap the signal.
@@ -934,7 +928,6 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
934
928
  sessionRuntimeSchema: JSON.stringify(this.sessionSchema),
935
929
  featureGates: JSON.stringify({
936
930
  ...featureGatesForTelemetry,
937
- disableChunking,
938
931
  disableAttachReorder: this.disableAttachReorder,
939
932
  disablePartialFlush,
940
933
  closeSummarizerDelayOverride,
@@ -1113,9 +1106,13 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
1113
1106
  let childTree = snapshotTree;
1114
1107
  for (const part of pathParts) {
1115
1108
  if (hasIsolatedChannels) {
1116
- childTree = childTree?.trees[internal_5.channelsTreeName];
1109
+ // TODO Why are we non null asserting here
1110
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1111
+ childTree = childTree.trees[internal_5.channelsTreeName];
1117
1112
  }
1118
- childTree = childTree?.trees[part];
1113
+ // TODO Why are we non null asserting here
1114
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1115
+ childTree = childTree.trees[part];
1119
1116
  }
1120
1117
  return childTree;
1121
1118
  }
@@ -1162,6 +1159,8 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
1162
1159
  return this.resolveHandle(requestParser.createSubRequest(1));
1163
1160
  }
1164
1161
  if (id === index_js_1.blobManagerBasePath && requestParser.isLeaf(2)) {
1162
+ // TODO why are we non null asserting here?
1163
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
1165
1164
  const blob = await this.blobManager.getBlob(requestParser.pathParts[1]);
1166
1165
  return blob
1167
1166
  ? {
@@ -1475,33 +1474,36 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
1475
1474
  // but will not modify the contents object (likely it will replace it on the message).
1476
1475
  const messageCopy = { ...messageArg };
1477
1476
  const savedOp = messageCopy.metadata?.savedOp;
1478
- const processResult = this.remoteMessageProcessor.process(messageCopy);
1479
- if (processResult === undefined) {
1480
- // This means the incoming message is an incomplete part of a message or batch
1481
- // and we need to process more messages before the rest of the system can understand it.
1482
- return;
1483
- }
1484
- for (const message of processResult.messages) {
1485
- const msg = modernRuntimeMessage
1486
- ? {
1487
- // Cast it since we expect it to be this based on modernRuntimeMessage computation above.
1488
- // There is nothing really ensuring that anytime original message.type is Operation that
1489
- // the result messages will be so. In the end modern bool being true only directs to
1490
- // throw error if ultimately unrecognized without compat details saying otherwise.
1491
- message: message,
1477
+ if (modernRuntimeMessage) {
1478
+ const processResult = this.remoteMessageProcessor.process(messageCopy);
1479
+ if (processResult === undefined) {
1480
+ // This means the incoming message is an incomplete part of a message or batch
1481
+ // and we need to process more messages before the rest of the system can understand it.
1482
+ return;
1483
+ }
1484
+ const batchStartCsn = processResult.batchStartCsn;
1485
+ const batch = processResult.messages;
1486
+ const messages = local
1487
+ ? this.pendingStateManager.processPendingLocalBatch(batch, batchStartCsn)
1488
+ : batch.map((message) => ({ message, localOpMetadata: undefined }));
1489
+ messages.forEach(({ message, localOpMetadata }) => {
1490
+ const msg = {
1491
+ message,
1492
1492
  local,
1493
1493
  modernRuntimeMessage,
1494
- batchStartCsn: processResult.batchStartCsn,
1495
- }
1496
- : // Unrecognized message will be ignored.
1497
- {
1498
- message,
1499
- local,
1500
- modernRuntimeMessage,
1501
- batchStartCsn: processResult.batchStartCsn,
1502
- };
1503
- msg.savedOp = savedOp;
1504
- // ensure that we observe any re-entrancy, and if needed, rebase ops
1494
+ savedOp,
1495
+ localOpMetadata,
1496
+ };
1497
+ this.ensureNoDataModelChanges(() => this.processCore(msg));
1498
+ });
1499
+ }
1500
+ else {
1501
+ const msg = {
1502
+ message: messageCopy,
1503
+ local,
1504
+ modernRuntimeMessage,
1505
+ savedOp,
1506
+ };
1505
1507
  this.ensureNoDataModelChanges(() => this.processCore(msg));
1506
1508
  }
1507
1509
  }
@@ -1509,7 +1511,7 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
1509
1511
  * Direct the message to the correct subsystem for processing, and implement other side effects
1510
1512
  */
1511
1513
  processCore(messageWithContext) {
1512
- const { message, local } = messageWithContext;
1514
+ const { message, local, localOpMetadata } = messageWithContext;
1513
1515
  // Intercept to reduce minimum sequence number to the delta manager's minimum sequence number.
1514
1516
  // Sequence numbers are not guaranteed to follow any sort of order. Re-entrancy is one of those situations
1515
1517
  if (this.deltaManager.minimumSequenceNumber <
@@ -1523,15 +1525,8 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
1523
1525
  this.scheduleManager.beforeOpProcessing(message);
1524
1526
  this._processedClientSequenceNumber = message.clientSequenceNumber;
1525
1527
  try {
1526
- // See commit that added this assert for more details.
1527
- // These calls should be made for all but chunked ops:
1528
- // 1) this.pendingStateManager.processPendingLocalMessage() below
1529
- // 2) this.resetReconnectCount() below
1528
+ // RemoteMessageProcessor would have already reconstituted Chunked Ops into the original op type
1530
1529
  (0, internal_2.assert)(message.type !== messageTypes_js_1.ContainerMessageType.ChunkedOp, 0x93b /* we should never get here with chunked ops */);
1531
- let localOpMetadata;
1532
- if (local && messageWithContext.modernRuntimeMessage) {
1533
- localOpMetadata = this.pendingStateManager.processPendingLocalMessage(messageWithContext.message, messageWithContext.batchStartCsn);
1534
- }
1535
1530
  // If there are no more pending messages after processing a local message,
1536
1531
  // the document is no longer dirty.
1537
1532
  if (!this.hasPendingMessages()) {
@@ -1690,10 +1685,12 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
1690
1685
  /**
1691
1686
  * Flush the pending ops manually.
1692
1687
  * This method is expected to be called at the end of a batch.
1688
+ * @param resubmittingBatchId - If defined, indicates this is a resubmission of a batch
1689
+ * with the given Batch ID, which must be preserved
1693
1690
  */
1694
- flush() {
1691
+ flush(resubmittingBatchId) {
1695
1692
  (0, internal_2.assert)(this._orderSequentiallyCalls === 0, 0x24c /* "Cannot call `flush()` from `orderSequentially`'s callback" */);
1696
- this.outbox.flush();
1693
+ this.outbox.flush(resubmittingBatchId);
1697
1694
  (0, internal_2.assert)(this.outbox.isEmpty, 0x3cf /* reentrancy */);
1698
1695
  }
1699
1696
  /**
@@ -1706,7 +1703,7 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
1706
1703
  // Note: we are not touching any batches other than mainBatch here, for two reasons:
1707
1704
  // 1. It would not help, as other batches are flushed independently from main batch.
1708
1705
  // 2. There is no way to undo process of data store creation, blob creation, ID compressor ops, or other things tracked by other batches.
1709
- checkpoint = this.outbox.checkpoint().mainBatch;
1706
+ checkpoint = this.outbox.getBatchCheckpoints().mainBatch;
1710
1707
  }
1711
1708
  try {
1712
1709
  this._orderSequentiallyCalls++;
@@ -1797,7 +1794,7 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
1797
1794
  return (this.connected && !this.innerDeltaManager.readOnlyInfo.readonly && !this.imminentClosure);
1798
1795
  }
1799
1796
  /**
1800
- * Are we in the middle of batching ops together?
1797
+ * Typically ops are batched and later flushed together, but in some cases we want to flush immediately.
1801
1798
  */
1802
1799
  currentlyBatching() {
1803
1800
  return this.flushMode !== internal_5.FlushMode.Immediate || this._orderSequentiallyCalls !== 0;
@@ -2158,7 +2155,7 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
2158
2155
  summaryRefSeqNum = this.deltaManager.lastSequenceNumber;
2159
2156
  const minimumSequenceNumber = this.deltaManager.minimumSequenceNumber;
2160
2157
  const message = `Summary @${summaryRefSeqNum}:${this.deltaManager.minimumSequenceNumber}`;
2161
- const lastAck = this.summaryCollection.latestAck;
2158
+ const lastAckedContext = this.lastAckedSummaryContext;
2162
2159
  const startSummaryResult = this.summarizerNode.startSummary(summaryRefSeqNum, summaryNumberLogger, latestSummaryRefSeqNum);
2163
2160
  /**
2164
2161
  * This was added to validate that the summarizer node tree has the same reference sequence number from the
@@ -2210,10 +2207,10 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
2210
2207
  };
2211
2208
  }
2212
2209
  (0, internal_2.assert)(summaryRefSeqNum === this.deltaManager.lastMessage?.sequenceNumber, 0x395 /* it's one and the same thing */);
2213
- if (lastAck !== this.summaryCollection.latestAck) {
2210
+ if (lastAckedContext !== this.lastAckedSummaryContext) {
2214
2211
  return {
2215
2212
  continue: false,
2216
- error: `Last summary changed while summarizing. ${this.summaryCollection.latestAck} !== ${lastAck}`,
2213
+ error: `Last summary changed while summarizing. ${this.lastAckedSummaryContext} !== ${lastAckedContext}`,
2217
2214
  };
2218
2215
  }
2219
2216
  return { continue: true };
@@ -2269,6 +2266,8 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
2269
2266
  // Counting dataStores and handles
2270
2267
  // Because handles are unchanged dataStores in the current logic,
2271
2268
  // summarized dataStore count is total dataStore count minus handle count
2269
+ // TODO why are we non null asserting here
2270
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
2272
2271
  const dataStoreTree = summaryTree.tree[internal_5.channelsTreeName];
2273
2272
  (0, internal_2.assert)(dataStoreTree.type === driver_definitions_1.SummaryType.Tree, 0x1fc /* "summary is not a tree" */);
2274
2273
  const handleCount = Object.values(dataStoreTree.tree).filter((value) => value.type === driver_definitions_1.SummaryType.Handle).length;
@@ -2299,17 +2298,11 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
2299
2298
  error: new index_js_4.RetriableSummaryError(continueResult.error),
2300
2299
  };
2301
2300
  }
2302
- const summaryContext = lastAck === undefined
2303
- ? {
2304
- proposalHandle: undefined,
2305
- ackHandle: this.loadedFromVersionId,
2306
- referenceSequenceNumber: summaryRefSeqNum,
2307
- }
2308
- : {
2309
- proposalHandle: lastAck.summaryOp.contents.handle,
2310
- ackHandle: lastAck.summaryAck.contents.handle,
2311
- referenceSequenceNumber: summaryRefSeqNum,
2312
- };
2301
+ const summaryContext = {
2302
+ proposalHandle: this.lastAckedSummaryContext?.proposalHandle ?? undefined,
2303
+ ackHandle: this.lastAckedSummaryContext?.ackHandle ?? this.loadedFromVersionId,
2304
+ referenceSequenceNumber: summaryRefSeqNum,
2305
+ };
2313
2306
  let handle;
2314
2307
  try {
2315
2308
  handle = await this.storage.uploadSummaryWithContext(summarizeResult.summary, summaryContext);
@@ -2529,7 +2522,9 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
2529
2522
  else {
2530
2523
  this.outbox.submit(message);
2531
2524
  }
2532
- if (!this.currentlyBatching()) {
2525
+ // Note: Technically, the system "always" batches - if this case is true we'll just have a single-message batch.
2526
+ const flushImmediatelyOnSubmit = !this.currentlyBatching();
2527
+ if (flushImmediatelyOnSubmit) {
2533
2528
  this.flush();
2534
2529
  }
2535
2530
  else {
@@ -2596,13 +2591,16 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
2596
2591
  throw new Error("Runtime is closed");
2597
2592
  }
2598
2593
  }
2599
- reSubmitBatch(batch) {
2594
+ reSubmitBatch(batch, batchId) {
2600
2595
  this.orderSequentially(() => {
2601
2596
  for (const message of batch) {
2602
2597
  this.reSubmit(message);
2603
2598
  }
2604
2599
  });
2605
- this.flush();
2600
+ // Only include Batch ID if "Offline Load" feature is enabled
2601
+ // It's only needed to identify batches across container forks arising from misuse of offline load.
2602
+ const includeBatchId = this.mc.config.getBoolean("Fluid.Container.enableOfflineLoad") ?? false;
2603
+ this.flush(includeBatchId ? batchId : undefined);
2606
2604
  }
2607
2605
  reSubmit(message) {
2608
2606
  // Need to parse from string for back-compat
@@ -2693,45 +2691,91 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
2693
2691
  const { proposalHandle, ackHandle, summaryRefSeq, summaryLogger } = options;
2694
2692
  // proposalHandle is always passed from RunningSummarizer.
2695
2693
  (0, internal_2.assert)(proposalHandle !== undefined, 0x766 /* proposalHandle should be available */);
2696
- const readAndParseBlob = async (id) => (0, internal_4.readAndParse)(this.storage, id);
2697
2694
  const result = await this.summarizerNode.refreshLatestSummary(proposalHandle, summaryRefSeq);
2695
+ /* eslint-disable jsdoc/check-indentation */
2698
2696
  /**
2699
- * When refreshing a summary ack, this check indicates a new ack of a summary that is newer than the
2700
- * current summary that is tracked, but this summarizer runtime did not produce/track that summary. Thus
2701
- * it needs to refresh its state. Today refresh is done by fetching the latest snapshot to update the cache
2702
- * and then close as the current main client is likely to be re-elected as the parent summarizer again.
2697
+ * If the snapshot corresponding to the ack is not tracked by this client, it was submitted by another client.
2698
+ * Take action as per the following scenarios:
2699
+ * 1. If that snapshot is older than the one tracked by this client, ignore the ack because only the latest
2700
+ * snapshot is tracked.
2701
+ * 2. If that snapshot is newer, attempt to fetch the latest snapshot and do one of the following:
2702
+ * 2.1. If the fetched snapshot is same or newer than the one for which ack was received, close this client.
2703
+ * The next summarizer client will likely start from this snapshot and get out of this state. Fetching
2704
+ * the snapshot updates the cache for this client so if it's re-elected as summarizer, this will prevent
2705
+ * any thrashing.
2706
+ * 2.2. If the fetched snapshot is older than the one for which ack was received, ignore the ack. This can
2707
+ * happen in scenarios where the snapshot for the ack was lost in storage (in scenarios like DB rollback,
2708
+ * etc.) but the summary ack is still there because it's tracked a different service. In such cases,
2709
+ * ignoring the ack is the correct thing to do because the latest snapshot in storage is not the one for
2710
+ * the ack but is still the one tracked by this client. If we were to close the summarizer like in the
2711
+ * previous scenario, it will result in this document stuck in this state in a loop.
2703
2712
  */
2704
- if (!result.isSummaryTracked && result.isSummaryNewer) {
2705
- await this.fetchLatestSnapshotAndClose(summaryLogger, {
2706
- eventName: "RefreshLatestSummaryAckFetch",
2707
- ackHandle,
2708
- targetSequenceNumber: summaryRefSeq,
2709
- }, readAndParseBlob);
2713
+ /* eslint-enable jsdoc/check-indentation */
2714
+ if (!result.isSummaryTracked) {
2715
+ if (result.isSummaryNewer) {
2716
+ await this.fetchLatestSnapshotAndMaybeClose(summaryRefSeq, ackHandle, summaryLogger);
2717
+ }
2710
2718
  return;
2711
2719
  }
2712
2720
  // Notify the garbage collector so it can update its latest summary state.
2713
2721
  await this.garbageCollector.refreshLatestSummary(result);
2722
+ // If we here, the ack was tracked by this client. Update the summary context of the last ack.
2723
+ this.lastAckedSummaryContext = {
2724
+ proposalHandle,
2725
+ ackHandle,
2726
+ referenceSequenceNumber: summaryRefSeq,
2727
+ };
2714
2728
  }
2715
2729
  /**
2716
- * Fetches the latest snapshot from storage and closes the container. This is done in cases where
2717
- * the last known snapshot is older than the latest one. This will ensure that the latest snapshot
2718
- * is downloaded and we don't end up loading snapshot from cache.
2730
+ * Fetches the latest snapshot from storage. If the fetched snapshot is same or newer than the one for which ack
2731
+ * was received, close this client. Fetching the snapshot will update the cache for this client so if it's
2732
+ * re-elected as summarizer, this will prevent any thrashing.
2733
+ * If the fetched snapshot is older than the one for which ack was received, ignore the ack and return. This can
2734
+ * happen in scenarios where the snapshot for the ack was lost in storage in scenarios like DB rollback, etc.
2719
2735
  */
2720
- async fetchLatestSnapshotAndClose(logger, event, readAndParseBlob) {
2721
- await internal_7.PerformanceEvent.timedExecAsync(logger, event, async (perfEvent) => {
2722
- const stats = {};
2736
+ async fetchLatestSnapshotAndMaybeClose(targetRefSeq, targetAckHandle, logger) {
2737
+ const fetchedSnapshotRefSeq = await internal_7.PerformanceEvent.timedExecAsync(logger, { eventName: "RefreshLatestSummaryAckFetch" }, async (perfEvent) => {
2738
+ const props = { targetRefSeq, targetAckHandle };
2723
2739
  const trace = client_utils_1.Trace.start();
2724
- const versions = await this.storage.getVersions(null, 1, "prefetchLatestSummaryBeforeClose", internal_3.FetchSource.noCache);
2725
- (0, internal_2.assert)(!!versions && !!versions[0], 0x137 /* "Failed to get version from storage" */);
2726
- stats.getVersionDuration = trace.trace().duration;
2727
- const maybeSnapshot = await this.storage.getSnapshotTree(versions[0]);
2728
- (0, internal_2.assert)(!!maybeSnapshot, 0x138 /* "Failed to get snapshot from storage" */);
2729
- stats.getSnapshotDuration = trace.trace().duration;
2730
- const latestSnapshotRefSeq = await (0, internal_6.seqFromTree)(maybeSnapshot, readAndParseBlob);
2731
- stats.snapshotRefSeq = latestSnapshotRefSeq;
2732
- stats.snapshotVersion = versions[0].id;
2733
- perfEvent.end(stats);
2740
+ let snapshotTree;
2741
+ const scenarioName = "RefreshLatestSummaryAckFetch";
2742
+ // If loader supplied us the ISnapshot when loading, the new getSnapshotApi is supported and feature gate is ON, then use the
2743
+ // new API, otherwise it will reduce the service performance because the service will need to recalculate the full snapshot
2744
+ // in case previously getSnapshotApi was used and now we use the getVersions API.
2745
+ if (this.isSnapshotInstanceOfISnapshot &&
2746
+ this.storage.getSnapshot !== undefined &&
2747
+ this.mc.config.getBoolean("Fluid.Container.UseLoadingGroupIdForSnapshotFetch2") ===
2748
+ true) {
2749
+ const snapshot = await this.storage.getSnapshot({
2750
+ scenarioName,
2751
+ fetchSource: internal_3.FetchSource.noCache,
2752
+ });
2753
+ const id = snapshot.snapshotTree.id;
2754
+ (0, internal_2.assert)(id !== undefined, "id of the fetched snapshot should be defined");
2755
+ props.snapshotVersion = id;
2756
+ snapshotTree = snapshot.snapshotTree;
2757
+ }
2758
+ else {
2759
+ const versions = await this.storage.getVersions(null, 1, scenarioName, internal_3.FetchSource.noCache);
2760
+ (0, internal_2.assert)(!!versions && !!versions[0], 0x137 /* "Failed to get version from storage" */);
2761
+ snapshotTree = await this.storage.getSnapshotTree(versions[0]);
2762
+ (0, internal_2.assert)(!!snapshotTree, 0x138 /* "Failed to get snapshot from storage" */);
2763
+ props.snapshotVersion = versions[0].id;
2764
+ }
2765
+ props.getSnapshotDuration = trace.trace().duration;
2766
+ const readAndParseBlob = async (id) => (0, internal_4.readAndParse)(this.storage, id);
2767
+ const snapshotRefSeq = await (0, internal_6.seqFromTree)(snapshotTree, readAndParseBlob);
2768
+ props.snapshotRefSeq = snapshotRefSeq;
2769
+ props.newerSnapshotPresent = snapshotRefSeq >= targetRefSeq;
2770
+ perfEvent.end({ details: props });
2771
+ return snapshotRefSeq;
2734
2772
  });
2773
+ // If the snapshot that was fetched is older than the target snapshot, return. The summarizer will not be closed
2774
+ // because the snapshot is likely deleted from storage and it so, closing the summarizer will result in the
2775
+ // document being stuck in this state.
2776
+ if (fetchedSnapshotRefSeq < targetRefSeq) {
2777
+ return;
2778
+ }
2735
2779
  await (0, internal_2.delay)(this.closeSummarizerDelayMs);
2736
2780
  this._summarizer?.stop("latestSummaryStateStale");
2737
2781
  this.disposeFn();