@fluidframework/container-runtime 2.0.0-dev.7.4.0.217884 → 2.0.0-dev.7.4.0.221926

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 (213) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/api-extractor.json +0 -3
  3. package/api-report/container-runtime.api.md +22 -18
  4. package/dist/blobManager.d.ts +3 -3
  5. package/dist/blobManager.d.ts.map +1 -1
  6. package/dist/blobManager.js.map +1 -1
  7. package/dist/container-runtime-alpha.d.ts +42 -21
  8. package/dist/container-runtime-beta.d.ts +40 -2
  9. package/dist/container-runtime-public.d.ts +40 -2
  10. package/dist/container-runtime-untrimmed.d.ts +51 -38
  11. package/dist/containerRuntime.d.ts +9 -7
  12. package/dist/containerRuntime.d.ts.map +1 -1
  13. package/dist/containerRuntime.js +42 -22
  14. package/dist/containerRuntime.js.map +1 -1
  15. package/dist/dataStores.d.ts +10 -15
  16. package/dist/dataStores.d.ts.map +1 -1
  17. package/dist/dataStores.js +63 -36
  18. package/dist/dataStores.js.map +1 -1
  19. package/dist/gc/garbageCollection.d.ts +29 -10
  20. package/dist/gc/garbageCollection.d.ts.map +1 -1
  21. package/dist/gc/garbageCollection.js +149 -67
  22. package/dist/gc/garbageCollection.js.map +1 -1
  23. package/dist/gc/gcConfigs.d.ts.map +1 -1
  24. package/dist/gc/gcConfigs.js +34 -37
  25. package/dist/gc/gcConfigs.js.map +1 -1
  26. package/dist/gc/gcDefinitions.d.ts +88 -35
  27. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  28. package/dist/gc/gcDefinitions.js +25 -15
  29. package/dist/gc/gcDefinitions.js.map +1 -1
  30. package/dist/gc/gcHelpers.d.ts +18 -25
  31. package/dist/gc/gcHelpers.d.ts.map +1 -1
  32. package/dist/gc/gcHelpers.js +29 -45
  33. package/dist/gc/gcHelpers.js.map +1 -1
  34. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  35. package/dist/gc/gcTelemetry.js +14 -3
  36. package/dist/gc/gcTelemetry.js.map +1 -1
  37. package/dist/gc/gcUnreferencedStateTracker.d.ts +11 -5
  38. package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
  39. package/dist/gc/gcUnreferencedStateTracker.js +43 -19
  40. package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
  41. package/dist/gc/index.d.ts +1 -1
  42. package/dist/gc/index.d.ts.map +1 -1
  43. package/dist/gc/index.js +4 -4
  44. package/dist/gc/index.js.map +1 -1
  45. package/dist/index.d.ts +13 -1
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +16 -5
  48. package/dist/index.js.map +1 -1
  49. package/dist/messageTypes.d.ts +13 -5
  50. package/dist/messageTypes.d.ts.map +1 -1
  51. package/dist/messageTypes.js +5 -0
  52. package/dist/messageTypes.js.map +1 -1
  53. package/dist/packageVersion.d.ts +1 -1
  54. package/dist/packageVersion.js +1 -1
  55. package/dist/packageVersion.js.map +1 -1
  56. package/dist/pendingStateManager.d.ts +1 -0
  57. package/dist/pendingStateManager.d.ts.map +1 -1
  58. package/dist/pendingStateManager.js +1 -0
  59. package/dist/pendingStateManager.js.map +1 -1
  60. package/lib/blobManager.d.ts +3 -3
  61. package/lib/blobManager.d.ts.map +1 -1
  62. package/lib/blobManager.js.map +1 -1
  63. package/lib/container-runtime-alpha.d.ts +42 -21
  64. package/lib/container-runtime-beta.d.ts +40 -2
  65. package/lib/container-runtime-public.d.ts +40 -2
  66. package/lib/container-runtime-untrimmed.d.ts +51 -38
  67. package/lib/containerRuntime.d.ts +9 -7
  68. package/lib/containerRuntime.d.ts.map +1 -1
  69. package/lib/containerRuntime.js +44 -24
  70. package/lib/containerRuntime.js.map +1 -1
  71. package/lib/dataStores.d.ts +10 -15
  72. package/lib/dataStores.d.ts.map +1 -1
  73. package/lib/dataStores.js +65 -38
  74. package/lib/dataStores.js.map +1 -1
  75. package/lib/gc/garbageCollection.d.ts +29 -10
  76. package/lib/gc/garbageCollection.d.ts.map +1 -1
  77. package/lib/gc/garbageCollection.js +151 -69
  78. package/lib/gc/garbageCollection.js.map +1 -1
  79. package/lib/gc/gcConfigs.d.ts.map +1 -1
  80. package/lib/gc/gcConfigs.js +37 -40
  81. package/lib/gc/gcConfigs.js.map +1 -1
  82. package/lib/gc/gcDefinitions.d.ts +88 -35
  83. package/lib/gc/gcDefinitions.d.ts.map +1 -1
  84. package/lib/gc/gcDefinitions.js +24 -14
  85. package/lib/gc/gcDefinitions.js.map +1 -1
  86. package/lib/gc/gcHelpers.d.ts +18 -25
  87. package/lib/gc/gcHelpers.d.ts.map +1 -1
  88. package/lib/gc/gcHelpers.js +27 -43
  89. package/lib/gc/gcHelpers.js.map +1 -1
  90. package/lib/gc/gcTelemetry.d.ts.map +1 -1
  91. package/lib/gc/gcTelemetry.js +14 -3
  92. package/lib/gc/gcTelemetry.js.map +1 -1
  93. package/lib/gc/gcUnreferencedStateTracker.d.ts +11 -5
  94. package/lib/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
  95. package/lib/gc/gcUnreferencedStateTracker.js +43 -19
  96. package/lib/gc/gcUnreferencedStateTracker.js.map +1 -1
  97. package/lib/gc/index.d.ts +1 -1
  98. package/lib/gc/index.d.ts.map +1 -1
  99. package/lib/gc/index.js +1 -1
  100. package/lib/gc/index.js.map +1 -1
  101. package/lib/index.d.ts +13 -1
  102. package/lib/index.d.ts.map +1 -1
  103. package/lib/index.js +15 -1
  104. package/lib/index.js.map +1 -1
  105. package/lib/messageTypes.d.ts +13 -5
  106. package/lib/messageTypes.d.ts.map +1 -1
  107. package/lib/messageTypes.js +5 -0
  108. package/lib/messageTypes.js.map +1 -1
  109. package/lib/packageVersion.d.ts +1 -1
  110. package/lib/packageVersion.js +1 -1
  111. package/lib/packageVersion.js.map +1 -1
  112. package/lib/pendingStateManager.d.ts +1 -0
  113. package/lib/pendingStateManager.d.ts.map +1 -1
  114. package/lib/pendingStateManager.js +1 -0
  115. package/lib/pendingStateManager.js.map +1 -1
  116. package/package.json +18 -15
  117. package/src/blobManager.ts +4 -4
  118. package/src/containerRuntime.ts +56 -30
  119. package/src/dataStores.ts +118 -59
  120. package/src/gc/garbageCollection.md +14 -15
  121. package/src/gc/garbageCollection.ts +182 -75
  122. package/src/gc/gcConfigs.ts +50 -52
  123. package/src/gc/gcDefinitions.ts +103 -41
  124. package/src/gc/gcHelpers.ts +31 -52
  125. package/src/gc/gcTelemetry.ts +16 -4
  126. package/src/gc/gcUnreferencedStateTracker.ts +61 -22
  127. package/src/gc/index.ts +4 -3
  128. package/src/index.ts +17 -1
  129. package/src/messageTypes.ts +16 -2
  130. package/src/packageVersion.ts +1 -1
  131. package/src/pendingStateManager.ts +1 -0
  132. package/dist/id-compressor/appendOnlySortedMap.d.ts +0 -124
  133. package/dist/id-compressor/appendOnlySortedMap.d.ts.map +0 -1
  134. package/dist/id-compressor/appendOnlySortedMap.js +0 -318
  135. package/dist/id-compressor/appendOnlySortedMap.js.map +0 -1
  136. package/dist/id-compressor/finalSpace.d.ts +0 -29
  137. package/dist/id-compressor/finalSpace.d.ts.map +0 -1
  138. package/dist/id-compressor/finalSpace.js +0 -62
  139. package/dist/id-compressor/finalSpace.js.map +0 -1
  140. package/dist/id-compressor/idCompressor.d.ts +0 -54
  141. package/dist/id-compressor/idCompressor.d.ts.map +0 -1
  142. package/dist/id-compressor/idCompressor.js +0 -495
  143. package/dist/id-compressor/idCompressor.js.map +0 -1
  144. package/dist/id-compressor/identifiers.d.ts +0 -32
  145. package/dist/id-compressor/identifiers.d.ts.map +0 -1
  146. package/dist/id-compressor/identifiers.js +0 -15
  147. package/dist/id-compressor/identifiers.js.map +0 -1
  148. package/dist/id-compressor/index.d.ts +0 -13
  149. package/dist/id-compressor/index.d.ts.map +0 -1
  150. package/dist/id-compressor/index.js +0 -32
  151. package/dist/id-compressor/index.js.map +0 -1
  152. package/dist/id-compressor/persistanceUtilities.d.ts +0 -22
  153. package/dist/id-compressor/persistanceUtilities.d.ts.map +0 -1
  154. package/dist/id-compressor/persistanceUtilities.js +0 -43
  155. package/dist/id-compressor/persistanceUtilities.js.map +0 -1
  156. package/dist/id-compressor/sessionSpaceNormalizer.d.ts +0 -46
  157. package/dist/id-compressor/sessionSpaceNormalizer.d.ts.map +0 -1
  158. package/dist/id-compressor/sessionSpaceNormalizer.js +0 -80
  159. package/dist/id-compressor/sessionSpaceNormalizer.js.map +0 -1
  160. package/dist/id-compressor/sessions.d.ts +0 -115
  161. package/dist/id-compressor/sessions.d.ts.map +0 -1
  162. package/dist/id-compressor/sessions.js +0 -305
  163. package/dist/id-compressor/sessions.js.map +0 -1
  164. package/dist/id-compressor/utilities.d.ts +0 -52
  165. package/dist/id-compressor/utilities.d.ts.map +0 -1
  166. package/dist/id-compressor/utilities.js +0 -169
  167. package/dist/id-compressor/utilities.js.map +0 -1
  168. package/lib/id-compressor/appendOnlySortedMap.d.ts +0 -124
  169. package/lib/id-compressor/appendOnlySortedMap.d.ts.map +0 -1
  170. package/lib/id-compressor/appendOnlySortedMap.js +0 -314
  171. package/lib/id-compressor/appendOnlySortedMap.js.map +0 -1
  172. package/lib/id-compressor/finalSpace.d.ts +0 -29
  173. package/lib/id-compressor/finalSpace.d.ts.map +0 -1
  174. package/lib/id-compressor/finalSpace.js +0 -58
  175. package/lib/id-compressor/finalSpace.js.map +0 -1
  176. package/lib/id-compressor/idCompressor.d.ts +0 -54
  177. package/lib/id-compressor/idCompressor.d.ts.map +0 -1
  178. package/lib/id-compressor/idCompressor.js +0 -491
  179. package/lib/id-compressor/idCompressor.js.map +0 -1
  180. package/lib/id-compressor/identifiers.d.ts +0 -32
  181. package/lib/id-compressor/identifiers.d.ts.map +0 -1
  182. package/lib/id-compressor/identifiers.js +0 -11
  183. package/lib/id-compressor/identifiers.js.map +0 -1
  184. package/lib/id-compressor/index.d.ts +0 -13
  185. package/lib/id-compressor/index.d.ts.map +0 -1
  186. package/lib/id-compressor/index.js +0 -13
  187. package/lib/id-compressor/index.js.map +0 -1
  188. package/lib/id-compressor/persistanceUtilities.d.ts +0 -22
  189. package/lib/id-compressor/persistanceUtilities.d.ts.map +0 -1
  190. package/lib/id-compressor/persistanceUtilities.js +0 -34
  191. package/lib/id-compressor/persistanceUtilities.js.map +0 -1
  192. package/lib/id-compressor/sessionSpaceNormalizer.d.ts +0 -46
  193. package/lib/id-compressor/sessionSpaceNormalizer.d.ts.map +0 -1
  194. package/lib/id-compressor/sessionSpaceNormalizer.js +0 -76
  195. package/lib/id-compressor/sessionSpaceNormalizer.js.map +0 -1
  196. package/lib/id-compressor/sessions.d.ts +0 -115
  197. package/lib/id-compressor/sessions.d.ts.map +0 -1
  198. package/lib/id-compressor/sessions.js +0 -290
  199. package/lib/id-compressor/sessions.js.map +0 -1
  200. package/lib/id-compressor/utilities.d.ts +0 -52
  201. package/lib/id-compressor/utilities.d.ts.map +0 -1
  202. package/lib/id-compressor/utilities.js +0 -151
  203. package/lib/id-compressor/utilities.js.map +0 -1
  204. package/src/id-compressor/README.md +0 -69
  205. package/src/id-compressor/appendOnlySortedMap.ts +0 -366
  206. package/src/id-compressor/finalSpace.ts +0 -67
  207. package/src/id-compressor/idCompressor.ts +0 -630
  208. package/src/id-compressor/identifiers.ts +0 -42
  209. package/src/id-compressor/index.ts +0 -26
  210. package/src/id-compressor/persistanceUtilities.ts +0 -58
  211. package/src/id-compressor/sessionSpaceNormalizer.ts +0 -83
  212. package/src/id-compressor/sessions.ts +0 -405
  213. package/src/id-compressor/utilities.ts +0 -190
@@ -1,8 +1,10 @@
1
+ import { assertIsStableId } from '@fluidframework/id-compressor';
1
2
  import { AttachState } from '@fluidframework/container-definitions';
2
3
  import { ContainerWarning } from '@fluidframework/container-definitions';
3
4
  import { FluidDataStoreRegistryEntry } from '@fluidframework/runtime-definitions';
4
5
  import { FluidObject } from '@fluidframework/core-interfaces';
5
6
  import { FlushMode } from '@fluidframework/runtime-definitions';
7
+ import { generateStableId } from '@fluidframework/id-compressor';
6
8
  import { IAudience } from '@fluidframework/container-definitions';
7
9
  import { IClientDetails } from '@fluidframework/protocol-definitions';
8
10
  import { IContainerContext } from '@fluidframework/container-definitions';
@@ -23,8 +25,8 @@ import { IFluidHandleContext } from '@fluidframework/core-interfaces';
23
25
  import { IFluidRouter } from '@fluidframework/core-interfaces';
24
26
  import { IGarbageCollectionData } from '@fluidframework/runtime-definitions';
25
27
  import { IGetPendingLocalStateProps } from '@fluidframework/container-definitions';
26
- import { IIdCompressor } from '@fluidframework/runtime-definitions';
27
- import { IIdCompressorCore } from '@fluidframework/runtime-definitions';
28
+ import type { IIdCompressor } from '@fluidframework/id-compressor';
29
+ import type { IIdCompressorCore } from '@fluidframework/id-compressor';
28
30
  import { ILoader } from '@fluidframework/container-definitions';
29
31
  import { ILoaderOptions } from '@fluidframework/container-definitions';
30
32
  import { IProvideFluidHandleContext } from '@fluidframework/core-interfaces';
@@ -34,6 +36,7 @@ import { IResponse } from '@fluidframework/core-interfaces';
34
36
  import { IRuntime } from '@fluidframework/container-definitions';
35
37
  import { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
36
38
  import { ISignalMessage } from '@fluidframework/protocol-definitions';
39
+ import { isStableId } from '@fluidframework/id-compressor';
37
40
  import { ISummaryAck } from '@fluidframework/protocol-definitions';
38
41
  import { ISummaryContent } from '@fluidframework/protocol-definitions';
39
42
  import { ISummaryNack } from '@fluidframework/protocol-definitions';
@@ -44,7 +47,6 @@ import { ITelemetryContext } from '@fluidframework/runtime-definitions';
44
47
  import { ITelemetryLoggerExt } from '@fluidframework/telemetry-utils';
45
48
  import { MessageType } from '@fluidframework/protocol-definitions';
46
49
  import { NamedFluidDataStoreRegistryEntries } from '@fluidframework/runtime-definitions';
47
- import { StableId } from '@fluidframework/runtime-definitions';
48
50
  import { TypedEventEmitter } from '@fluid-internal/client-utils';
49
51
 
50
52
  /* Excluded from this release type: agentSchedulerId */
@@ -429,27 +431,27 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
429
431
  * @param usedRoutes - The routes that are used in all nodes in this Container.
430
432
  * @see IGarbageCollectionRuntime.updateUsedRoutes
431
433
  */
432
- updateUsedRoutes(usedRoutes: string[]): void;
434
+ updateUsedRoutes(usedRoutes: readonly string[]): void;
433
435
  /**
434
436
  * This is called to update objects whose routes are unused.
435
437
  * @param unusedRoutes - Data store and attachment blob routes that are unused in this Container.
436
438
  */
437
- updateUnusedRoutes(unusedRoutes: string[]): void;
439
+ updateUnusedRoutes(unusedRoutes: readonly string[]): void;
438
440
  /**
439
441
  * @deprecated Replaced by deleteSweepReadyNodes.
440
442
  */
441
- deleteUnusedNodes(unusedRoutes: string[]): string[];
443
+ deleteUnusedNodes(unusedRoutes: readonly string[]): string[];
442
444
  /**
443
445
  * After GC has run and identified nodes that are sweep ready, this is called to delete the sweep ready nodes.
444
446
  * @param sweepReadyRoutes - The routes of nodes that are sweep ready and should be deleted.
445
447
  * @returns The routes of nodes that were deleted.
446
448
  */
447
- deleteSweepReadyNodes(sweepReadyRoutes: string[]): string[];
449
+ deleteSweepReadyNodes(sweepReadyRoutes: readonly string[]): readonly string[];
448
450
  /**
449
451
  * This is called to update objects that are tombstones.
450
452
  * @param tombstonedRoutes - Data store and attachment blob routes that are tombstones in this Container.
451
453
  */
452
- updateTombstonedRoutes(tombstonedRoutes: string[]): void;
454
+ updateTombstonedRoutes(tombstonedRoutes: readonly string[]): void;
453
455
  /**
454
456
  * Returns a server generated referenced timestamp to be used to track unreferenced nodes by GC.
455
457
  */
@@ -504,7 +506,7 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
504
506
  */
505
507
  submitSummary(options: ISubmitSummaryOptions): Promise<SubmitSummaryResult>;
506
508
  /**
507
- * This helper is called during summarization. If there are pending ops, it will return a failed summarize result
509
+ * This helper is called during summarization. If the container is dirty, it will return a failed summarize result
508
510
  * (IBaseSummarizeResult) unless this is the final summarize attempt and SkipFailingIncorrectSummary option is set.
509
511
  * @param logger - The logger to be used for sending telemetry.
510
512
  * @param referenceSequenceNumber - The reference sequence number of the summary attempt.
@@ -535,6 +537,7 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
535
537
  /**
536
538
  * Finds the right store and asks it to resubmit the message. This typically happens when we
537
539
  * reconnect and there are pending messages.
540
+ * ! Note: successfully resubmitting an op that has been successfully sequenced is not possible due to checks in the ConnectionStateHandler (Loader layer)
538
541
  * @param message - The original LocalContainerRuntimeMessage.
539
542
  * @param localOpMetadata - The local metadata associated with the original message.
540
543
  */
@@ -602,23 +605,25 @@ export declare type EnqueueSummarizeResult = (ISummarizeResults & {
602
605
  /* Excluded from this release type: FluidDataStoreRegistry */
603
606
 
604
607
  /**
605
- * @see IGCMetadata.gcFeatureMatrix
608
+ * @see IGCMetadata.gcFeatureMatrix and @see gcGenerationOptionName
606
609
  * @alpha
607
610
  */
608
- export declare interface GCFeatureMatrix {
611
+ export declare type GCFeatureMatrix = {
609
612
  /**
610
- * The Tombstone Generation value in effect when this file was created.
611
- * Gives a way for an app to disqualify old files from GC Tombstone enforcement.
613
+ * The GC Generation value in effect when this file was created.
614
+ * Gives a way for an app to disqualify old files from GC Sweep.
612
615
  * Provided via Container Runtime Options.
613
616
  */
614
- tombstoneGeneration?: number;
617
+ gcGeneration?: number;
618
+ /** Deprecated property from legacy type. Will not be set concurrently with gcGeneration */
619
+ tombstoneGeneration?: undefined;
620
+ } | {
615
621
  /**
616
- * The Sweep Generation value in effect when this file was created.
617
- * Gives a way for an app to disqualify old files from GC Sweep.
618
- * Provided via Container Runtime Options.
622
+ * The Tombstone Generation value in effect when this file was created.
623
+ * Legacy - new containers would get gcGeneration instead (if anything)
619
624
  */
620
- sweepGeneration?: number;
621
- }
625
+ tombstoneGeneration: number;
626
+ };
622
627
 
623
628
  /**
624
629
  * The types of GC nodes in the GC reference graph.
@@ -885,7 +890,7 @@ export declare interface IGCMetadata {
885
890
  * - True means sweep phase is enabled.
886
891
  * - False means sweep phase is disabled. If GC is disabled as per gcFeature, sweep is also disabled.
887
892
  *
888
- * @deprecated use GCFeatureMatrix.sweepGeneration instead. @see GCFeatureMatrix.sweepGeneration
893
+ * @deprecated use GCFeatureMatrix.gcGeneration instead. @see GCFeatureMatrix.gcGeneration
889
894
  */
890
895
  readonly sweepEnabled?: boolean;
891
896
  /** If this is present, the session for this container will expire after this time and the container will close */
@@ -904,7 +909,7 @@ export declare interface IGCRuntimeOptions {
904
909
  * GC has mark phase and sweep phase. In mark phase, unreferenced objects are identified
905
910
  * and marked as such in the summary. This option enables the mark phase.
906
911
  * In sweep phase, unreferenced objects are eventually deleted from the container if they meet certain conditions.
907
- * Sweep phase can be enabled using the "gcSweepGeneration" option.
912
+ * Sweep phase can be enabled using the "enableGCSweep" option.
908
913
  *
909
914
  * Note: This setting is persisted in the container's summary and cannot be changed.
910
915
  */
@@ -914,6 +919,16 @@ export declare interface IGCRuntimeOptions {
914
919
  * Can be used to disable running GC on containers where it is allowed via the gcAllowed option.
915
920
  */
916
921
  disableGC?: boolean;
922
+ /**
923
+ * Flag that if true, will enable the full Sweep Phase of garbage collection for this session,
924
+ * where Tombstoned objects are permanently deleted from the container.
925
+ *
926
+ * IMPORTANT: This only applies if this document is allowed to run Sweep Phase.
927
+ *
928
+ * Current default behavior is for Sweep Phase not to delete Tombstoned objects,
929
+ * but merely to prevent them from being loaded.
930
+ */
931
+ enableGCSweep?: true;
917
932
  /**
918
933
  * Flag that will bypass optimizations and generate GC data for all nodes irrespective of whether a node
919
934
  * changed or not.
@@ -925,6 +940,12 @@ export declare interface IGCRuntimeOptions {
925
940
  * Note: This setting is persisted in the container's summary and cannot be changed.
926
941
  */
927
942
  sessionExpiryTimeoutMs?: number;
943
+ /**
944
+ * Delay between when Tombstone should run and when the object should be deleted.
945
+ * This grace period gives a chance to intervene to recover if needed, before Sweep deletes the object.
946
+ * If not present, a default (non-zero) value will be used.
947
+ */
948
+ sweepGracePeriodMs?: number;
928
949
  /**
929
950
  * Allows additional GC options to be passed.
930
951
  */
@@ -1,13 +1,53 @@
1
+ import { assertIsStableId } from '@fluidframework/id-compressor';
2
+ import { AttachState } from '@fluidframework/container-definitions';
3
+ import { ContainerWarning } from '@fluidframework/container-definitions';
4
+ import { FluidDataStoreRegistryEntry } from '@fluidframework/runtime-definitions';
5
+ import { FluidObject } from '@fluidframework/core-interfaces';
6
+ import { FlushMode } from '@fluidframework/runtime-definitions';
7
+ import { generateStableId } from '@fluidframework/id-compressor';
8
+ import { IAudience } from '@fluidframework/container-definitions';
1
9
  import { IClientDetails } from '@fluidframework/protocol-definitions';
10
+ import { IContainerContext } from '@fluidframework/container-definitions';
11
+ import { IContainerRuntime } from '@fluidframework/container-runtime-definitions';
12
+ import { IContainerRuntimeEvents } from '@fluidframework/container-runtime-definitions';
13
+ import { ICriticalContainerError } from '@fluidframework/container-definitions';
14
+ import { IDataStore } from '@fluidframework/runtime-definitions';
15
+ import { IDeltaManager } from '@fluidframework/container-definitions';
16
+ import { IDisposable } from '@fluidframework/core-interfaces';
2
17
  import { IDocumentMessage } from '@fluidframework/protocol-definitions';
18
+ import { IDocumentStorageService } from '@fluidframework/driver-definitions';
19
+ import { IEvent } from '@fluidframework/core-interfaces';
20
+ import { IEventProvider } from '@fluidframework/core-interfaces';
21
+ import { IFluidDataStoreContextDetached } from '@fluidframework/runtime-definitions';
22
+ import { IFluidDataStoreRegistry } from '@fluidframework/runtime-definitions';
23
+ import { IFluidHandle } from '@fluidframework/core-interfaces';
24
+ import { IFluidHandleContext } from '@fluidframework/core-interfaces';
25
+ import { IFluidRouter } from '@fluidframework/core-interfaces';
26
+ import { IGarbageCollectionData } from '@fluidframework/runtime-definitions';
27
+ import { IGetPendingLocalStateProps } from '@fluidframework/container-definitions';
28
+ import type { IIdCompressor } from '@fluidframework/id-compressor';
29
+ import type { IIdCompressorCore } from '@fluidframework/id-compressor';
30
+ import { ILoader } from '@fluidframework/container-definitions';
31
+ import { ILoaderOptions } from '@fluidframework/container-definitions';
32
+ import { IProvideFluidHandleContext } from '@fluidframework/core-interfaces';
3
33
  import { IQuorumClients } from '@fluidframework/protocol-definitions';
34
+ import { IRequest } from '@fluidframework/core-interfaces';
35
+ import { IResponse } from '@fluidframework/core-interfaces';
36
+ import { IRuntime } from '@fluidframework/container-definitions';
4
37
  import { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
5
38
  import { ISignalMessage } from '@fluidframework/protocol-definitions';
39
+ import { isStableId } from '@fluidframework/id-compressor';
6
40
  import { ISummaryAck } from '@fluidframework/protocol-definitions';
7
41
  import { ISummaryContent } from '@fluidframework/protocol-definitions';
8
42
  import { ISummaryNack } from '@fluidframework/protocol-definitions';
43
+ import { ISummaryStats } from '@fluidframework/runtime-definitions';
9
44
  import { ISummaryTree } from '@fluidframework/protocol-definitions';
45
+ import { ISummaryTreeWithStats } from '@fluidframework/runtime-definitions';
46
+ import { ITelemetryContext } from '@fluidframework/runtime-definitions';
47
+ import { ITelemetryLoggerExt } from '@fluidframework/telemetry-utils';
10
48
  import { MessageType } from '@fluidframework/protocol-definitions';
49
+ import { NamedFluidDataStoreRegistryEntries } from '@fluidframework/runtime-definitions';
50
+ import { TypedEventEmitter } from '@fluid-internal/client-utils';
11
51
 
12
52
  /* Excluded from this release type: agentSchedulerId */
13
53
 
@@ -235,8 +275,6 @@ import { MessageType } from '@fluidframework/protocol-definitions';
235
275
 
236
276
  /* Excluded from this release type: RuntimeMessage */
237
277
 
238
- /* Excluded from this release type: StableId */
239
-
240
278
  /* Excluded from this release type: SubmitSummaryFailureData */
241
279
 
242
280
  /* Excluded from this release type: SubmitSummaryResult */
@@ -1,13 +1,53 @@
1
+ import { assertIsStableId } from '@fluidframework/id-compressor';
2
+ import { AttachState } from '@fluidframework/container-definitions';
3
+ import { ContainerWarning } from '@fluidframework/container-definitions';
4
+ import { FluidDataStoreRegistryEntry } from '@fluidframework/runtime-definitions';
5
+ import { FluidObject } from '@fluidframework/core-interfaces';
6
+ import { FlushMode } from '@fluidframework/runtime-definitions';
7
+ import { generateStableId } from '@fluidframework/id-compressor';
8
+ import { IAudience } from '@fluidframework/container-definitions';
1
9
  import { IClientDetails } from '@fluidframework/protocol-definitions';
10
+ import { IContainerContext } from '@fluidframework/container-definitions';
11
+ import { IContainerRuntime } from '@fluidframework/container-runtime-definitions';
12
+ import { IContainerRuntimeEvents } from '@fluidframework/container-runtime-definitions';
13
+ import { ICriticalContainerError } from '@fluidframework/container-definitions';
14
+ import { IDataStore } from '@fluidframework/runtime-definitions';
15
+ import { IDeltaManager } from '@fluidframework/container-definitions';
16
+ import { IDisposable } from '@fluidframework/core-interfaces';
2
17
  import { IDocumentMessage } from '@fluidframework/protocol-definitions';
18
+ import { IDocumentStorageService } from '@fluidframework/driver-definitions';
19
+ import { IEvent } from '@fluidframework/core-interfaces';
20
+ import { IEventProvider } from '@fluidframework/core-interfaces';
21
+ import { IFluidDataStoreContextDetached } from '@fluidframework/runtime-definitions';
22
+ import { IFluidDataStoreRegistry } from '@fluidframework/runtime-definitions';
23
+ import { IFluidHandle } from '@fluidframework/core-interfaces';
24
+ import { IFluidHandleContext } from '@fluidframework/core-interfaces';
25
+ import { IFluidRouter } from '@fluidframework/core-interfaces';
26
+ import { IGarbageCollectionData } from '@fluidframework/runtime-definitions';
27
+ import { IGetPendingLocalStateProps } from '@fluidframework/container-definitions';
28
+ import type { IIdCompressor } from '@fluidframework/id-compressor';
29
+ import type { IIdCompressorCore } from '@fluidframework/id-compressor';
30
+ import { ILoader } from '@fluidframework/container-definitions';
31
+ import { ILoaderOptions } from '@fluidframework/container-definitions';
32
+ import { IProvideFluidHandleContext } from '@fluidframework/core-interfaces';
3
33
  import { IQuorumClients } from '@fluidframework/protocol-definitions';
34
+ import { IRequest } from '@fluidframework/core-interfaces';
35
+ import { IResponse } from '@fluidframework/core-interfaces';
36
+ import { IRuntime } from '@fluidframework/container-definitions';
4
37
  import { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
5
38
  import { ISignalMessage } from '@fluidframework/protocol-definitions';
39
+ import { isStableId } from '@fluidframework/id-compressor';
6
40
  import { ISummaryAck } from '@fluidframework/protocol-definitions';
7
41
  import { ISummaryContent } from '@fluidframework/protocol-definitions';
8
42
  import { ISummaryNack } from '@fluidframework/protocol-definitions';
43
+ import { ISummaryStats } from '@fluidframework/runtime-definitions';
9
44
  import { ISummaryTree } from '@fluidframework/protocol-definitions';
45
+ import { ISummaryTreeWithStats } from '@fluidframework/runtime-definitions';
46
+ import { ITelemetryContext } from '@fluidframework/runtime-definitions';
47
+ import { ITelemetryLoggerExt } from '@fluidframework/telemetry-utils';
10
48
  import { MessageType } from '@fluidframework/protocol-definitions';
49
+ import { NamedFluidDataStoreRegistryEntries } from '@fluidframework/runtime-definitions';
50
+ import { TypedEventEmitter } from '@fluid-internal/client-utils';
11
51
 
12
52
  /* Excluded from this release type: agentSchedulerId */
13
53
 
@@ -235,8 +275,6 @@ import { MessageType } from '@fluidframework/protocol-definitions';
235
275
 
236
276
  /* Excluded from this release type: RuntimeMessage */
237
277
 
238
- /* Excluded from this release type: StableId */
239
-
240
278
  /* Excluded from this release type: SubmitSummaryFailureData */
241
279
 
242
280
  /* Excluded from this release type: SubmitSummaryResult */
@@ -1,8 +1,10 @@
1
+ import { assertIsStableId } from '@fluidframework/id-compressor';
1
2
  import { AttachState } from '@fluidframework/container-definitions';
2
3
  import { ContainerWarning } from '@fluidframework/container-definitions';
3
4
  import { FluidDataStoreRegistryEntry } from '@fluidframework/runtime-definitions';
4
5
  import { FluidObject } from '@fluidframework/core-interfaces';
5
6
  import { FlushMode } from '@fluidframework/runtime-definitions';
7
+ import { generateStableId } from '@fluidframework/id-compressor';
6
8
  import { IAudience } from '@fluidframework/container-definitions';
7
9
  import { IClientDetails } from '@fluidframework/protocol-definitions';
8
10
  import { IContainerContext } from '@fluidframework/container-definitions';
@@ -23,8 +25,8 @@ import { IFluidHandleContext } from '@fluidframework/core-interfaces';
23
25
  import { IFluidRouter } from '@fluidframework/core-interfaces';
24
26
  import { IGarbageCollectionData } from '@fluidframework/runtime-definitions';
25
27
  import { IGetPendingLocalStateProps } from '@fluidframework/container-definitions';
26
- import { IIdCompressor } from '@fluidframework/runtime-definitions';
27
- import { IIdCompressorCore } from '@fluidframework/runtime-definitions';
28
+ import type { IIdCompressor } from '@fluidframework/id-compressor';
29
+ import type { IIdCompressorCore } from '@fluidframework/id-compressor';
28
30
  import { ILoader } from '@fluidframework/container-definitions';
29
31
  import { ILoaderOptions } from '@fluidframework/container-definitions';
30
32
  import { IProvideFluidHandleContext } from '@fluidframework/core-interfaces';
@@ -34,6 +36,7 @@ import { IResponse } from '@fluidframework/core-interfaces';
34
36
  import { IRuntime } from '@fluidframework/container-definitions';
35
37
  import { ISequencedDocumentMessage } from '@fluidframework/protocol-definitions';
36
38
  import { ISignalMessage } from '@fluidframework/protocol-definitions';
39
+ import { isStableId } from '@fluidframework/id-compressor';
37
40
  import { ISummaryAck } from '@fluidframework/protocol-definitions';
38
41
  import { ISummaryContent } from '@fluidframework/protocol-definitions';
39
42
  import { ISummaryNack } from '@fluidframework/protocol-definitions';
@@ -44,7 +47,6 @@ import { ITelemetryContext } from '@fluidframework/runtime-definitions';
44
47
  import { ITelemetryLoggerExt } from '@fluidframework/telemetry-utils';
45
48
  import { MessageType } from '@fluidframework/protocol-definitions';
46
49
  import { NamedFluidDataStoreRegistryEntries } from '@fluidframework/runtime-definitions';
47
- import { StableId } from '@fluidframework/runtime-definitions';
48
50
  import { TypedEventEmitter } from '@fluid-internal/client-utils';
49
51
 
50
52
  /**
@@ -66,11 +68,7 @@ export declare const AllowInactiveRequestHeaderKey = "allowInactive";
66
68
  */
67
69
  export declare const AllowTombstoneRequestHeaderKey = "allowTombstone";
68
70
 
69
- /**
70
- * Asserts that the given string is a stable ID.
71
- * @internal
72
- */
73
- export declare function assertIsStableId(stableId: string): StableId;
71
+ export { assertIsStableId }
74
72
 
75
73
  /**
76
74
  * How should an older client handle an unrecognized remote op type?
@@ -106,7 +104,12 @@ export declare enum ContainerMessageType {
106
104
  * the last allocation op was sent.
107
105
  * See the [IdCompressor README](./id-compressor/README.md) for more details.
108
106
  */
109
- IdAllocation = "idAllocation"
107
+ IdAllocation = "idAllocation",
108
+ /**
109
+ * Garbage collection specific op. This is sent by the summarizer client when GC runs. It's used to synchronize GC
110
+ * state across all clients.
111
+ */
112
+ GC = "GC"
110
113
  }
111
114
 
112
115
  /**
@@ -471,27 +474,27 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
471
474
  * @param usedRoutes - The routes that are used in all nodes in this Container.
472
475
  * @see IGarbageCollectionRuntime.updateUsedRoutes
473
476
  */
474
- updateUsedRoutes(usedRoutes: string[]): void;
477
+ updateUsedRoutes(usedRoutes: readonly string[]): void;
475
478
  /**
476
479
  * This is called to update objects whose routes are unused.
477
480
  * @param unusedRoutes - Data store and attachment blob routes that are unused in this Container.
478
481
  */
479
- updateUnusedRoutes(unusedRoutes: string[]): void;
482
+ updateUnusedRoutes(unusedRoutes: readonly string[]): void;
480
483
  /**
481
484
  * @deprecated Replaced by deleteSweepReadyNodes.
482
485
  */
483
- deleteUnusedNodes(unusedRoutes: string[]): string[];
486
+ deleteUnusedNodes(unusedRoutes: readonly string[]): string[];
484
487
  /**
485
488
  * After GC has run and identified nodes that are sweep ready, this is called to delete the sweep ready nodes.
486
489
  * @param sweepReadyRoutes - The routes of nodes that are sweep ready and should be deleted.
487
490
  * @returns The routes of nodes that were deleted.
488
491
  */
489
- deleteSweepReadyNodes(sweepReadyRoutes: string[]): string[];
492
+ deleteSweepReadyNodes(sweepReadyRoutes: readonly string[]): readonly string[];
490
493
  /**
491
494
  * This is called to update objects that are tombstones.
492
495
  * @param tombstonedRoutes - Data store and attachment blob routes that are tombstones in this Container.
493
496
  */
494
- updateTombstonedRoutes(tombstonedRoutes: string[]): void;
497
+ updateTombstonedRoutes(tombstonedRoutes: readonly string[]): void;
495
498
  /**
496
499
  * Returns a server generated referenced timestamp to be used to track unreferenced nodes by GC.
497
500
  */
@@ -546,7 +549,7 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
546
549
  */
547
550
  submitSummary(options: ISubmitSummaryOptions): Promise<SubmitSummaryResult>;
548
551
  /**
549
- * This helper is called during summarization. If there are pending ops, it will return a failed summarize result
552
+ * This helper is called during summarization. If the container is dirty, it will return a failed summarize result
550
553
  * (IBaseSummarizeResult) unless this is the final summarize attempt and SkipFailingIncorrectSummary option is set.
551
554
  * @param logger - The logger to be used for sending telemetry.
552
555
  * @param referenceSequenceNumber - The reference sequence number of the summary attempt.
@@ -577,6 +580,7 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
577
580
  /**
578
581
  * Finds the right store and asks it to resubmit the message. This typically happens when we
579
582
  * reconnect and there are pending messages.
583
+ * ! Note: successfully resubmitting an op that has been successfully sequenced is not possible due to checks in the ConnectionStateHandler (Loader layer)
580
584
  * @param message - The original LocalContainerRuntimeMessage.
581
585
  * @param localOpMetadata - The local metadata associated with the original message.
582
586
  */
@@ -673,23 +677,25 @@ export declare class FluidDataStoreRegistry implements IFluidDataStoreRegistry {
673
677
  }
674
678
 
675
679
  /**
676
- * @see IGCMetadata.gcFeatureMatrix
680
+ * @see IGCMetadata.gcFeatureMatrix and @see gcGenerationOptionName
677
681
  * @alpha
678
682
  */
679
- export declare interface GCFeatureMatrix {
683
+ export declare type GCFeatureMatrix = {
680
684
  /**
681
- * The Tombstone Generation value in effect when this file was created.
682
- * Gives a way for an app to disqualify old files from GC Tombstone enforcement.
685
+ * The GC Generation value in effect when this file was created.
686
+ * Gives a way for an app to disqualify old files from GC Sweep.
683
687
  * Provided via Container Runtime Options.
684
688
  */
685
- tombstoneGeneration?: number;
689
+ gcGeneration?: number;
690
+ /** Deprecated property from legacy type. Will not be set concurrently with gcGeneration */
691
+ tombstoneGeneration?: undefined;
692
+ } | {
686
693
  /**
687
- * The Sweep Generation value in effect when this file was created.
688
- * Gives a way for an app to disqualify old files from GC Sweep.
689
- * Provided via Container Runtime Options.
694
+ * The Tombstone Generation value in effect when this file was created.
695
+ * Legacy - new containers would get gcGeneration instead (if anything)
690
696
  */
691
- sweepGeneration?: number;
692
- }
697
+ tombstoneGeneration: number;
698
+ };
693
699
 
694
700
  /**
695
701
  * The types of GC nodes in the GC reference graph.
@@ -712,11 +718,7 @@ export declare type GCNodeType = (typeof GCNodeType)[keyof typeof GCNodeType];
712
718
  */
713
719
  export declare type GCVersion = number;
714
720
 
715
- /**
716
- * Generate a random stable ID
717
- * @internal
718
- */
719
- export declare function generateStableId(): StableId;
721
+ export { generateStableId }
720
722
 
721
723
  /**
722
724
  * A single summary which has already been acked by the server.
@@ -998,7 +1000,7 @@ export declare interface IGCMetadata {
998
1000
  * - True means sweep phase is enabled.
999
1001
  * - False means sweep phase is disabled. If GC is disabled as per gcFeature, sweep is also disabled.
1000
1002
  *
1001
- * @deprecated use GCFeatureMatrix.sweepGeneration instead. @see GCFeatureMatrix.sweepGeneration
1003
+ * @deprecated use GCFeatureMatrix.gcGeneration instead. @see GCFeatureMatrix.gcGeneration
1002
1004
  */
1003
1005
  readonly sweepEnabled?: boolean;
1004
1006
  /** If this is present, the session for this container will expire after this time and the container will close */
@@ -1017,7 +1019,7 @@ export declare interface IGCRuntimeOptions {
1017
1019
  * GC has mark phase and sweep phase. In mark phase, unreferenced objects are identified
1018
1020
  * and marked as such in the summary. This option enables the mark phase.
1019
1021
  * In sweep phase, unreferenced objects are eventually deleted from the container if they meet certain conditions.
1020
- * Sweep phase can be enabled using the "gcSweepGeneration" option.
1022
+ * Sweep phase can be enabled using the "enableGCSweep" option.
1021
1023
  *
1022
1024
  * Note: This setting is persisted in the container's summary and cannot be changed.
1023
1025
  */
@@ -1027,6 +1029,16 @@ export declare interface IGCRuntimeOptions {
1027
1029
  * Can be used to disable running GC on containers where it is allowed via the gcAllowed option.
1028
1030
  */
1029
1031
  disableGC?: boolean;
1032
+ /**
1033
+ * Flag that if true, will enable the full Sweep Phase of garbage collection for this session,
1034
+ * where Tombstoned objects are permanently deleted from the container.
1035
+ *
1036
+ * IMPORTANT: This only applies if this document is allowed to run Sweep Phase.
1037
+ *
1038
+ * Current default behavior is for Sweep Phase not to delete Tombstoned objects,
1039
+ * but merely to prevent them from being loaded.
1040
+ */
1041
+ enableGCSweep?: true;
1030
1042
  /**
1031
1043
  * Flag that will bypass optimizations and generate GC data for all nodes irrespective of whether a node
1032
1044
  * changed or not.
@@ -1038,6 +1050,12 @@ export declare interface IGCRuntimeOptions {
1038
1050
  * Note: This setting is persisted in the container's summary and cannot be changed.
1039
1051
  */
1040
1052
  sessionExpiryTimeoutMs?: number;
1053
+ /**
1054
+ * Delay between when Tombstone should run and when the object should be deleted.
1055
+ * This grace period gives a chance to intervene to recover if needed, before Sweep deletes the object.
1056
+ * If not present, a default (non-zero) value will be used.
1057
+ */
1058
+ sweepGracePeriodMs?: number;
1041
1059
  /**
1042
1060
  * Allows additional GC options to be passed.
1043
1061
  */
@@ -1183,12 +1201,7 @@ export declare interface ISerializedElection {
1183
1201
  */
1184
1202
  export declare function isRuntimeMessage(message: ISequencedDocumentMessage): boolean;
1185
1203
 
1186
- /**
1187
- * Returns true iff the given string is a valid Version 4, variant 2 UUID
1188
- * 'xxxxxxxx-xxxx-4xxx-vxxx-xxxxxxxxxxxx'
1189
- * @internal
1190
- */
1191
- export declare function isStableId(str: string): str is StableId;
1204
+ export { isStableId }
1192
1205
 
1193
1206
  /**
1194
1207
  * Results of submitSummary after submitting the summarize op.
@@ -9,7 +9,8 @@ import { TypedEventEmitter } from "@fluid-internal/client-utils";
9
9
  import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
10
10
  import { IDocumentStorageService } from "@fluidframework/driver-definitions";
11
11
  import { IClientDetails, IDocumentMessage, IQuorumClients, ISequencedDocumentMessage, ISignalMessage, ISummaryTree, MessageType } from "@fluidframework/protocol-definitions";
12
- import { FlushMode, IFluidDataStoreContextDetached, IFluidDataStoreRegistry, IGarbageCollectionData, NamedFluidDataStoreRegistryEntries, ISummaryTreeWithStats, IDataStore, ITelemetryContext, IIdCompressor, IIdCompressorCore, SerializedIdCompressorWithOngoingSession } from "@fluidframework/runtime-definitions";
12
+ import { FlushMode, IFluidDataStoreContextDetached, IFluidDataStoreRegistry, IGarbageCollectionData, NamedFluidDataStoreRegistryEntries, ISummaryTreeWithStats, IDataStore, ITelemetryContext } from "@fluidframework/runtime-definitions";
13
+ import type { IIdCompressor, IIdCompressorCore, SerializedIdCompressorWithOngoingSession } from "@fluidframework/id-compressor";
13
14
  import { IPendingLocalState } from "./pendingStateManager";
14
15
  import { IBlobManagerLoadInfo, IPendingBlobs } from "./blobManager";
15
16
  import { IContainerRuntimeMetadata, ISerializedElection, SubmitSummaryResult, ISubmitSummaryOptions, ISummarizerInternalsProvider, ISummarizerRuntime, IRefreshSummaryAckOptions, IOnDemandSummarizeOptions, ISummarizeResults, IEnqueueSummarizeOptions, EnqueueSummarizeResult, ISummarizerEvents, ISummarizer } from "./summary";
@@ -700,27 +701,27 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
700
701
  * @param usedRoutes - The routes that are used in all nodes in this Container.
701
702
  * @see IGarbageCollectionRuntime.updateUsedRoutes
702
703
  */
703
- updateUsedRoutes(usedRoutes: string[]): void;
704
+ updateUsedRoutes(usedRoutes: readonly string[]): void;
704
705
  /**
705
706
  * This is called to update objects whose routes are unused.
706
707
  * @param unusedRoutes - Data store and attachment blob routes that are unused in this Container.
707
708
  */
708
- updateUnusedRoutes(unusedRoutes: string[]): void;
709
+ updateUnusedRoutes(unusedRoutes: readonly string[]): void;
709
710
  /**
710
711
  * @deprecated Replaced by deleteSweepReadyNodes.
711
712
  */
712
- deleteUnusedNodes(unusedRoutes: string[]): string[];
713
+ deleteUnusedNodes(unusedRoutes: readonly string[]): string[];
713
714
  /**
714
715
  * After GC has run and identified nodes that are sweep ready, this is called to delete the sweep ready nodes.
715
716
  * @param sweepReadyRoutes - The routes of nodes that are sweep ready and should be deleted.
716
717
  * @returns The routes of nodes that were deleted.
717
718
  */
718
- deleteSweepReadyNodes(sweepReadyRoutes: string[]): string[];
719
+ deleteSweepReadyNodes(sweepReadyRoutes: readonly string[]): readonly string[];
719
720
  /**
720
721
  * This is called to update objects that are tombstones.
721
722
  * @param tombstonedRoutes - Data store and attachment blob routes that are tombstones in this Container.
722
723
  */
723
- updateTombstonedRoutes(tombstonedRoutes: string[]): void;
724
+ updateTombstonedRoutes(tombstonedRoutes: readonly string[]): void;
724
725
  /**
725
726
  * Returns a server generated referenced timestamp to be used to track unreferenced nodes by GC.
726
727
  */
@@ -775,7 +776,7 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
775
776
  */
776
777
  submitSummary(options: ISubmitSummaryOptions): Promise<SubmitSummaryResult>;
777
778
  /**
778
- * This helper is called during summarization. If there are pending ops, it will return a failed summarize result
779
+ * This helper is called during summarization. If the container is dirty, it will return a failed summarize result
779
780
  * (IBaseSummarizeResult) unless this is the final summarize attempt and SkipFailingIncorrectSummary option is set.
780
781
  * @param logger - The logger to be used for sending telemetry.
781
782
  * @param referenceSequenceNumber - The reference sequence number of the summary attempt.
@@ -806,6 +807,7 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
806
807
  /**
807
808
  * Finds the right store and asks it to resubmit the message. This typically happens when we
808
809
  * reconnect and there are pending messages.
810
+ * ! Note: successfully resubmitting an op that has been successfully sequenced is not possible due to checks in the ConnectionStateHandler (Loader layer)
809
811
  * @param message - The original LocalContainerRuntimeMessage.
810
812
  * @param localOpMetadata - The local metadata associated with the original message.
811
813
  */