@fluidframework/container-runtime 2.63.0-359286 → 2.63.0-359734

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.
@@ -5,5 +5,5 @@
5
5
  * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
6
6
  */
7
7
  export declare const pkgName = "@fluidframework/container-runtime";
8
- export declare const pkgVersion = "2.63.0-359286";
8
+ export declare const pkgVersion = "2.63.0-359734";
9
9
  //# sourceMappingURL=packageVersion.d.ts.map
@@ -5,5 +5,5 @@
5
5
  * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
6
6
  */
7
7
  export const pkgName = "@fluidframework/container-runtime";
8
- export const pkgVersion = "2.63.0-359286";
8
+ export const pkgVersion = "2.63.0-359734";
9
9
  //# sourceMappingURL=packageVersion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,mCAAmC,CAAC;AAC3D,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/container-runtime\";\nexport const pkgVersion = \"2.63.0-359286\";\n"]}
1
+ {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,mCAAmC,CAAC;AAC3D,MAAM,CAAC,MAAM,UAAU,GAAG,eAAe,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/container-runtime\";\nexport const pkgVersion = \"2.63.0-359734\";\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluidframework/container-runtime",
3
- "version": "2.63.0-359286",
3
+ "version": "2.63.0-359734",
4
4
  "description": "Fluid container runtime",
5
5
  "homepage": "https://fluidframework.com",
6
6
  "repository": {
@@ -119,18 +119,18 @@
119
119
  "temp-directory": "nyc/.nyc_output"
120
120
  },
121
121
  "dependencies": {
122
- "@fluid-internal/client-utils": "2.63.0-359286",
123
- "@fluidframework/container-definitions": "2.63.0-359286",
124
- "@fluidframework/container-runtime-definitions": "2.63.0-359286",
125
- "@fluidframework/core-interfaces": "2.63.0-359286",
126
- "@fluidframework/core-utils": "2.63.0-359286",
127
- "@fluidframework/datastore": "2.63.0-359286",
128
- "@fluidframework/driver-definitions": "2.63.0-359286",
129
- "@fluidframework/driver-utils": "2.63.0-359286",
130
- "@fluidframework/id-compressor": "2.63.0-359286",
131
- "@fluidframework/runtime-definitions": "2.63.0-359286",
132
- "@fluidframework/runtime-utils": "2.63.0-359286",
133
- "@fluidframework/telemetry-utils": "2.63.0-359286",
122
+ "@fluid-internal/client-utils": "2.63.0-359734",
123
+ "@fluidframework/container-definitions": "2.63.0-359734",
124
+ "@fluidframework/container-runtime-definitions": "2.63.0-359734",
125
+ "@fluidframework/core-interfaces": "2.63.0-359734",
126
+ "@fluidframework/core-utils": "2.63.0-359734",
127
+ "@fluidframework/datastore": "2.63.0-359734",
128
+ "@fluidframework/driver-definitions": "2.63.0-359734",
129
+ "@fluidframework/driver-utils": "2.63.0-359734",
130
+ "@fluidframework/id-compressor": "2.63.0-359734",
131
+ "@fluidframework/runtime-definitions": "2.63.0-359734",
132
+ "@fluidframework/runtime-utils": "2.63.0-359734",
133
+ "@fluidframework/telemetry-utils": "2.63.0-359734",
134
134
  "@tylerbu/sorted-btree-es6": "^1.8.0",
135
135
  "double-ended-queue": "^2.1.0-0",
136
136
  "lz4js": "^0.2.0",
@@ -140,16 +140,16 @@
140
140
  "devDependencies": {
141
141
  "@arethetypeswrong/cli": "^0.17.1",
142
142
  "@biomejs/biome": "~1.9.3",
143
- "@fluid-internal/mocha-test-setup": "2.63.0-359286",
144
- "@fluid-private/stochastic-test-utils": "2.63.0-359286",
145
- "@fluid-private/test-pairwise-generator": "2.63.0-359286",
143
+ "@fluid-internal/mocha-test-setup": "2.63.0-359734",
144
+ "@fluid-private/stochastic-test-utils": "2.63.0-359734",
145
+ "@fluid-private/test-pairwise-generator": "2.63.0-359734",
146
146
  "@fluid-tools/benchmark": "^0.51.0",
147
147
  "@fluid-tools/build-cli": "^0.58.3",
148
148
  "@fluidframework/build-common": "^2.0.3",
149
149
  "@fluidframework/build-tools": "^0.58.3",
150
150
  "@fluidframework/container-runtime-previous": "npm:@fluidframework/container-runtime@2.62.0",
151
151
  "@fluidframework/eslint-config-fluid": "^6.0.0",
152
- "@fluidframework/test-runtime-utils": "2.63.0-359286",
152
+ "@fluidframework/test-runtime-utils": "2.63.0-359734",
153
153
  "@microsoft/api-extractor": "7.52.11",
154
154
  "@types/double-ended-queue": "^2.1.0",
155
155
  "@types/lz4js": "^0.2.0",
@@ -41,7 +41,6 @@ import type {
41
41
  IContainerRuntimeWithResolveHandle_Deprecated,
42
42
  JoinedStatus,
43
43
  OutboundExtensionMessage,
44
- UnverifiedBrand,
45
44
  } from "@fluidframework/container-runtime-definitions/internal";
46
45
  import type {
47
46
  FluidObject,
@@ -710,13 +709,6 @@ export interface UnknownIncomingTypedMessage extends TypedMessage {
710
709
  content: OpaqueJsonDeserialized<unknown>;
711
710
  }
712
711
 
713
- /**
714
- * Does nothing helper to apply unverified branding to a value.
715
- */
716
- function markUnverified<const T>(value: T): T & UnverifiedBrand<T> {
717
- return value as T & UnverifiedBrand<T>;
718
- }
719
-
720
712
  type UnsequencedSignalEnvelope = Omit<ISignalEnvelope, "clientBroadcastSignalSequenceNumber">;
721
713
 
722
714
  /**
@@ -1349,7 +1341,14 @@ export class ContainerRuntime
1349
1341
 
1350
1342
  private readonly batchRunner = new BatchRunCounter();
1351
1343
  private readonly _flushMode: FlushMode;
1352
- private readonly offlineEnabled: boolean;
1344
+ /**
1345
+ * BatchId tracking is needed whenever there's a possibility of a "forked Container",
1346
+ * where the same local state is pending in two different running Containers, each of
1347
+ * which is trying to ensure it's persisted.
1348
+ * "Offline Load" from serialized pending state is one such scenario since two Containers
1349
+ * could load from the same serialized pending state.
1350
+ */
1351
+ private readonly batchIdTrackingEnabled: boolean;
1353
1352
  private flushScheduled = false;
1354
1353
 
1355
1354
  private canSendOps: boolean;
@@ -1796,10 +1795,12 @@ export class ContainerRuntime
1796
1795
  } else {
1797
1796
  this._flushMode = runtimeOptions.flushMode;
1798
1797
  }
1799
- this.offlineEnabled =
1800
- this.mc.config.getBoolean("Fluid.Container.enableOfflineLoad") ?? false;
1798
+ this.batchIdTrackingEnabled =
1799
+ this.mc.config.getBoolean("Fluid.Container.enableOfflineFull") ??
1800
+ this.mc.config.getBoolean("Fluid.ContainerRuntime.enableBatchIdTracking") ??
1801
+ false;
1801
1802
 
1802
- if (this.offlineEnabled && this._flushMode !== FlushMode.TurnBased) {
1803
+ if (this.batchIdTrackingEnabled && this._flushMode !== FlushMode.TurnBased) {
1803
1804
  const error = new UsageError("Offline mode is only supported in turn-based mode");
1804
1805
  this.closeFn(error);
1805
1806
  throw error;
@@ -1808,7 +1809,7 @@ export class ContainerRuntime
1808
1809
  // DuplicateBatchDetection is only enabled if Offline Load is enabled
1809
1810
  // It maintains a cache of all batchIds/sequenceNumbers within the collab window.
1810
1811
  // Don't waste resources doing so if not needed.
1811
- if (this.offlineEnabled) {
1812
+ if (this.batchIdTrackingEnabled) {
1812
1813
  this.duplicateBatchDetector = new DuplicateBatchDetector(recentBatchInfo);
1813
1814
  }
1814
1815
 
@@ -3321,12 +3322,12 @@ export class ContainerRuntime
3321
3322
  local: boolean,
3322
3323
  ): void {
3323
3324
  const envelope = message.content;
3324
- const transformed = markUnverified({
3325
+ const transformed = {
3325
3326
  clientId: message.clientId,
3326
3327
  content: envelope.contents.content,
3327
3328
  type: envelope.contents.type,
3328
3329
  targetClientId: message.targetClientId,
3329
- });
3330
+ };
3330
3331
 
3331
3332
  // Only collect signal telemetry for broadcast messages sent by the current client.
3332
3333
  if (message.clientId === this.clientId) {
@@ -3349,8 +3350,7 @@ export class ContainerRuntime
3349
3350
 
3350
3351
  private routeNonContainerSignal(
3351
3352
  address: string,
3352
- signalMessage: IInboundSignalMessage<UnknownIncomingTypedMessage> &
3353
- UnverifiedBrand<UnknownIncomingTypedMessage>,
3353
+ signalMessage: IInboundSignalMessage<UnknownIncomingTypedMessage>,
3354
3354
  local: boolean,
3355
3355
  ): void {
3356
3356
  // channelCollection signals are identified by no starting `/` in address.
@@ -4762,7 +4762,7 @@ export class ContainerRuntime
4762
4762
  const resubmitInfo = {
4763
4763
  // Only include Batch ID if "Offline Load" feature is enabled
4764
4764
  // It's only needed to identify batches across container forks arising from misuse of offline load.
4765
- batchId: this.offlineEnabled ? batchId : undefined,
4765
+ batchId: this.batchIdTrackingEnabled ? batchId : undefined,
4766
4766
  staged,
4767
4767
  };
4768
4768
 
@@ -6,4 +6,4 @@
6
6
  */
7
7
 
8
8
  export const pkgName = "@fluidframework/container-runtime";
9
- export const pkgVersion = "2.63.0-359286";
9
+ export const pkgVersion = "2.63.0-359734";