@fluidframework/container-runtime 2.0.0-dev-rc.1.0.0.224419 → 2.0.0-dev-rc.1.0.0.225277

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 (199) hide show
  1. package/api-extractor-esm.json +4 -0
  2. package/api-report/container-runtime.api.md +2 -2
  3. package/dist/blobManager.cjs +8 -3
  4. package/dist/blobManager.cjs.map +1 -1
  5. package/dist/blobManager.d.ts +8 -3
  6. package/dist/blobManager.d.ts.map +1 -1
  7. package/dist/container-runtime-alpha.d.ts +15 -2
  8. package/dist/container-runtime-untrimmed.d.ts +15 -2
  9. package/dist/containerRuntime.cjs +4 -0
  10. package/dist/containerRuntime.cjs.map +1 -1
  11. package/dist/containerRuntime.d.ts +4 -0
  12. package/dist/containerRuntime.d.ts.map +1 -1
  13. package/dist/dataStoreContext.cjs +2 -2
  14. package/dist/dataStoreContext.cjs.map +1 -1
  15. package/dist/dataStoreContext.d.ts +2 -2
  16. package/dist/dataStores.cjs +5 -2
  17. package/dist/dataStores.cjs.map +1 -1
  18. package/dist/dataStores.d.ts +5 -2
  19. package/dist/dataStores.d.ts.map +1 -1
  20. package/dist/gc/garbageCollection.cjs +9 -5
  21. package/dist/gc/garbageCollection.cjs.map +1 -1
  22. package/dist/gc/garbageCollection.d.ts.map +1 -1
  23. package/dist/gc/gcConfigs.cjs +26 -19
  24. package/dist/gc/gcConfigs.cjs.map +1 -1
  25. package/dist/gc/gcConfigs.d.ts.map +1 -1
  26. package/dist/gc/gcDefinitions.cjs +2 -2
  27. package/dist/gc/gcDefinitions.cjs.map +1 -1
  28. package/dist/gc/gcDefinitions.d.ts +27 -6
  29. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  30. package/dist/gc/gcTelemetry.cjs +18 -9
  31. package/dist/gc/gcTelemetry.cjs.map +1 -1
  32. package/dist/gc/gcTelemetry.d.ts +13 -6
  33. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  34. package/dist/gc/index.cjs.map +1 -1
  35. package/dist/gc/index.d.ts +1 -1
  36. package/dist/gc/index.d.ts.map +1 -1
  37. package/dist/opLifecycle/definitions.cjs.map +1 -1
  38. package/dist/opLifecycle/definitions.d.ts +1 -1
  39. package/dist/opLifecycle/definitions.d.ts.map +1 -1
  40. package/dist/opLifecycle/outbox.cjs +4 -1
  41. package/dist/opLifecycle/outbox.cjs.map +1 -1
  42. package/dist/opLifecycle/outbox.d.ts +4 -4
  43. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  44. package/dist/packageVersion.cjs +1 -1
  45. package/dist/packageVersion.cjs.map +1 -1
  46. package/dist/packageVersion.d.ts +1 -1
  47. package/lib/batchTracker.d.mts +1 -1
  48. package/lib/batchTracker.d.mts.map +1 -1
  49. package/lib/blobManager.d.mts +9 -4
  50. package/lib/blobManager.d.mts.map +1 -1
  51. package/lib/blobManager.mjs +8 -3
  52. package/lib/blobManager.mjs.map +1 -1
  53. package/lib/connectionTelemetry.d.mts +1 -1
  54. package/lib/connectionTelemetry.d.mts.map +1 -1
  55. package/lib/container-runtime-alpha.d.mts +15 -2
  56. package/lib/container-runtime-untrimmed.d.mts +15 -2
  57. package/lib/containerHandleContext.d.mts +1 -1
  58. package/lib/containerHandleContext.d.mts.map +1 -1
  59. package/lib/containerRuntime.d.mts +5 -1
  60. package/lib/containerRuntime.d.mts.map +1 -1
  61. package/lib/containerRuntime.mjs +4 -0
  62. package/lib/containerRuntime.mjs.map +1 -1
  63. package/lib/dataStore.d.mts +1 -1
  64. package/lib/dataStore.d.mts.map +1 -1
  65. package/lib/dataStoreContext.d.mts +3 -3
  66. package/lib/dataStoreContext.d.mts.map +1 -1
  67. package/lib/dataStoreContext.mjs +2 -2
  68. package/lib/dataStoreContext.mjs.map +1 -1
  69. package/lib/dataStoreContexts.d.mts +1 -1
  70. package/lib/dataStoreContexts.d.mts.map +1 -1
  71. package/lib/dataStoreRegistry.d.mts +1 -1
  72. package/lib/dataStoreRegistry.d.mts.map +1 -1
  73. package/lib/dataStores.d.mts +6 -3
  74. package/lib/dataStores.d.mts.map +1 -1
  75. package/lib/dataStores.mjs +5 -2
  76. package/lib/dataStores.mjs.map +1 -1
  77. package/lib/deltaManagerProxyBase.d.mts +1 -1
  78. package/lib/deltaManagerProxyBase.d.mts.map +1 -1
  79. package/lib/deltaManagerSummarizerProxy.d.mts +1 -1
  80. package/lib/deltaManagerSummarizerProxy.d.mts.map +1 -1
  81. package/lib/deltaScheduler.d.mts +1 -1
  82. package/lib/deltaScheduler.d.mts.map +1 -1
  83. package/lib/error.d.mts +1 -1
  84. package/lib/error.d.mts.map +1 -1
  85. package/lib/gc/garbageCollection.d.mts +1 -1
  86. package/lib/gc/garbageCollection.d.mts.map +1 -1
  87. package/lib/gc/garbageCollection.mjs +9 -5
  88. package/lib/gc/garbageCollection.mjs.map +1 -1
  89. package/lib/gc/gcConfigs.d.mts +1 -1
  90. package/lib/gc/gcConfigs.d.mts.map +1 -1
  91. package/lib/gc/gcConfigs.mjs +26 -19
  92. package/lib/gc/gcConfigs.mjs.map +1 -1
  93. package/lib/gc/gcDefinitions.d.mts +28 -7
  94. package/lib/gc/gcDefinitions.d.mts.map +1 -1
  95. package/lib/gc/gcDefinitions.mjs +2 -2
  96. package/lib/gc/gcDefinitions.mjs.map +1 -1
  97. package/lib/gc/gcHelpers.d.mts +1 -1
  98. package/lib/gc/gcHelpers.d.mts.map +1 -1
  99. package/lib/gc/gcReferenceGraphAlgorithm.d.mts +1 -1
  100. package/lib/gc/gcReferenceGraphAlgorithm.d.mts.map +1 -1
  101. package/lib/gc/gcSummaryDefinitions.d.mts +1 -1
  102. package/lib/gc/gcSummaryDefinitions.d.mts.map +1 -1
  103. package/lib/gc/gcSummaryStateTracker.d.mts +1 -1
  104. package/lib/gc/gcSummaryStateTracker.d.mts.map +1 -1
  105. package/lib/gc/gcTelemetry.d.mts +14 -7
  106. package/lib/gc/gcTelemetry.d.mts.map +1 -1
  107. package/lib/gc/gcTelemetry.mjs +18 -9
  108. package/lib/gc/gcTelemetry.mjs.map +1 -1
  109. package/lib/gc/gcUnreferencedStateTracker.d.mts +1 -1
  110. package/lib/gc/gcUnreferencedStateTracker.d.mts.map +1 -1
  111. package/lib/gc/index.d.mts +2 -2
  112. package/lib/gc/index.d.mts.map +1 -1
  113. package/lib/gc/index.mjs.map +1 -1
  114. package/lib/index.d.mts +1 -1
  115. package/lib/index.d.mts.map +1 -1
  116. package/lib/messageTypes.d.mts +1 -1
  117. package/lib/messageTypes.d.mts.map +1 -1
  118. package/lib/metadata.d.mts +1 -1
  119. package/lib/metadata.d.mts.map +1 -1
  120. package/lib/opLifecycle/batchManager.d.mts +1 -1
  121. package/lib/opLifecycle/batchManager.d.mts.map +1 -1
  122. package/lib/opLifecycle/definitions.d.mts +2 -2
  123. package/lib/opLifecycle/definitions.d.mts.map +1 -1
  124. package/lib/opLifecycle/definitions.mjs.map +1 -1
  125. package/lib/opLifecycle/index.d.mts +1 -1
  126. package/lib/opLifecycle/index.d.mts.map +1 -1
  127. package/lib/opLifecycle/opCompressor.d.mts +1 -1
  128. package/lib/opLifecycle/opCompressor.d.mts.map +1 -1
  129. package/lib/opLifecycle/opDecompressor.d.mts +1 -1
  130. package/lib/opLifecycle/opDecompressor.d.mts.map +1 -1
  131. package/lib/opLifecycle/opGroupingManager.d.mts +1 -1
  132. package/lib/opLifecycle/opGroupingManager.d.mts.map +1 -1
  133. package/lib/opLifecycle/opSplitter.d.mts +1 -1
  134. package/lib/opLifecycle/opSplitter.d.mts.map +1 -1
  135. package/lib/opLifecycle/outbox.d.mts +5 -5
  136. package/lib/opLifecycle/outbox.d.mts.map +1 -1
  137. package/lib/opLifecycle/outbox.mjs +4 -1
  138. package/lib/opLifecycle/outbox.mjs.map +1 -1
  139. package/lib/opLifecycle/remoteMessageProcessor.d.mts +1 -1
  140. package/lib/opLifecycle/remoteMessageProcessor.d.mts.map +1 -1
  141. package/lib/opProperties.d.mts +1 -1
  142. package/lib/opProperties.d.mts.map +1 -1
  143. package/lib/packageVersion.d.mts +2 -2
  144. package/lib/packageVersion.d.mts.map +1 -1
  145. package/lib/packageVersion.mjs +1 -1
  146. package/lib/packageVersion.mjs.map +1 -1
  147. package/lib/pendingStateManager.d.mts +1 -1
  148. package/lib/pendingStateManager.d.mts.map +1 -1
  149. package/lib/scheduleManager.d.mts +1 -1
  150. package/lib/scheduleManager.d.mts.map +1 -1
  151. package/lib/storageServiceWithAttachBlobs.d.mts +1 -1
  152. package/lib/storageServiceWithAttachBlobs.d.mts.map +1 -1
  153. package/lib/summary/index.d.mts +1 -1
  154. package/lib/summary/index.d.mts.map +1 -1
  155. package/lib/summary/orderedClientElection.d.mts +1 -1
  156. package/lib/summary/orderedClientElection.d.mts.map +1 -1
  157. package/lib/summary/runWhileConnectedCoordinator.d.mts +1 -1
  158. package/lib/summary/runWhileConnectedCoordinator.d.mts.map +1 -1
  159. package/lib/summary/runningSummarizer.d.mts +1 -1
  160. package/lib/summary/runningSummarizer.d.mts.map +1 -1
  161. package/lib/summary/summarizer.d.mts +1 -1
  162. package/lib/summary/summarizer.d.mts.map +1 -1
  163. package/lib/summary/summarizerClientElection.d.mts +1 -1
  164. package/lib/summary/summarizerClientElection.d.mts.map +1 -1
  165. package/lib/summary/summarizerHeuristics.d.mts +1 -1
  166. package/lib/summary/summarizerHeuristics.d.mts.map +1 -1
  167. package/lib/summary/summarizerNode/index.d.mts +1 -1
  168. package/lib/summary/summarizerNode/index.d.mts.map +1 -1
  169. package/lib/summary/summarizerNode/summarizerNode.d.mts +1 -1
  170. package/lib/summary/summarizerNode/summarizerNode.d.mts.map +1 -1
  171. package/lib/summary/summarizerNode/summarizerNodeUtils.d.mts +1 -1
  172. package/lib/summary/summarizerNode/summarizerNodeUtils.d.mts.map +1 -1
  173. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.mts +1 -1
  174. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.mts.map +1 -1
  175. package/lib/summary/summarizerTypes.d.mts +1 -1
  176. package/lib/summary/summarizerTypes.d.mts.map +1 -1
  177. package/lib/summary/summaryCollection.d.mts +1 -1
  178. package/lib/summary/summaryCollection.d.mts.map +1 -1
  179. package/lib/summary/summaryFormat.d.mts +1 -1
  180. package/lib/summary/summaryFormat.d.mts.map +1 -1
  181. package/lib/summary/summaryGenerator.d.mts +1 -1
  182. package/lib/summary/summaryGenerator.d.mts.map +1 -1
  183. package/lib/summary/summaryManager.d.mts +1 -1
  184. package/lib/summary/summaryManager.d.mts.map +1 -1
  185. package/lib/throttler.d.mts +1 -1
  186. package/lib/throttler.d.mts.map +1 -1
  187. package/package.json +60 -33
  188. package/src/blobManager.ts +8 -3
  189. package/src/containerRuntime.ts +4 -0
  190. package/src/dataStoreContext.ts +2 -2
  191. package/src/dataStores.ts +5 -2
  192. package/src/gc/garbageCollection.ts +9 -5
  193. package/src/gc/gcConfigs.ts +28 -20
  194. package/src/gc/gcDefinitions.ts +28 -6
  195. package/src/gc/gcTelemetry.ts +19 -9
  196. package/src/gc/index.ts +1 -0
  197. package/src/opLifecycle/definitions.ts +1 -1
  198. package/src/opLifecycle/outbox.ts +5 -2
  199. package/src/packageVersion.ts +1 -1
@@ -79,8 +79,8 @@ export const disableAttachmentBlobSweepKey = "Fluid.GarbageCollection.DisableAtt
79
79
  export const oneDayMs = 1 * 24 * 60 * 60 * 1000;
80
80
 
81
81
  /**
82
- * The maximum snapshot cache expiry in the driver. This is used to calculate the sweep timeout.
83
- * Sweep timeout = session expiry timeout + snapshot cache expiry timeout + a buffer.
82
+ * The maximum snapshot cache expiry in the driver. This is used to calculate the tombstone timeout.
83
+ * Tombstone timeout = session expiry timeout + snapshot cache expiry timeout + a buffer.
84
84
  * The snapshot cache expiry timeout cannot be known precisely but the upper bound is 5 days, i.e., any snapshot
85
85
  * in cache will be invalidated before 5 days.
86
86
  */
@@ -114,6 +114,21 @@ export type GCFeatureMatrix =
114
114
  };
115
115
 
116
116
  /**
117
+ * Deprecated properties formerly included in @see IGCMetadata.
118
+ * These may be found in old snapshots, so we need to support them for backwards compatibility.
119
+ */
120
+ export interface IGCMetadata_Deprecated {
121
+ /**
122
+ * How long to wait after an object is unreferenced before deleting it via GC Sweep
123
+ *
124
+ * @deprecated Replaced by @see IGCMetadata.tombstoneTimeoutMs
125
+ */
126
+ readonly sweepTimeoutMs?: number;
127
+ }
128
+
129
+ /**
130
+ * GC-specific metadata to be written into the summary.
131
+ *
117
132
  * @alpha
118
133
  */
119
134
  export interface IGCMetadata {
@@ -148,8 +163,15 @@ export interface IGCMetadata {
148
163
  readonly sweepEnabled?: boolean;
149
164
  /** If this is present, the session for this container will expire after this time and the container will close */
150
165
  readonly sessionExpiryTimeoutMs?: number;
151
- /** How long to wait after an object is unreferenced before deleting it via GC Sweep */
152
- readonly sweepTimeoutMs?: number;
166
+ /**
167
+ * How long to wait after an object is unreferenced before it becomes a Tombstone.
168
+ *
169
+ * After this point, there's a grace period before the object is deleted.
170
+ * @see IGCRuntimeOptions.sweepGracePeriodMs
171
+ *
172
+ * So the full sweep timeout in a session is tombstoneTimeoutMs + sweepGracePeriodMs.
173
+ */
174
+ readonly tombstoneTimeoutMs?: number;
153
175
  }
154
176
 
155
177
  /**
@@ -445,8 +467,8 @@ export interface IGarbageCollectorConfigs {
445
467
  readonly runFullGC: boolean | undefined;
446
468
  /** The time in ms to expire a session for a client for gc. */
447
469
  readonly sessionExpiryTimeoutMs: number | undefined;
448
- /** The time after which an unreferenced node is ready to be swept. */
449
- readonly sweepTimeoutMs: number | undefined;
470
+ /** The time after which an unreferenced node can be Tombstoned - i.e. GC knows it can't be referenced again (revived). */
471
+ readonly tombstoneTimeoutMs: number | undefined;
450
472
  /**
451
473
  * The delay between tombstone and sweep. Not persisted, so concurrent sessions may use different values.
452
474
  * Sweep is implemented in an eventually-consistent way so this is acceptable.
@@ -66,13 +66,20 @@ interface INodeUsageProps extends ICommonProps {
66
66
  }
67
67
 
68
68
  /**
69
- * Encapsulates the logic that tracks the various telemetry logged by the Garbage Collector. There are 4 types of
70
- * telemetry logged:
69
+ * Encapsulates the logic that tracks the various telemetry logged by the Garbage Collector.
70
+ *
71
+ * These events are not logged as errors, just generic events, since there can be false positives:
72
+ *
71
73
  * 1. inactiveObject telemetry - When an inactive node is used - A node that has been unreferenced for inactiveTimeoutMs.
72
- * 2. sweepReadyObject telemetry - When a sweep ready node is used - A node that has been unreferenced for sweepTimeoutMs.
73
- * 3. Tombstone telemetry - When a tombstoned node is used - A node that that has been marked as tombstone.
74
- * 4. Sweep / deleted telemetry - When a node is detected as sweep ready in the sweep phase.
75
- * 5. Unknown outbound reference telemetry - When a node is referenced but GC is not explicitly notified of it.
74
+ * 2. tombstoneReadyObject telemetry - When a tombstone-ready node is used - A node that has been unreferenced for tombstoneTimeoutMs.
75
+ * 3. sweepReadyObject telemetry - When a sweep-ready node is used - A node that has been unreferenced for tombstoneTimeoutMs + sweepGracePeriodMs.
76
+ *
77
+ * These events are logged as errors since they are based on the core GC logic:
78
+ *
79
+ * 1. Tombstone telemetry - When a tombstoned node is used - A node that has been marked as tombstone.
80
+ * 2. Unknown outbound reference telemetry - When a node is referenced but GC was not notified of it when the new reference appeared.
81
+ *
82
+ * Note: The telemetry for a Deleted node being used is logged elsewhere in this package.
76
83
  */
77
84
  export class GCTelemetryTracker {
78
85
  // Keeps track of unreferenced events that are logged for a node. This is used to limit the log generation to one
@@ -147,11 +154,11 @@ export class GCTelemetryTracker {
147
154
  case UnreferencedState.Inactive:
148
155
  return this.configs.inactiveTimeoutMs;
149
156
  case UnreferencedState.TombstoneReady:
150
- return this.configs.sweepTimeoutMs;
157
+ return this.configs.tombstoneTimeoutMs;
151
158
  case UnreferencedState.SweepReady:
152
159
  return (
153
- this.configs.sweepTimeoutMs &&
154
- this.configs.sweepTimeoutMs + this.configs.sweepGracePeriodMs
160
+ this.configs.tombstoneTimeoutMs &&
161
+ this.configs.tombstoneTimeoutMs + this.configs.sweepGracePeriodMs
155
162
  );
156
163
  default:
157
164
  return undefined;
@@ -389,6 +396,9 @@ export class GCTelemetryTracker {
389
396
  fromPkg: fromPkg?.join("/"),
390
397
  }),
391
398
  };
399
+
400
+ // These are logged as generic events and not errors because there can be false positives. The Tombstone
401
+ // and Delete errors are separately logged and are reliable.
392
402
  logger.sendTelemetryEvent(event);
393
403
  }
394
404
  }
package/src/gc/index.ts CHANGED
@@ -21,6 +21,7 @@ export {
21
21
  IGarbageCollectorConfigs,
22
22
  IGarbageCollectorCreateParams,
23
23
  IGCMetadata,
24
+ IGCMetadata_Deprecated,
24
25
  IGCResult,
25
26
  IGCRuntimeOptions,
26
27
  IMarkPhaseStats,
@@ -5,7 +5,7 @@
5
5
 
6
6
  import { IBatchMessage } from "@fluidframework/container-definitions";
7
7
  import { ISequencedDocumentMessage, MessageType } from "@fluidframework/protocol-definitions";
8
- import { CompressionAlgorithms } from "..";
8
+ import { CompressionAlgorithms } from "../containerRuntime";
9
9
  import { ContainerMessageType } from "../messageTypes";
10
10
 
11
11
  /**
@@ -20,7 +20,7 @@ import {
20
20
  estimateSocketSize,
21
21
  sequenceNumbersMatch,
22
22
  } from "./batchManager";
23
- import { BatchMessage, IBatch } from "./definitions";
23
+ import { BatchMessage, IBatch, IBatchCheckpoint } from "./definitions";
24
24
  import { OpCompressor } from "./opCompressor";
25
25
  import { OpGroupingManager } from "./opGroupingManager";
26
26
  import { OpSplitter } from "./opSplitter";
@@ -462,8 +462,11 @@ export class Outbox {
462
462
  }
463
463
 
464
464
  public checkpoint() {
465
+ // This variable is declared with a specific type so that we have a standard import of the IBatchCheckpoint type.
466
+ // When the type is inferred, the generated .d.ts uses a dynamic import which doesn't resolve.
467
+ const mainBatch: IBatchCheckpoint = this.mainBatch.checkpoint();
465
468
  return {
466
- mainBatch: this.mainBatch.checkpoint(),
469
+ mainBatch,
467
470
  attachFlowBatch: this.attachFlowBatch.checkpoint(),
468
471
  blobAttachBatch: this.blobAttachBatch.checkpoint(),
469
472
  };
@@ -6,4 +6,4 @@
6
6
  */
7
7
 
8
8
  export const pkgName = "@fluidframework/container-runtime";
9
- export const pkgVersion = "2.0.0-dev-rc.1.0.0.224419";
9
+ export const pkgVersion = "2.0.0-dev-rc.1.0.0.225277";