@fluidframework/container-runtime 2.1.0-281041 → 2.1.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.
Files changed (50) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +4 -4
  3. package/container-runtime.test-files.tar +0 -0
  4. package/dist/containerRuntime.d.ts.map +1 -1
  5. package/dist/containerRuntime.js +11 -3
  6. package/dist/containerRuntime.js.map +1 -1
  7. package/dist/opLifecycle/batchManager.d.ts.map +1 -1
  8. package/dist/opLifecycle/batchManager.js +1 -1
  9. package/dist/opLifecycle/batchManager.js.map +1 -1
  10. package/dist/opLifecycle/index.d.ts +1 -1
  11. package/dist/opLifecycle/index.d.ts.map +1 -1
  12. package/dist/opLifecycle/index.js +2 -1
  13. package/dist/opLifecycle/index.js.map +1 -1
  14. package/dist/opLifecycle/outbox.js +1 -1
  15. package/dist/opLifecycle/outbox.js.map +1 -1
  16. package/dist/opLifecycle/remoteMessageProcessor.d.ts +4 -2
  17. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  18. package/dist/opLifecycle/remoteMessageProcessor.js +22 -10
  19. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  20. package/dist/packageVersion.d.ts +1 -1
  21. package/dist/packageVersion.d.ts.map +1 -1
  22. package/dist/packageVersion.js +1 -1
  23. package/dist/packageVersion.js.map +1 -1
  24. package/lib/containerRuntime.d.ts.map +1 -1
  25. package/lib/containerRuntime.js +12 -4
  26. package/lib/containerRuntime.js.map +1 -1
  27. package/lib/opLifecycle/batchManager.d.ts.map +1 -1
  28. package/lib/opLifecycle/batchManager.js +1 -1
  29. package/lib/opLifecycle/batchManager.js.map +1 -1
  30. package/lib/opLifecycle/index.d.ts +1 -1
  31. package/lib/opLifecycle/index.d.ts.map +1 -1
  32. package/lib/opLifecycle/index.js +1 -1
  33. package/lib/opLifecycle/index.js.map +1 -1
  34. package/lib/opLifecycle/outbox.js +1 -1
  35. package/lib/opLifecycle/outbox.js.map +1 -1
  36. package/lib/opLifecycle/remoteMessageProcessor.d.ts +4 -2
  37. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  38. package/lib/opLifecycle/remoteMessageProcessor.js +20 -9
  39. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
  40. package/lib/packageVersion.d.ts +1 -1
  41. package/lib/packageVersion.d.ts.map +1 -1
  42. package/lib/packageVersion.js +1 -1
  43. package/lib/packageVersion.js.map +1 -1
  44. package/package.json +24 -24
  45. package/src/containerRuntime.ts +15 -3
  46. package/src/opLifecycle/batchManager.ts +4 -1
  47. package/src/opLifecycle/index.ts +5 -1
  48. package/src/opLifecycle/outbox.ts +1 -1
  49. package/src/opLifecycle/remoteMessageProcessor.ts +33 -10
  50. package/src/packageVersion.ts +1 -1
@@ -25,7 +25,7 @@ import { FluidDataStoreRegistry } from "./dataStoreRegistry.js";
25
25
  import { DeltaManagerPendingOpsProxy, DeltaManagerSummarizerProxy, } from "./deltaManagerProxies.js";
26
26
  import { GCNodeType, GarbageCollector, gcGenerationOptionName, } from "./gc/index.js";
27
27
  import { ContainerMessageType, } from "./messageTypes.js";
28
- import { OpCompressor, OpDecompressor, OpGroupingManager, OpSplitter, Outbox, RemoteMessageProcessor, } from "./opLifecycle/index.js";
28
+ import { ensureContentsDeserialized, OpCompressor, OpDecompressor, OpGroupingManager, OpSplitter, Outbox, RemoteMessageProcessor, } from "./opLifecycle/index.js";
29
29
  import { pkgVersion } from "./packageVersion.js";
30
30
  import { PendingStateManager, } from "./pendingStateManager.js";
31
31
  import { ScheduleManager } from "./scheduleManager.js";
@@ -1464,14 +1464,22 @@ export class ContainerRuntime extends TypedEventEmitter {
1464
1464
  // It may be a legacy runtime message (ie already unpacked and ContainerMessageType)
1465
1465
  // or something different, like a system message.
1466
1466
  const modernRuntimeMessage = messageArg.type === MessageType.Operation;
1467
+ const savedOp = messageArg.metadata?.savedOp;
1468
+ // There is some ancient back-compat code that we'd like to instrument
1469
+ // to understand if/when it is hit.
1470
+ const logLegacyCase = (codePath) => this.logger.sendTelemetryEvent({
1471
+ eventName: "LegacyMessageFormat",
1472
+ details: { codePath, type: messageArg.type },
1473
+ });
1467
1474
  // Do shallow copy of message, as the processing flow will modify it.
1468
1475
  // There might be multiple container instances receiving the same message.
1469
1476
  // We do not need to make a deep copy. Each layer will just replace message.contents itself,
1470
1477
  // but will not modify the contents object (likely it will replace it on the message).
1471
1478
  const messageCopy = { ...messageArg };
1472
- const savedOp = messageCopy.metadata?.savedOp;
1479
+ // We expect runtime messages to have JSON contents - deserialize it in place.
1480
+ ensureContentsDeserialized(messageCopy, modernRuntimeMessage, logLegacyCase);
1473
1481
  if (modernRuntimeMessage) {
1474
- const processResult = this.remoteMessageProcessor.process(messageCopy);
1482
+ const processResult = this.remoteMessageProcessor.process(messageCopy, logLegacyCase);
1475
1483
  if (processResult === undefined) {
1476
1484
  // This means the incoming message is an incomplete part of a message or batch
1477
1485
  // and we need to process more messages before the rest of the system can understand it.
@@ -2747,7 +2755,7 @@ export class ContainerRuntime extends TypedEventEmitter {
2747
2755
  fetchSource: FetchSource.noCache,
2748
2756
  });
2749
2757
  const id = snapshot.snapshotTree.id;
2750
- assert(id !== undefined, "id of the fetched snapshot should be defined");
2758
+ assert(id !== undefined, 0x9d0 /* id of the fetched snapshot should be defined */);
2751
2759
  props.snapshotVersion = id;
2752
2760
  snapshotTree = snapshot.snapshotTree;
2753
2761
  }