@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.
- package/api-extractor-esm.json +4 -0
- package/api-report/container-runtime.api.md +2 -2
- package/dist/blobManager.cjs +8 -3
- package/dist/blobManager.cjs.map +1 -1
- package/dist/blobManager.d.ts +8 -3
- package/dist/blobManager.d.ts.map +1 -1
- package/dist/container-runtime-alpha.d.ts +15 -2
- package/dist/container-runtime-untrimmed.d.ts +15 -2
- package/dist/containerRuntime.cjs +4 -0
- package/dist/containerRuntime.cjs.map +1 -1
- package/dist/containerRuntime.d.ts +4 -0
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/dataStoreContext.cjs +2 -2
- package/dist/dataStoreContext.cjs.map +1 -1
- package/dist/dataStoreContext.d.ts +2 -2
- package/dist/dataStores.cjs +5 -2
- package/dist/dataStores.cjs.map +1 -1
- package/dist/dataStores.d.ts +5 -2
- package/dist/dataStores.d.ts.map +1 -1
- package/dist/gc/garbageCollection.cjs +9 -5
- package/dist/gc/garbageCollection.cjs.map +1 -1
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/gcConfigs.cjs +26 -19
- package/dist/gc/gcConfigs.cjs.map +1 -1
- package/dist/gc/gcConfigs.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.cjs +2 -2
- package/dist/gc/gcDefinitions.cjs.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +27 -6
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcTelemetry.cjs +18 -9
- package/dist/gc/gcTelemetry.cjs.map +1 -1
- package/dist/gc/gcTelemetry.d.ts +13 -6
- package/dist/gc/gcTelemetry.d.ts.map +1 -1
- package/dist/gc/index.cjs.map +1 -1
- package/dist/gc/index.d.ts +1 -1
- package/dist/gc/index.d.ts.map +1 -1
- package/dist/opLifecycle/definitions.cjs.map +1 -1
- package/dist/opLifecycle/definitions.d.ts +1 -1
- package/dist/opLifecycle/definitions.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.cjs +4 -1
- package/dist/opLifecycle/outbox.cjs.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +4 -4
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/packageVersion.cjs +1 -1
- package/dist/packageVersion.cjs.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/lib/batchTracker.d.mts +1 -1
- package/lib/batchTracker.d.mts.map +1 -1
- package/lib/blobManager.d.mts +9 -4
- package/lib/blobManager.d.mts.map +1 -1
- package/lib/blobManager.mjs +8 -3
- package/lib/blobManager.mjs.map +1 -1
- package/lib/connectionTelemetry.d.mts +1 -1
- package/lib/connectionTelemetry.d.mts.map +1 -1
- package/lib/container-runtime-alpha.d.mts +15 -2
- package/lib/container-runtime-untrimmed.d.mts +15 -2
- package/lib/containerHandleContext.d.mts +1 -1
- package/lib/containerHandleContext.d.mts.map +1 -1
- package/lib/containerRuntime.d.mts +5 -1
- package/lib/containerRuntime.d.mts.map +1 -1
- package/lib/containerRuntime.mjs +4 -0
- package/lib/containerRuntime.mjs.map +1 -1
- package/lib/dataStore.d.mts +1 -1
- package/lib/dataStore.d.mts.map +1 -1
- package/lib/dataStoreContext.d.mts +3 -3
- package/lib/dataStoreContext.d.mts.map +1 -1
- package/lib/dataStoreContext.mjs +2 -2
- package/lib/dataStoreContext.mjs.map +1 -1
- package/lib/dataStoreContexts.d.mts +1 -1
- package/lib/dataStoreContexts.d.mts.map +1 -1
- package/lib/dataStoreRegistry.d.mts +1 -1
- package/lib/dataStoreRegistry.d.mts.map +1 -1
- package/lib/dataStores.d.mts +6 -3
- package/lib/dataStores.d.mts.map +1 -1
- package/lib/dataStores.mjs +5 -2
- package/lib/dataStores.mjs.map +1 -1
- package/lib/deltaManagerProxyBase.d.mts +1 -1
- package/lib/deltaManagerProxyBase.d.mts.map +1 -1
- package/lib/deltaManagerSummarizerProxy.d.mts +1 -1
- package/lib/deltaManagerSummarizerProxy.d.mts.map +1 -1
- package/lib/deltaScheduler.d.mts +1 -1
- package/lib/deltaScheduler.d.mts.map +1 -1
- package/lib/error.d.mts +1 -1
- package/lib/error.d.mts.map +1 -1
- package/lib/gc/garbageCollection.d.mts +1 -1
- package/lib/gc/garbageCollection.d.mts.map +1 -1
- package/lib/gc/garbageCollection.mjs +9 -5
- package/lib/gc/garbageCollection.mjs.map +1 -1
- package/lib/gc/gcConfigs.d.mts +1 -1
- package/lib/gc/gcConfigs.d.mts.map +1 -1
- package/lib/gc/gcConfigs.mjs +26 -19
- package/lib/gc/gcConfigs.mjs.map +1 -1
- package/lib/gc/gcDefinitions.d.mts +28 -7
- package/lib/gc/gcDefinitions.d.mts.map +1 -1
- package/lib/gc/gcDefinitions.mjs +2 -2
- package/lib/gc/gcDefinitions.mjs.map +1 -1
- package/lib/gc/gcHelpers.d.mts +1 -1
- package/lib/gc/gcHelpers.d.mts.map +1 -1
- package/lib/gc/gcReferenceGraphAlgorithm.d.mts +1 -1
- package/lib/gc/gcReferenceGraphAlgorithm.d.mts.map +1 -1
- package/lib/gc/gcSummaryDefinitions.d.mts +1 -1
- package/lib/gc/gcSummaryDefinitions.d.mts.map +1 -1
- package/lib/gc/gcSummaryStateTracker.d.mts +1 -1
- package/lib/gc/gcSummaryStateTracker.d.mts.map +1 -1
- package/lib/gc/gcTelemetry.d.mts +14 -7
- package/lib/gc/gcTelemetry.d.mts.map +1 -1
- package/lib/gc/gcTelemetry.mjs +18 -9
- package/lib/gc/gcTelemetry.mjs.map +1 -1
- package/lib/gc/gcUnreferencedStateTracker.d.mts +1 -1
- package/lib/gc/gcUnreferencedStateTracker.d.mts.map +1 -1
- package/lib/gc/index.d.mts +2 -2
- package/lib/gc/index.d.mts.map +1 -1
- package/lib/gc/index.mjs.map +1 -1
- package/lib/index.d.mts +1 -1
- package/lib/index.d.mts.map +1 -1
- package/lib/messageTypes.d.mts +1 -1
- package/lib/messageTypes.d.mts.map +1 -1
- package/lib/metadata.d.mts +1 -1
- package/lib/metadata.d.mts.map +1 -1
- package/lib/opLifecycle/batchManager.d.mts +1 -1
- package/lib/opLifecycle/batchManager.d.mts.map +1 -1
- package/lib/opLifecycle/definitions.d.mts +2 -2
- package/lib/opLifecycle/definitions.d.mts.map +1 -1
- package/lib/opLifecycle/definitions.mjs.map +1 -1
- package/lib/opLifecycle/index.d.mts +1 -1
- package/lib/opLifecycle/index.d.mts.map +1 -1
- package/lib/opLifecycle/opCompressor.d.mts +1 -1
- package/lib/opLifecycle/opCompressor.d.mts.map +1 -1
- package/lib/opLifecycle/opDecompressor.d.mts +1 -1
- package/lib/opLifecycle/opDecompressor.d.mts.map +1 -1
- package/lib/opLifecycle/opGroupingManager.d.mts +1 -1
- package/lib/opLifecycle/opGroupingManager.d.mts.map +1 -1
- package/lib/opLifecycle/opSplitter.d.mts +1 -1
- package/lib/opLifecycle/opSplitter.d.mts.map +1 -1
- package/lib/opLifecycle/outbox.d.mts +5 -5
- package/lib/opLifecycle/outbox.d.mts.map +1 -1
- package/lib/opLifecycle/outbox.mjs +4 -1
- package/lib/opLifecycle/outbox.mjs.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.mts +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.mts.map +1 -1
- package/lib/opProperties.d.mts +1 -1
- package/lib/opProperties.d.mts.map +1 -1
- package/lib/packageVersion.d.mts +2 -2
- package/lib/packageVersion.d.mts.map +1 -1
- package/lib/packageVersion.mjs +1 -1
- package/lib/packageVersion.mjs.map +1 -1
- package/lib/pendingStateManager.d.mts +1 -1
- package/lib/pendingStateManager.d.mts.map +1 -1
- package/lib/scheduleManager.d.mts +1 -1
- package/lib/scheduleManager.d.mts.map +1 -1
- package/lib/storageServiceWithAttachBlobs.d.mts +1 -1
- package/lib/storageServiceWithAttachBlobs.d.mts.map +1 -1
- package/lib/summary/index.d.mts +1 -1
- package/lib/summary/index.d.mts.map +1 -1
- package/lib/summary/orderedClientElection.d.mts +1 -1
- package/lib/summary/orderedClientElection.d.mts.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.d.mts +1 -1
- package/lib/summary/runWhileConnectedCoordinator.d.mts.map +1 -1
- package/lib/summary/runningSummarizer.d.mts +1 -1
- package/lib/summary/runningSummarizer.d.mts.map +1 -1
- package/lib/summary/summarizer.d.mts +1 -1
- package/lib/summary/summarizer.d.mts.map +1 -1
- package/lib/summary/summarizerClientElection.d.mts +1 -1
- package/lib/summary/summarizerClientElection.d.mts.map +1 -1
- package/lib/summary/summarizerHeuristics.d.mts +1 -1
- package/lib/summary/summarizerHeuristics.d.mts.map +1 -1
- package/lib/summary/summarizerNode/index.d.mts +1 -1
- package/lib/summary/summarizerNode/index.d.mts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.d.mts +1 -1
- package/lib/summary/summarizerNode/summarizerNode.d.mts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.mts +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.mts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.mts +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.mts.map +1 -1
- package/lib/summary/summarizerTypes.d.mts +1 -1
- package/lib/summary/summarizerTypes.d.mts.map +1 -1
- package/lib/summary/summaryCollection.d.mts +1 -1
- package/lib/summary/summaryCollection.d.mts.map +1 -1
- package/lib/summary/summaryFormat.d.mts +1 -1
- package/lib/summary/summaryFormat.d.mts.map +1 -1
- package/lib/summary/summaryGenerator.d.mts +1 -1
- package/lib/summary/summaryGenerator.d.mts.map +1 -1
- package/lib/summary/summaryManager.d.mts +1 -1
- package/lib/summary/summaryManager.d.mts.map +1 -1
- package/lib/throttler.d.mts +1 -1
- package/lib/throttler.d.mts.map +1 -1
- package/package.json +60 -33
- package/src/blobManager.ts +8 -3
- package/src/containerRuntime.ts +4 -0
- package/src/dataStoreContext.ts +2 -2
- package/src/dataStores.ts +5 -2
- package/src/gc/garbageCollection.ts +9 -5
- package/src/gc/gcConfigs.ts +28 -20
- package/src/gc/gcDefinitions.ts +28 -6
- package/src/gc/gcTelemetry.ts +19 -9
- package/src/gc/index.ts +1 -0
- package/src/opLifecycle/definitions.ts +1 -1
- package/src/opLifecycle/outbox.ts +5 -2
- package/src/packageVersion.ts +1 -1
package/src/gc/gcDefinitions.ts
CHANGED
|
@@ -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
|
|
83
|
-
*
|
|
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
|
-
/**
|
|
152
|
-
|
|
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
|
|
449
|
-
readonly
|
|
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.
|
package/src/gc/gcTelemetry.ts
CHANGED
|
@@ -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.
|
|
70
|
-
*
|
|
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.
|
|
73
|
-
* 3.
|
|
74
|
-
*
|
|
75
|
-
*
|
|
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.
|
|
157
|
+
return this.configs.tombstoneTimeoutMs;
|
|
151
158
|
case UnreferencedState.SweepReady:
|
|
152
159
|
return (
|
|
153
|
-
this.configs.
|
|
154
|
-
this.configs.
|
|
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
|
@@ -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
|
|
469
|
+
mainBatch,
|
|
467
470
|
attachFlowBatch: this.attachFlowBatch.checkpoint(),
|
|
468
471
|
blobAttachBatch: this.blobAttachBatch.checkpoint(),
|
|
469
472
|
};
|
package/src/packageVersion.ts
CHANGED