@fluidframework/container-runtime 2.4.0-299707 → 2.5.0-302463
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 +12 -0
- package/container-runtime.test-files.tar +0 -0
- package/dist/blobManager/blobManager.d.ts.map +1 -1
- package/dist/blobManager/blobManager.js +10 -4
- package/dist/blobManager/blobManager.js.map +1 -1
- package/dist/channelCollection.d.ts.map +1 -1
- package/dist/channelCollection.js +10 -2
- package/dist/channelCollection.js.map +1 -1
- package/dist/containerRuntime.d.ts +6 -2
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +46 -28
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStoreContexts.d.ts.map +1 -1
- package/dist/dataStoreContexts.js +14 -6
- package/dist/dataStoreContexts.js.map +1 -1
- package/dist/opLifecycle/index.d.ts +1 -1
- package/dist/opLifecycle/index.d.ts.map +1 -1
- package/dist/opLifecycle/index.js +2 -1
- package/dist/opLifecycle/index.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +6 -0
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +9 -1
- package/dist/opLifecycle/outbox.js.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.d.ts +4 -4
- package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.js +6 -18
- package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/dist/opProperties.js +1 -1
- package/dist/opProperties.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/summary/documentSchema.js +2 -2
- package/dist/summary/documentSchema.js.map +1 -1
- package/dist/summary/summaryCollection.d.ts.map +1 -1
- package/dist/summary/summaryCollection.js +3 -4
- package/dist/summary/summaryCollection.js.map +1 -1
- package/lib/blobManager/blobManager.d.ts.map +1 -1
- package/lib/blobManager/blobManager.js +10 -4
- package/lib/blobManager/blobManager.js.map +1 -1
- package/lib/channelCollection.d.ts.map +1 -1
- package/lib/channelCollection.js +11 -3
- package/lib/channelCollection.js.map +1 -1
- package/lib/containerRuntime.d.ts +6 -2
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +44 -27
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStoreContexts.d.ts.map +1 -1
- package/lib/dataStoreContexts.js +15 -7
- package/lib/dataStoreContexts.js.map +1 -1
- package/lib/opLifecycle/index.d.ts +1 -1
- package/lib/opLifecycle/index.d.ts.map +1 -1
- package/lib/opLifecycle/index.js +1 -1
- package/lib/opLifecycle/index.js.map +1 -1
- package/lib/opLifecycle/outbox.d.ts +6 -0
- package/lib/opLifecycle/outbox.d.ts.map +1 -1
- package/lib/opLifecycle/outbox.js +7 -0
- package/lib/opLifecycle/outbox.js.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.ts +4 -4
- package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.js +6 -18
- package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/lib/opProperties.js +1 -1
- package/lib/opProperties.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/summary/documentSchema.js +2 -2
- package/lib/summary/documentSchema.js.map +1 -1
- package/lib/summary/summaryCollection.d.ts.map +1 -1
- package/lib/summary/summaryCollection.js +3 -4
- package/lib/summary/summaryCollection.js.map +1 -1
- package/package.json +22 -26
- package/src/blobManager/blobManager.ts +10 -4
- package/src/channelCollection.ts +16 -7
- package/src/containerRuntime.ts +49 -27
- package/src/dataStoreContexts.ts +20 -7
- package/src/opLifecycle/index.ts +1 -1
- package/src/opLifecycle/outbox.ts +11 -0
- package/src/opLifecycle/remoteMessageProcessor.ts +8 -22
- package/src/opProperties.ts +1 -1
- package/src/packageVersion.ts +1 -1
- package/src/summary/documentSchema.ts +2 -2
- package/src/summary/summaryCollection.ts +3 -4
package/dist/containerRuntime.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Licensed under the MIT License.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.ContainerRuntime = exports.loadContainerRuntime = exports.makeLegacySendBatchFn = exports.getDeviceSpec = exports.agentSchedulerId = exports.isUnpackedRuntimeMessage = exports.defaultPendingOpsRetryDelayMs = exports.defaultPendingOpsWaitTimeoutMs = exports.disabledCompressionConfig = exports.CompressionAlgorithms = exports.
|
|
7
|
+
exports.ContainerRuntime = exports.loadContainerRuntime = exports.getSingleUseLegacyLogCallback = exports.makeLegacySendBatchFn = exports.getDeviceSpec = exports.agentSchedulerId = exports.isUnpackedRuntimeMessage = exports.defaultPendingOpsRetryDelayMs = exports.defaultPendingOpsWaitTimeoutMs = exports.disabledCompressionConfig = exports.CompressionAlgorithms = exports.InactiveResponseHeaderKey = exports.TombstoneResponseHeaderKey = exports.DeletedResponseHeaderKey = exports.DefaultSummaryConfiguration = void 0;
|
|
8
8
|
const client_utils_1 = require("@fluid-internal/client-utils");
|
|
9
9
|
const container_definitions_1 = require("@fluidframework/container-definitions");
|
|
10
10
|
const internal_1 = require("@fluidframework/container-definitions/internal");
|
|
@@ -90,12 +90,6 @@ exports.TombstoneResponseHeaderKey = "isTombstoned";
|
|
|
90
90
|
* to this was experimental and is no longer supported.
|
|
91
91
|
*/
|
|
92
92
|
exports.InactiveResponseHeaderKey = "isInactive";
|
|
93
|
-
/** Default values for Runtime Headers */
|
|
94
|
-
exports.defaultRuntimeHeaderData = {
|
|
95
|
-
wait: true,
|
|
96
|
-
viaHandle: false,
|
|
97
|
-
allowTombstone: false,
|
|
98
|
-
};
|
|
99
93
|
/**
|
|
100
94
|
* Available compression algorithms for op compression.
|
|
101
95
|
* @legacy
|
|
@@ -243,9 +237,10 @@ let getSingleUseLegacyLogCallback = (logger, type) => {
|
|
|
243
237
|
details: { codePath, type },
|
|
244
238
|
});
|
|
245
239
|
// Now that we've logged, prevent future logging (globally).
|
|
246
|
-
getSingleUseLegacyLogCallback = () => () => { };
|
|
240
|
+
exports.getSingleUseLegacyLogCallback = () => () => { };
|
|
247
241
|
};
|
|
248
242
|
};
|
|
243
|
+
exports.getSingleUseLegacyLogCallback = getSingleUseLegacyLogCallback;
|
|
249
244
|
/**
|
|
250
245
|
* This is meant to be used by a {@link @fluidframework/container-definitions#IRuntimeFactory} to instantiate a container runtime.
|
|
251
246
|
* @param params - An object which specifies all required and optional params necessary to instantiate a runtime.
|
|
@@ -1523,9 +1518,12 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
|
|
|
1523
1518
|
// or something different, like a system message.
|
|
1524
1519
|
const hasModernRuntimeMessageEnvelope = messageCopy.type === internal_3.MessageType.Operation;
|
|
1525
1520
|
const savedOp = messageCopy.metadata?.savedOp;
|
|
1526
|
-
const logLegacyCase = getSingleUseLegacyLogCallback(this.logger, messageCopy.type);
|
|
1527
|
-
|
|
1528
|
-
(
|
|
1521
|
+
const logLegacyCase = (0, exports.getSingleUseLegacyLogCallback)(this.logger, messageCopy.type);
|
|
1522
|
+
let runtimeBatch = hasModernRuntimeMessageEnvelope || isUnpackedRuntimeMessage(messageCopy);
|
|
1523
|
+
if (runtimeBatch) {
|
|
1524
|
+
// We expect runtime messages to have JSON contents - deserialize it in place.
|
|
1525
|
+
(0, index_js_3.ensureContentsDeserialized)(messageCopy);
|
|
1526
|
+
}
|
|
1529
1527
|
if (hasModernRuntimeMessageEnvelope) {
|
|
1530
1528
|
// If the message has the modern message envelope, then process it here.
|
|
1531
1529
|
// Here we unpack the message (decompress, unchunk, and/or ungroup) into a batch of messages with ContainerMessageType
|
|
@@ -1554,7 +1552,6 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
|
|
|
1554
1552
|
throw error;
|
|
1555
1553
|
}
|
|
1556
1554
|
}
|
|
1557
|
-
let runtimeBatch = true;
|
|
1558
1555
|
// Reach out to PendingStateManager, either to zip localOpMetadata into the *local* message list,
|
|
1559
1556
|
// or to check to ensure the *remote* messages don't match the batchId of a pending local batch.
|
|
1560
1557
|
// This latter case would indicate that the container has forked - two copies are trying to persist the same local changes.
|
|
@@ -1593,8 +1590,17 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
|
|
|
1593
1590
|
this.processInboundMessages(messagesWithPendingState, locationInBatch, local, savedOp, runtimeBatch);
|
|
1594
1591
|
}
|
|
1595
1592
|
else {
|
|
1593
|
+
if (!runtimeBatch) {
|
|
1594
|
+
// The DeltaManager used to do this, but doesn't anymore as of Loader v2.4
|
|
1595
|
+
// Anyone listening to our "op" event would expect the contents to be parsed per this same logic
|
|
1596
|
+
if (typeof messageCopy.contents === "string" &&
|
|
1597
|
+
messageCopy.contents !== "" &&
|
|
1598
|
+
messageCopy.type !== internal_3.MessageType.ClientLeave) {
|
|
1599
|
+
messageCopy.contents = JSON.parse(messageCopy.contents);
|
|
1600
|
+
}
|
|
1601
|
+
}
|
|
1596
1602
|
this.processInboundMessages([{ message: messageCopy, localOpMetadata: undefined }], { batchStart: true, batchEnd: true }, // Single message
|
|
1597
|
-
local, savedOp,
|
|
1603
|
+
local, savedOp, runtimeBatch);
|
|
1598
1604
|
}
|
|
1599
1605
|
if (local) {
|
|
1600
1606
|
// If we have processed a local op, this means that the container is
|
|
@@ -1737,11 +1743,13 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
|
|
|
1737
1743
|
const duration = Date.now() - this._signalTracking.signalTimestamp;
|
|
1738
1744
|
this.mc.logger.sendPerformanceEvent({
|
|
1739
1745
|
eventName: "SignalLatency",
|
|
1740
|
-
|
|
1741
|
-
|
|
1742
|
-
|
|
1743
|
-
|
|
1744
|
-
|
|
1746
|
+
details: {
|
|
1747
|
+
duration, // Roundtrip duration of the tracked signal in milliseconds.
|
|
1748
|
+
sent: this._signalTracking.totalSignalsSentInLatencyWindow, // Signals sent since the last logged SignalLatency event.
|
|
1749
|
+
lost: this._signalTracking.signalsLost, // Signals lost since the last logged SignalLatency event.
|
|
1750
|
+
outOfOrder: this._signalTracking.signalsOutOfOrder, // Out of order signals since the last logged SignalLatency event.
|
|
1751
|
+
reconnectCount: this.consecutiveReconnects, // Container reconnect count.
|
|
1752
|
+
},
|
|
1745
1753
|
});
|
|
1746
1754
|
this._signalTracking.signalsLost = 0;
|
|
1747
1755
|
this._signalTracking.signalsOutOfOrder = 0;
|
|
@@ -1768,9 +1776,11 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
|
|
|
1768
1776
|
this._signalTracking.signalsLost += signalsLost;
|
|
1769
1777
|
this.mc.logger.sendErrorEvent({
|
|
1770
1778
|
eventName: "SignalLost",
|
|
1771
|
-
|
|
1772
|
-
|
|
1773
|
-
|
|
1779
|
+
details: {
|
|
1780
|
+
signalsLost, // Number of lost signals detected.
|
|
1781
|
+
expectedSequenceNumber: this._signalTracking.trackingSignalSequenceNumber, // The next expected signal sequence number.
|
|
1782
|
+
clientBroadcastSignalSequenceNumber, // Actual signal sequence number received.
|
|
1783
|
+
},
|
|
1774
1784
|
});
|
|
1775
1785
|
}
|
|
1776
1786
|
// Update the tracking signal sequence number to the next expected signal in the sequence.
|
|
@@ -1782,11 +1792,18 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
|
|
|
1782
1792
|
clientBroadcastSignalSequenceNumber >=
|
|
1783
1793
|
this._signalTracking.minimumTrackingSignalSequenceNumber) {
|
|
1784
1794
|
this._signalTracking.signalsOutOfOrder++;
|
|
1795
|
+
const details = {
|
|
1796
|
+
expectedSequenceNumber: this._signalTracking.trackingSignalSequenceNumber, // The next expected signal sequence number.
|
|
1797
|
+
clientBroadcastSignalSequenceNumber, // Sequence number of the out of order signal.
|
|
1798
|
+
};
|
|
1799
|
+
// Only log `contents.type` when address is for container to avoid
|
|
1800
|
+
// chance that contents type is customer data.
|
|
1801
|
+
if (envelope.address === undefined) {
|
|
1802
|
+
details.contentsType = envelope.contents.type; // Type of signal that was received out of order.
|
|
1803
|
+
}
|
|
1785
1804
|
this.mc.logger.sendTelemetryEvent({
|
|
1786
1805
|
eventName: "SignalOutOfOrder",
|
|
1787
|
-
|
|
1788
|
-
trackingSequenceNumber: this._signalTracking.trackingSignalSequenceNumber, // The next expected signal sequence number.
|
|
1789
|
-
clientBroadcastSignalSequenceNumber, // Sequence number of the out of order signal.
|
|
1806
|
+
details,
|
|
1790
1807
|
});
|
|
1791
1808
|
}
|
|
1792
1809
|
if (this._signalTracking.roundTripSignalSequenceNumber !== undefined &&
|
|
@@ -1795,7 +1812,8 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
|
|
|
1795
1812
|
this._signalTracking.roundTripSignalSequenceNumber) {
|
|
1796
1813
|
// Latency tracked signal has been received.
|
|
1797
1814
|
// We now log the roundtrip duration of the tracked signal.
|
|
1798
|
-
// This telemetry event also logs metrics for
|
|
1815
|
+
// This telemetry event also logs metrics for broadcast signals
|
|
1816
|
+
// sent, lost, and out of order.
|
|
1799
1817
|
// These metrics are reset after logging the telemetry event.
|
|
1800
1818
|
this.sendSignalTelemetryEvent();
|
|
1801
1819
|
}
|
|
@@ -2641,7 +2659,7 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
|
|
|
2641
2659
|
contents: idRange,
|
|
2642
2660
|
};
|
|
2643
2661
|
const idAllocationBatchMessage = {
|
|
2644
|
-
contents:
|
|
2662
|
+
contents: (0, index_js_3.serializeOpContents)(idAllocationMessage),
|
|
2645
2663
|
referenceSequenceNumber: this.deltaManager.lastSequenceNumber,
|
|
2646
2664
|
};
|
|
2647
2665
|
this.outbox.submitIdAllocation(idAllocationBatchMessage);
|
|
@@ -2684,12 +2702,12 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
|
|
|
2684
2702
|
contents: schemaChangeMessage,
|
|
2685
2703
|
};
|
|
2686
2704
|
this.outbox.submit({
|
|
2687
|
-
contents:
|
|
2705
|
+
contents: (0, index_js_3.serializeOpContents)(msg),
|
|
2688
2706
|
referenceSequenceNumber: this.deltaManager.lastSequenceNumber,
|
|
2689
2707
|
});
|
|
2690
2708
|
}
|
|
2691
2709
|
const message = {
|
|
2692
|
-
contents:
|
|
2710
|
+
contents: (0, index_js_3.serializeOpContents)(containerRuntimeMessage),
|
|
2693
2711
|
metadata,
|
|
2694
2712
|
localOpMetadata,
|
|
2695
2713
|
referenceSequenceNumber: this.deltaManager.lastSequenceNumber,
|