@fluidframework/container-runtime 2.10.0 → 2.12.0
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/CHANGELOG.md +99 -0
- package/api-report/container-runtime.legacy.alpha.api.md +17 -15
- package/container-runtime.test-files.tar +0 -0
- package/dist/containerRuntime.d.ts +38 -5
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +40 -27
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStoreContext.d.ts +15 -2
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +39 -1
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStoreRegistry.d.ts +1 -0
- package/dist/dataStoreRegistry.d.ts.map +1 -1
- package/dist/dataStoreRegistry.js +10 -2
- package/dist/dataStoreRegistry.js.map +1 -1
- package/dist/gc/garbageCollection.d.ts +2 -0
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +40 -11
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcSummaryStateTracker.d.ts +0 -7
- package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/dist/gc/gcSummaryStateTracker.js +0 -12
- package/dist/gc/gcSummaryStateTracker.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/messageTypes.d.ts +3 -39
- package/dist/messageTypes.d.ts.map +1 -1
- package/dist/messageTypes.js.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.js +1 -5
- package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +2 -3
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.d.ts +2 -1
- package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/dist/summary/runningSummarizer.d.ts +8 -1
- package/dist/summary/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/runningSummarizer.js +70 -8
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summarizer.d.ts +5 -2
- package/dist/summary/summarizer.d.ts.map +1 -1
- package/dist/summary/summarizer.js +39 -6
- package/dist/summary/summarizer.js.map +1 -1
- package/dist/summary/summarizerTypes.d.ts +8 -4
- package/dist/summary/summarizerTypes.d.ts.map +1 -1
- package/dist/summary/summarizerTypes.js.map +1 -1
- package/dist/summary/summaryManager.d.ts +5 -2
- package/dist/summary/summaryManager.d.ts.map +1 -1
- package/dist/summary/summaryManager.js +23 -6
- package/dist/summary/summaryManager.js.map +1 -1
- package/lib/containerRuntime.d.ts +38 -5
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +40 -27
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStoreContext.d.ts +15 -2
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +40 -2
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/dataStoreRegistry.d.ts +1 -0
- package/lib/dataStoreRegistry.d.ts.map +1 -1
- package/lib/dataStoreRegistry.js +8 -0
- package/lib/dataStoreRegistry.js.map +1 -1
- package/lib/gc/garbageCollection.d.ts +2 -0
- package/lib/gc/garbageCollection.d.ts.map +1 -1
- package/lib/gc/garbageCollection.js +40 -11
- package/lib/gc/garbageCollection.js.map +1 -1
- package/lib/gc/gcSummaryStateTracker.d.ts +0 -7
- package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/lib/gc/gcSummaryStateTracker.js +0 -12
- package/lib/gc/gcSummaryStateTracker.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/messageTypes.d.ts +3 -39
- package/lib/messageTypes.d.ts.map +1 -1
- package/lib/messageTypes.js.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.js +1 -5
- package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/pendingStateManager.d.ts.map +1 -1
- package/lib/pendingStateManager.js +2 -3
- package/lib/pendingStateManager.js.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.d.ts +2 -1
- package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/lib/summary/runningSummarizer.d.ts +8 -1
- package/lib/summary/runningSummarizer.d.ts.map +1 -1
- package/lib/summary/runningSummarizer.js +70 -8
- package/lib/summary/runningSummarizer.js.map +1 -1
- package/lib/summary/summarizer.d.ts +5 -2
- package/lib/summary/summarizer.d.ts.map +1 -1
- package/lib/summary/summarizer.js +39 -6
- package/lib/summary/summarizer.js.map +1 -1
- package/lib/summary/summarizerTypes.d.ts +8 -4
- package/lib/summary/summarizerTypes.d.ts.map +1 -1
- package/lib/summary/summarizerTypes.js.map +1 -1
- package/lib/summary/summaryManager.d.ts +5 -2
- package/lib/summary/summaryManager.d.ts.map +1 -1
- package/lib/summary/summaryManager.js +23 -6
- package/lib/summary/summaryManager.js.map +1 -1
- package/package.json +21 -73
- package/src/containerRuntime.ts +94 -44
- package/src/dataStoreContext.ts +57 -1
- package/src/dataStoreRegistry.ts +10 -0
- package/src/gc/garbageCollection.ts +41 -11
- package/src/gc/gcSummaryStateTracker.ts +0 -13
- package/src/index.ts +1 -3
- package/src/messageTypes.ts +3 -50
- package/src/opLifecycle/remoteMessageProcessor.ts +1 -6
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +2 -3
- package/src/summary/runWhileConnectedCoordinator.ts +2 -5
- package/src/summary/runningSummarizer.ts +82 -11
- package/src/summary/summarizer.ts +49 -10
- package/src/summary/summarizerTypes.ts +11 -4
- package/src/summary/summaryManager.ts +30 -10
package/lib/containerRuntime.js
CHANGED
|
@@ -255,6 +255,10 @@ export async function loadContainerRuntime(params) {
|
|
|
255
255
|
/**
|
|
256
256
|
* Represents the runtime of the container. Contains helper functions/state of the container.
|
|
257
257
|
* It will define the store level mappings.
|
|
258
|
+
*
|
|
259
|
+
* @deprecated To be removed from the Legacy-Alpha API in version 2.20.0.
|
|
260
|
+
* Use the loadContainerRuntime function and interfaces IContainerRuntime / IRuntime instead.
|
|
261
|
+
*
|
|
258
262
|
* @legacy
|
|
259
263
|
* @alpha
|
|
260
264
|
*/
|
|
@@ -421,7 +425,8 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
421
425
|
runtime.onSchemaChange(schema);
|
|
422
426
|
});
|
|
423
427
|
const featureGatesForTelemetry = {};
|
|
424
|
-
|
|
428
|
+
// Make sure we've got all the options including internal ones
|
|
429
|
+
const internalRuntimeOptions = {
|
|
425
430
|
summaryOptions,
|
|
426
431
|
gcOptions,
|
|
427
432
|
loadSequenceNumberVerification,
|
|
@@ -433,7 +438,8 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
433
438
|
enableRuntimeIdCompressor: enableRuntimeIdCompressor,
|
|
434
439
|
enableGroupedBatching,
|
|
435
440
|
explicitSchemaControl,
|
|
436
|
-
}
|
|
441
|
+
};
|
|
442
|
+
const runtime = new containerRuntimeCtor(context, registry, metadata, electedSummarizerData, chunks ?? [], aliases ?? [], internalRuntimeOptions, containerScope, logger, existing, blobManagerSnapshot, context.storage, createIdCompressorFn, documentSchemaController, featureGatesForTelemetry, provideEntryPoint, requestHandler, undefined, // summaryConfiguration
|
|
437
443
|
recentBatchInfo);
|
|
438
444
|
runtime.blobManager.stashedBlobsUploadP.then(() => {
|
|
439
445
|
// make sure we didn't reconnect before the promise resolved
|
|
@@ -593,7 +599,6 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
593
599
|
super();
|
|
594
600
|
this.registry = registry;
|
|
595
601
|
this.metadata = metadata;
|
|
596
|
-
this.runtimeOptions = runtimeOptions;
|
|
597
602
|
this.containerScope = containerScope;
|
|
598
603
|
this.baseLogger = baseLogger;
|
|
599
604
|
this._storage = _storage;
|
|
@@ -632,6 +637,12 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
632
637
|
expiry: { policy: "absolute", durationMs: 60000 },
|
|
633
638
|
});
|
|
634
639
|
const { options, clientDetails, connected, baseSnapshot, submitFn, submitBatchFn, submitSummaryFn, submitSignalFn, disposeFn, closeFn, deltaManager, quorum, audience, loader, pendingLocalState, supportedFeatures, snapshotWithContents, } = context;
|
|
640
|
+
// Backfill in defaults for the internal runtimeOptions, since they may not be present on the provided runtimeOptions object
|
|
641
|
+
this.runtimeOptions = {
|
|
642
|
+
flushMode: defaultFlushMode,
|
|
643
|
+
enableGroupedBatching: true,
|
|
644
|
+
...runtimeOptions,
|
|
645
|
+
};
|
|
635
646
|
this.logger = createChildLogger({ logger: this.baseLogger });
|
|
636
647
|
this.mc = createChildMonitoringContext({
|
|
637
648
|
logger: this.logger,
|
|
@@ -753,14 +764,15 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
753
764
|
this.maxConsecutiveReconnects =
|
|
754
765
|
this.mc.config.getNumber(maxConsecutiveReconnectsKey) ??
|
|
755
766
|
this.defaultMaxConsecutiveReconnects;
|
|
756
|
-
if (runtimeOptions.flushMode ===
|
|
767
|
+
if (this.runtimeOptions.flushMode ===
|
|
768
|
+
FlushModeExperimental.Async &&
|
|
757
769
|
supportedFeatures?.get("referenceSequenceNumbers") !== true) {
|
|
758
770
|
// The loader does not support reference sequence numbers, falling back on FlushMode.TurnBased
|
|
759
771
|
this.mc.logger.sendErrorEvent({ eventName: "FlushModeFallback" });
|
|
760
772
|
this._flushMode = FlushMode.TurnBased;
|
|
761
773
|
}
|
|
762
774
|
else {
|
|
763
|
-
this._flushMode = runtimeOptions.flushMode;
|
|
775
|
+
this._flushMode = this.runtimeOptions.flushMode;
|
|
764
776
|
}
|
|
765
777
|
this.offlineEnabled =
|
|
766
778
|
this.mc.config.getBoolean("Fluid.Container.enableOfflineLoad") ?? false;
|
|
@@ -970,8 +982,17 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
970
982
|
formExponentialFn({ coefficient: 20, initialDelay: 0 })), {
|
|
971
983
|
initialDelayMs: this.initialSummarizerDelayMs,
|
|
972
984
|
});
|
|
973
|
-
|
|
974
|
-
|
|
985
|
+
// Forward events from SummaryManager
|
|
986
|
+
[
|
|
987
|
+
"summarize",
|
|
988
|
+
"summarizeAllAttemptsFailed",
|
|
989
|
+
"summarizerStop",
|
|
990
|
+
"summarizerStart",
|
|
991
|
+
"summarizerStartupFailed",
|
|
992
|
+
].forEach((eventName) => {
|
|
993
|
+
this.summaryManager?.on(eventName, (...args) => {
|
|
994
|
+
this.emit(eventName, ...args);
|
|
995
|
+
});
|
|
975
996
|
});
|
|
976
997
|
this.summaryManager.start();
|
|
977
998
|
}
|
|
@@ -1484,18 +1505,18 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
1484
1505
|
this.flush();
|
|
1485
1506
|
}
|
|
1486
1507
|
this._connected = connected;
|
|
1487
|
-
if (
|
|
1488
|
-
this._signalTracking.signalsLost = 0;
|
|
1489
|
-
this._signalTracking.signalsOutOfOrder = 0;
|
|
1490
|
-
this._signalTracking.signalTimestamp = 0;
|
|
1491
|
-
this._signalTracking.signalsSentSinceLastLatencyMeasurement = 0;
|
|
1492
|
-
this._signalTracking.totalSignalsSentInLatencyWindow = 0;
|
|
1493
|
-
this._signalTracking.roundTripSignalSequenceNumber = undefined;
|
|
1494
|
-
this._signalTracking.trackingSignalSequenceNumber = undefined;
|
|
1495
|
-
this._signalTracking.minimumTrackingSignalSequenceNumber = undefined;
|
|
1496
|
-
}
|
|
1497
|
-
else {
|
|
1508
|
+
if (connected) {
|
|
1498
1509
|
assert(this.attachState === AttachState.Attached, 0x3cd /* Connection is possible only if container exists in storage */);
|
|
1510
|
+
if (changeOfState) {
|
|
1511
|
+
this._signalTracking.signalsLost = 0;
|
|
1512
|
+
this._signalTracking.signalsOutOfOrder = 0;
|
|
1513
|
+
this._signalTracking.signalTimestamp = 0;
|
|
1514
|
+
this._signalTracking.signalsSentSinceLastLatencyMeasurement = 0;
|
|
1515
|
+
this._signalTracking.totalSignalsSentInLatencyWindow = 0;
|
|
1516
|
+
this._signalTracking.roundTripSignalSequenceNumber = undefined;
|
|
1517
|
+
this._signalTracking.trackingSignalSequenceNumber = undefined;
|
|
1518
|
+
this._signalTracking.minimumTrackingSignalSequenceNumber = undefined;
|
|
1519
|
+
}
|
|
1499
1520
|
}
|
|
1500
1521
|
// Fail while disconnected
|
|
1501
1522
|
if (reconnection) {
|
|
@@ -1909,14 +1930,7 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
1909
1930
|
targetClientId: message.targetClientId,
|
|
1910
1931
|
};
|
|
1911
1932
|
// Only collect signal telemetry for broadcast messages sent by the current client.
|
|
1912
|
-
if (message.clientId === this.clientId
|
|
1913
|
-
// jason-ha: This `connected` check seems incorrect. Signals that come through
|
|
1914
|
-
// here must have been received while connected to service and there is no need
|
|
1915
|
-
// to avoid processing when connection has dropped. Because container runtime's
|
|
1916
|
-
// `connected` (and `_connected`) state also reflects some ops state, it may
|
|
1917
|
-
// easily be false when newly connected and signal tracking may very well
|
|
1918
|
-
// complain lost signals (that were simply skipped per this check).
|
|
1919
|
-
this.connected) {
|
|
1933
|
+
if (message.clientId === this.clientId) {
|
|
1920
1934
|
this.processSignalForTelemetry(envelope);
|
|
1921
1935
|
}
|
|
1922
1936
|
if (envelope.address === undefined) {
|
|
@@ -2957,7 +2971,6 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
2957
2971
|
this.channelCollection.rollback(type, contents, localOpMetadata);
|
|
2958
2972
|
break;
|
|
2959
2973
|
default:
|
|
2960
|
-
// Don't check message.compatDetails because this is for rolling back a local op so the type will be known
|
|
2961
2974
|
throw new Error(`Can't rollback ${type}`);
|
|
2962
2975
|
}
|
|
2963
2976
|
}
|