@fluidframework/container-runtime 0.57.1 → 0.58.0-55561

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 (90) hide show
  1. package/dist/batchTracker.d.ts +26 -0
  2. package/dist/batchTracker.d.ts.map +1 -0
  3. package/dist/batchTracker.js +59 -0
  4. package/dist/batchTracker.js.map +1 -0
  5. package/dist/containerRuntime.d.ts +2 -1
  6. package/dist/containerRuntime.d.ts.map +1 -1
  7. package/dist/containerRuntime.js +63 -27
  8. package/dist/containerRuntime.js.map +1 -1
  9. package/dist/dataStoreContext.js +1 -1
  10. package/dist/dataStoreContext.js.map +1 -1
  11. package/dist/dataStores.js +1 -1
  12. package/dist/dataStores.js.map +1 -1
  13. package/dist/garbageCollection.d.ts +1 -0
  14. package/dist/garbageCollection.d.ts.map +1 -1
  15. package/dist/garbageCollection.js +6 -4
  16. package/dist/garbageCollection.js.map +1 -1
  17. package/dist/packageVersion.d.ts +1 -1
  18. package/dist/packageVersion.d.ts.map +1 -1
  19. package/dist/packageVersion.js +1 -1
  20. package/dist/packageVersion.js.map +1 -1
  21. package/dist/pendingStateManager.d.ts.map +1 -1
  22. package/dist/pendingStateManager.js +1 -6
  23. package/dist/pendingStateManager.js.map +1 -1
  24. package/dist/runningSummarizer.d.ts +1 -1
  25. package/dist/runningSummarizer.d.ts.map +1 -1
  26. package/dist/runningSummarizer.js +1 -1
  27. package/dist/runningSummarizer.js.map +1 -1
  28. package/dist/summarizer.d.ts +3 -4
  29. package/dist/summarizer.d.ts.map +1 -1
  30. package/dist/summarizer.js +8 -9
  31. package/dist/summarizer.js.map +1 -1
  32. package/dist/summaryGenerator.d.ts +1 -1
  33. package/dist/summaryGenerator.d.ts.map +1 -1
  34. package/dist/summaryGenerator.js +1 -1
  35. package/dist/summaryGenerator.js.map +1 -1
  36. package/dist/summaryManager.d.ts +2 -6
  37. package/dist/summaryManager.d.ts.map +1 -1
  38. package/dist/summaryManager.js +4 -10
  39. package/dist/summaryManager.js.map +1 -1
  40. package/lib/batchTracker.d.ts +26 -0
  41. package/lib/batchTracker.d.ts.map +1 -0
  42. package/lib/batchTracker.js +54 -0
  43. package/lib/batchTracker.js.map +1 -0
  44. package/lib/containerRuntime.d.ts +2 -1
  45. package/lib/containerRuntime.d.ts.map +1 -1
  46. package/lib/containerRuntime.js +63 -27
  47. package/lib/containerRuntime.js.map +1 -1
  48. package/lib/dataStoreContext.js +2 -2
  49. package/lib/dataStoreContext.js.map +1 -1
  50. package/lib/dataStores.js +1 -1
  51. package/lib/dataStores.js.map +1 -1
  52. package/lib/garbageCollection.d.ts +1 -0
  53. package/lib/garbageCollection.d.ts.map +1 -1
  54. package/lib/garbageCollection.js +4 -2
  55. package/lib/garbageCollection.js.map +1 -1
  56. package/lib/packageVersion.d.ts +1 -1
  57. package/lib/packageVersion.d.ts.map +1 -1
  58. package/lib/packageVersion.js +1 -1
  59. package/lib/packageVersion.js.map +1 -1
  60. package/lib/pendingStateManager.d.ts.map +1 -1
  61. package/lib/pendingStateManager.js +1 -6
  62. package/lib/pendingStateManager.js.map +1 -1
  63. package/lib/runningSummarizer.d.ts +1 -1
  64. package/lib/runningSummarizer.d.ts.map +1 -1
  65. package/lib/runningSummarizer.js +1 -1
  66. package/lib/runningSummarizer.js.map +1 -1
  67. package/lib/summarizer.d.ts +3 -4
  68. package/lib/summarizer.d.ts.map +1 -1
  69. package/lib/summarizer.js +8 -9
  70. package/lib/summarizer.js.map +1 -1
  71. package/lib/summaryGenerator.d.ts +1 -1
  72. package/lib/summaryGenerator.d.ts.map +1 -1
  73. package/lib/summaryGenerator.js +1 -1
  74. package/lib/summaryGenerator.js.map +1 -1
  75. package/lib/summaryManager.d.ts +2 -6
  76. package/lib/summaryManager.d.ts.map +1 -1
  77. package/lib/summaryManager.js +5 -11
  78. package/lib/summaryManager.js.map +1 -1
  79. package/package.json +14 -14
  80. package/src/batchTracker.ts +80 -0
  81. package/src/containerRuntime.ts +84 -31
  82. package/src/dataStoreContext.ts +2 -2
  83. package/src/dataStores.ts +1 -1
  84. package/src/garbageCollection.ts +11 -10
  85. package/src/packageVersion.ts +1 -1
  86. package/src/pendingStateManager.ts +4 -8
  87. package/src/runningSummarizer.ts +3 -3
  88. package/src/summarizer.ts +8 -8
  89. package/src/summaryGenerator.ts +2 -2
  90. package/src/summaryManager.ts +5 -20
@@ -0,0 +1,26 @@
1
+ /*!
2
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
+ * Licensed under the MIT License.
4
+ */
5
+ /// <reference types="node" />
6
+ import { ITelemetryLogger } from "@fluidframework/common-definitions";
7
+ import EventEmitter from "events";
8
+ export declare class BatchTracker {
9
+ private readonly batchEventEmitter;
10
+ private readonly logger;
11
+ private startBatchSequenceNumber;
12
+ private trackedBatchCount;
13
+ private batchProcessingStartTimeStamp;
14
+ constructor(batchEventEmitter: EventEmitter, logger: ITelemetryLogger, batchLengthThreshold: number, batchCountSamplingRate: number, dateTimeProvider?: () => number);
15
+ }
16
+ /**
17
+ * Track batch sizes in terms of op counts and processing times
18
+ *
19
+ * @param batchEventEmitter - event emitter which tracks the lifecycle of batch operations
20
+ * @param logger - logger
21
+ * @param batchLengthThreshold - threshold for the length of a batch when to send an error event
22
+ * @param batchCountSamplingRate - rate for batches for which to send an event with its characteristics
23
+ * @returns
24
+ */
25
+ export declare const BindBatchTracker: (batchEventEmitter: EventEmitter, logger: ITelemetryLogger, batchLengthThreshold?: number, batchCountSamplingRate?: number) => BatchTracker;
26
+ //# sourceMappingURL=batchTracker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batchTracker.d.ts","sourceRoot":"","sources":["../src/batchTracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAItE,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC,qBAAa,YAAY;IAOjB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IANtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmB;IAC1C,OAAO,CAAC,wBAAwB,CAAqB;IACrD,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,6BAA6B,CAAqB;gBAGrC,iBAAiB,EAAE,YAAY,EAChD,MAAM,EAAE,gBAAgB,EACxB,oBAAoB,EAAE,MAAM,EAC5B,sBAAsB,EAAE,MAAM,EAC9B,gBAAgB,GAAE,MAAM,MAAgC;CAyC/D;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,sBACN,YAAY,UACvB,gBAAgB,yBACF,MAAM,2BACJ,MAAM,iBAC4D,CAAA"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ /*!
3
+ * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
4
+ * Licensed under the MIT License.
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.BindBatchTracker = exports.BatchTracker = void 0;
8
+ const common_utils_1 = require("@fluidframework/common-utils");
9
+ const telemetry_utils_1 = require("@fluidframework/telemetry-utils");
10
+ class BatchTracker {
11
+ constructor(batchEventEmitter, logger, batchLengthThreshold, batchCountSamplingRate, dateTimeProvider = () => common_utils_1.performance.now()) {
12
+ this.batchEventEmitter = batchEventEmitter;
13
+ this.trackedBatchCount = 0;
14
+ this.logger = telemetry_utils_1.ChildLogger.create(logger, "Batching");
15
+ this.batchEventEmitter.on("batchBegin", (message) => {
16
+ this.startBatchSequenceNumber = message.sequenceNumber;
17
+ this.batchProcessingStartTimeStamp = dateTimeProvider();
18
+ this.trackedBatchCount++;
19
+ });
20
+ this.batchEventEmitter.on("batchEnd", (error, message) => {
21
+ common_utils_1.assert(this.startBatchSequenceNumber !== undefined && this.batchProcessingStartTimeStamp !== undefined, 0x2ba /* "batchBegin must fire before batchEnd" */);
22
+ const length = message.sequenceNumber - this.startBatchSequenceNumber + 1;
23
+ if (length >= batchLengthThreshold) {
24
+ this.logger.sendErrorEvent({
25
+ eventName: "LengthTooBig",
26
+ length,
27
+ threshold: batchLengthThreshold,
28
+ batchEndSequenceNumber: message.sequenceNumber,
29
+ duration: dateTimeProvider() - this.batchProcessingStartTimeStamp,
30
+ batchError: error !== undefined,
31
+ });
32
+ }
33
+ if (this.trackedBatchCount % batchCountSamplingRate === 0) {
34
+ this.logger.sendPerformanceEvent({
35
+ eventName: "Length",
36
+ length,
37
+ samplingRate: batchCountSamplingRate,
38
+ batchEndSequenceNumber: message.sequenceNumber,
39
+ duration: dateTimeProvider() - this.batchProcessingStartTimeStamp,
40
+ });
41
+ }
42
+ this.startBatchSequenceNumber = undefined;
43
+ this.batchProcessingStartTimeStamp = undefined;
44
+ });
45
+ }
46
+ }
47
+ exports.BatchTracker = BatchTracker;
48
+ /**
49
+ * Track batch sizes in terms of op counts and processing times
50
+ *
51
+ * @param batchEventEmitter - event emitter which tracks the lifecycle of batch operations
52
+ * @param logger - logger
53
+ * @param batchLengthThreshold - threshold for the length of a batch when to send an error event
54
+ * @param batchCountSamplingRate - rate for batches for which to send an event with its characteristics
55
+ * @returns
56
+ */
57
+ const BindBatchTracker = (batchEventEmitter, logger, batchLengthThreshold = 128, batchCountSamplingRate = 1000) => new BatchTracker(batchEventEmitter, logger, batchLengthThreshold, batchCountSamplingRate);
58
+ exports.BindBatchTracker = BindBatchTracker;
59
+ //# sourceMappingURL=batchTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batchTracker.js","sourceRoot":"","sources":["../src/batchTracker.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,+DAAmE;AAEnE,qEAA8D;AAG9D,MAAa,YAAY;IAMrB,YACqB,iBAA+B,EAChD,MAAwB,EACxB,oBAA4B,EAC5B,sBAA8B,EAC9B,mBAAiC,GAAG,EAAE,CAAC,0BAAW,CAAC,GAAG,EAAE;QAJvC,sBAAiB,GAAjB,iBAAiB,CAAc;QAJ5C,sBAAiB,GAAW,CAAC,CAAC;QAUlC,IAAI,CAAC,MAAM,GAAG,6BAAW,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;QAErD,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,OAAkC,EAAE,EAAE;YAC3E,IAAI,CAAC,wBAAwB,GAAG,OAAO,CAAC,cAAc,CAAC;YACvD,IAAI,CAAC,6BAA6B,GAAG,gBAAgB,EAAE,CAAC;YACxD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC7B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,KAAsB,EAAE,OAAkC,EAAE,EAAE;YACjG,qBAAM,CACF,IAAI,CAAC,wBAAwB,KAAK,SAAS,IAAI,IAAI,CAAC,6BAA6B,KAAK,SAAS,EAC/F,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAExD,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,wBAAwB,GAAG,CAAC,CAAC;YAC1E,IAAI,MAAM,IAAI,oBAAoB,EAAE;gBAChC,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC;oBACvB,SAAS,EAAE,cAAc;oBACzB,MAAM;oBACN,SAAS,EAAE,oBAAoB;oBAC/B,sBAAsB,EAAE,OAAO,CAAC,cAAc;oBAC9C,QAAQ,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,6BAA6B;oBACjE,UAAU,EAAE,KAAK,KAAK,SAAS;iBAClC,CAAC,CAAC;aACN;YAED,IAAI,IAAI,CAAC,iBAAiB,GAAG,sBAAsB,KAAK,CAAC,EAAE;gBACvD,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;oBAC7B,SAAS,EAAE,QAAQ;oBACnB,MAAM;oBACN,YAAY,EAAE,sBAAsB;oBACpC,sBAAsB,EAAE,OAAO,CAAC,cAAc;oBAC9C,QAAQ,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,6BAA6B;iBACpE,CAAC,CAAC;aACN;YAED,IAAI,CAAC,wBAAwB,GAAG,SAAS,CAAC;YAC1C,IAAI,CAAC,6BAA6B,GAAG,SAAS,CAAC;QACnD,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;AApDD,oCAoDC;AAED;;;;;;;;GAQG;AACI,MAAM,gBAAgB,GAAG,CAC5B,iBAA+B,EAC/B,MAAwB,EACxB,uBAA+B,GAAG,EAClC,yBAAiC,IAAI,EACvC,EAAE,CAAC,IAAI,YAAY,CAAC,iBAAiB,EAAE,MAAM,EAAE,oBAAoB,EAAE,sBAAsB,CAAC,CAAA;AALjF,QAAA,gBAAgB,oBAKiE","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ITelemetryLogger } from \"@fluidframework/common-definitions\";\nimport { assert, performance } from \"@fluidframework/common-utils\";\nimport { ISequencedDocumentMessage } from \"@fluidframework/protocol-definitions\";\nimport { ChildLogger } from \"@fluidframework/telemetry-utils\";\nimport EventEmitter from \"events\";\n\nexport class BatchTracker {\n private readonly logger: ITelemetryLogger;\n private startBatchSequenceNumber: number | undefined;\n private trackedBatchCount: number = 0;\n private batchProcessingStartTimeStamp: number | undefined;\n\n constructor(\n private readonly batchEventEmitter: EventEmitter,\n logger: ITelemetryLogger,\n batchLengthThreshold: number,\n batchCountSamplingRate: number,\n dateTimeProvider: () => number = () => performance.now(),\n ) {\n this.logger = ChildLogger.create(logger, \"Batching\");\n\n this.batchEventEmitter.on(\"batchBegin\", (message: ISequencedDocumentMessage) => {\n this.startBatchSequenceNumber = message.sequenceNumber;\n this.batchProcessingStartTimeStamp = dateTimeProvider();\n this.trackedBatchCount++;\n });\n\n this.batchEventEmitter.on(\"batchEnd\", (error: any | undefined, message: ISequencedDocumentMessage) => {\n assert(\n this.startBatchSequenceNumber !== undefined && this.batchProcessingStartTimeStamp !== undefined,\n 0x2ba /* \"batchBegin must fire before batchEnd\" */);\n\n const length = message.sequenceNumber - this.startBatchSequenceNumber + 1;\n if (length >= batchLengthThreshold) {\n this.logger.sendErrorEvent({\n eventName: \"LengthTooBig\",\n length,\n threshold: batchLengthThreshold,\n batchEndSequenceNumber: message.sequenceNumber,\n duration: dateTimeProvider() - this.batchProcessingStartTimeStamp,\n batchError: error !== undefined,\n });\n }\n\n if (this.trackedBatchCount % batchCountSamplingRate === 0) {\n this.logger.sendPerformanceEvent({\n eventName: \"Length\",\n length,\n samplingRate: batchCountSamplingRate,\n batchEndSequenceNumber: message.sequenceNumber,\n duration: dateTimeProvider() - this.batchProcessingStartTimeStamp,\n });\n }\n\n this.startBatchSequenceNumber = undefined;\n this.batchProcessingStartTimeStamp = undefined;\n });\n }\n}\n\n/**\n * Track batch sizes in terms of op counts and processing times\n *\n * @param batchEventEmitter - event emitter which tracks the lifecycle of batch operations\n * @param logger - logger\n * @param batchLengthThreshold - threshold for the length of a batch when to send an error event\n * @param batchCountSamplingRate - rate for batches for which to send an event with its characteristics\n * @returns\n */\nexport const BindBatchTracker = (\n batchEventEmitter: EventEmitter,\n logger: ITelemetryLogger,\n batchLengthThreshold: number = 128,\n batchCountSamplingRate: number = 1000,\n) => new BatchTracker(batchEventEmitter, logger, batchLengthThreshold, batchCountSamplingRate)\n"]}
@@ -214,6 +214,7 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
214
214
  private readonly summaryCollection;
215
215
  private readonly summarizerNode;
216
216
  private readonly _aliasingEnabled;
217
+ private readonly _maxOpSizeInBytes;
217
218
  private readonly maxConsecutiveReconnects;
218
219
  private readonly defaultMaxConsecutiveReconnects;
219
220
  private _orderSequentiallyCalls;
@@ -231,7 +232,6 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
231
232
  get disposed(): boolean;
232
233
  private dirtyContainer;
233
234
  private emitDirtyDocumentEvent;
234
- private readonly summarizerWarning;
235
235
  /**
236
236
  * Summarizer is responsible for coordinating when to send generate and send summaries.
237
237
  * It is the main entry point for summary work.
@@ -428,6 +428,7 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
428
428
  submitDataStoreAliasOp(contents: any, localOpMetadata: unknown): void;
429
429
  uploadBlob(blob: ArrayBufferLike): Promise<IFluidHandle<ArrayBufferLike>>;
430
430
  private submit;
431
+ private submitMaybeChunkedMessages;
431
432
  private submitChunkedMessage;
432
433
  private submitSystemMessage;
433
434
  private submitRuntimeMessage;
@@ -1 +1 @@
1
- {"version":3,"file":"containerRuntime.d.ts","sourceRoot":"","sources":["../src/containerRuntime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"containerRuntime.d.ts","sourceRoot":"","sources":["../src/containerRuntime.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,7 @@ const throttler_1 = require("./throttler");
29
29
  const runWhileConnectedCoordinator_1 = require("./runWhileConnectedCoordinator");
30
30
  const garbageCollection_1 = require("./garbageCollection");
31
31
  const dataStore_1 = require("./dataStore");
32
+ const batchTracker_1 = require("./batchTracker");
32
33
  var ContainerMessageType;
33
34
  (function (ContainerMessageType) {
34
35
  // An op to be delivered to store
@@ -71,10 +72,16 @@ var RuntimeHeaders;
71
72
  /** True if the request is coming from an IFluidHandle. */
72
73
  RuntimeHeaders["viaHandle"] = "viaHandle";
73
74
  })(RuntimeHeaders = exports.RuntimeHeaders || (exports.RuntimeHeaders = {}));
74
- // Local storage key to set the default flush mode to TurnBased
75
- const turnBasedFlushModeKey = "Fluid.ContainerRuntime.FlushModeTurnBased";
76
75
  const useDataStoreAliasingKey = "Fluid.ContainerRuntime.UseDataStoreAliasing";
77
76
  const maxConsecutiveReconnectsKey = "Fluid.ContainerRuntime.MaxConsecutiveReconnects";
77
+ // Feature gate for the max op size. If the value is negative, chunking is enabled
78
+ // and all ops over 16k would be chunked. If the value is positive, all ops with
79
+ // a size strictly larger will be rejected and the container closed with an error.
80
+ const maxOpSizeInBytesKey = "Fluid.ContainerRuntime.MaxOpSizeInBytes";
81
+ // By default, we should reject any op larger than 768KB,
82
+ // in order to account for some extra overhead from serialization
83
+ // to not reach the 1MB limits in socket.io and Kafka.
84
+ const defaultMaxOpSizeInBytes = 768000;
78
85
  var RuntimeMessage;
79
86
  (function (RuntimeMessage) {
80
87
  RuntimeMessage["FluidDataStoreOp"] = "component";
@@ -363,13 +370,13 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
363
370
  this._storage = _storage;
364
371
  this.defaultMaxConsecutiveReconnects = 15;
365
372
  this._orderSequentiallyCalls = 0;
373
+ this._flushMode = runtime_definitions_1.FlushMode.TurnBased;
366
374
  this.needsFlush = false;
367
375
  this.flushTrigger = false;
368
376
  this.paused = false;
369
377
  this.consecutiveReconnects = 0;
370
378
  this._disposed = false;
371
379
  this.emitDirtyDocumentEvent = true;
372
- this.summarizerWarning = (warning) => this.mc.logger.sendTelemetryEvent({ eventName: "summarizerWarning" }, warning);
373
380
  /**
374
381
  * Used to apply stashed ops at their reference sequence number.
375
382
  * Normal op processing is synchronous, but applying stashed ops is async since the
@@ -441,11 +448,10 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
441
448
  this.chunkMap = new Map(chunks);
442
449
  this.handleContext = new containerHandleContext_1.ContainerFluidHandleContext("", this);
443
450
  this.mc = telemetry_utils_1.loggerToMonitoringContext(telemetry_utils_1.ChildLogger.create(this.logger, "ContainerRuntime"));
444
- this._flushMode =
445
- ((_b = this.mc.config.getBoolean(turnBasedFlushModeKey)) !== null && _b !== void 0 ? _b : false) ? runtime_definitions_1.FlushMode.TurnBased : runtime_definitions_1.FlushMode.Immediate;
446
451
  this._aliasingEnabled =
447
- ((_c = this.mc.config.getBoolean(useDataStoreAliasingKey)) !== null && _c !== void 0 ? _c : false) ||
448
- ((_d = runtimeOptions.useDataStoreAliasing) !== null && _d !== void 0 ? _d : false);
452
+ ((_b = this.mc.config.getBoolean(useDataStoreAliasingKey)) !== null && _b !== void 0 ? _b : false) ||
453
+ ((_c = runtimeOptions.useDataStoreAliasing) !== null && _c !== void 0 ? _c : false);
454
+ this._maxOpSizeInBytes = ((_d = this.mc.config.getNumber(maxOpSizeInBytesKey)) !== null && _d !== void 0 ? _d : defaultMaxOpSizeInBytes);
449
455
  this.maxConsecutiveReconnects = (_e = this.mc.config.getNumber(maxConsecutiveReconnectsKey)) !== null && _e !== void 0 ? _e : this.defaultMaxConsecutiveReconnects;
450
456
  this.garbageCollector = garbageCollection_1.GarbageCollector.create(this, this.runtimeOptions.gcOptions, (unusedRoutes) => this.dataStores.deleteUnusedRoutes(unusedRoutes), (nodePath) => this.dataStores.getNodePackagePath(nodePath),
451
457
  /**
@@ -530,7 +536,6 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
530
536
  throttler_1.formExponentialFn({ coefficient: 20, initialDelay: 0 })), {
531
537
  initialDelayMs: this.runtimeOptions.summaryOptions.initialSummarizerDelayMs,
532
538
  }, this.runtimeOptions.summaryOptions.summarizerOptions);
533
- this.summaryManager.on("summarizerWarning", this.summarizerWarning);
534
539
  this.summaryManager.start();
535
540
  }
536
541
  }
@@ -561,6 +566,7 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
561
566
  // logging container load stats
562
567
  this.logger.sendTelemetryEvent(Object.assign(Object.assign(Object.assign({ eventName: "ContainerLoadStats" }, this.createContainerMetadata), this.dataStores.containerLoadStats), { summaryCount: this.summaryCount, summaryFormatVersion: metadata === null || metadata === void 0 ? void 0 : metadata.summaryFormatVersion, disableIsolatedChannels: metadata === null || metadata === void 0 ? void 0 : metadata.disableIsolatedChannels, gcVersion: metadata === null || metadata === void 0 ? void 0 : metadata.gcFeature }));
563
568
  connectionTelemetry_1.ReportOpPerfTelemetry(this.context.clientId, this.deltaManager, this.logger);
569
+ batchTracker_1.BindBatchTracker(this, this.logger);
564
570
  }
565
571
  get IContainerRuntime() { return this; }
566
572
  get IFluidRouter() { return this; }
@@ -576,7 +582,8 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
576
582
  var _a, _b, _c;
577
583
  // If taggedLogger exists, use it. Otherwise, wrap the vanilla logger:
578
584
  // back-compat: Remove the TaggedLoggerAdapter fallback once all the host are using loader > 0.45
579
- const passLogger = (_a = context.taggedLogger) !== null && _a !== void 0 ? _a : new telemetry_utils_1.TaggedLoggerAdapter(context.logger);
585
+ const backCompatContext = context;
586
+ const passLogger = (_a = backCompatContext.taggedLogger) !== null && _a !== void 0 ? _a : new telemetry_utils_1.TaggedLoggerAdapter(backCompatContext.logger);
580
587
  const logger = telemetry_utils_1.ChildLogger.create(passLogger, undefined, {
581
588
  all: {
582
589
  runtimeVersion: packageVersion_1.pkgVersion,
@@ -637,7 +644,7 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
637
644
  // Unless bypass is explicitly set, then take action when sequence numbers mismatch.
638
645
  if (loadSequenceNumberVerification !== "bypass" && runtimeSequenceNumber !== protocolSequenceNumber) {
639
646
  // "Load from summary, runtime metadata sequenceNumber !== initialSequenceNumber"
640
- const error = new container_utils_1.DataCorruptionError("SummaryMetadataMismatch", { runtimeSequenceNumber, protocolSequenceNumber });
647
+ const error = new container_utils_1.DataCorruptionError("Summary metadata mismatch", { runtimeSequenceNumber, protocolSequenceNumber });
641
648
  if (loadSequenceNumberVerification === "log") {
642
649
  logger.sendErrorEvent({ eventName: "SequenceNumberMismatch" }, error);
643
650
  }
@@ -739,7 +746,6 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
739
746
  attachState: this.attachState,
740
747
  }, error);
741
748
  if (this.summaryManager !== undefined) {
742
- this.summaryManager.off("summarizerWarning", this.summarizerWarning);
743
749
  this.summaryManager.dispose();
744
750
  }
745
751
  this.garbageCollector.dispose();
@@ -903,7 +909,7 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
903
909
  if (this.consecutiveReconnects === Math.floor(this.maxConsecutiveReconnects / 2)) {
904
910
  // If we're halfway through the max reconnects, send an event in order
905
911
  // to better identify false positives, if any. If the rate of this event
906
- // matches `MaxReconnectsWithNoProgress`, we can safely cut down
912
+ // matches Container Close count below, we can safely cut down
907
913
  // maxConsecutiveReconnects to half.
908
914
  this.mc.logger.sendTelemetryEvent({
909
915
  eventName: "ReconnectsWithNoProgress",
@@ -968,7 +974,7 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
968
974
  this.deltaManager.off("op", this.onOp);
969
975
  this.context.pendingLocalState = undefined;
970
976
  if (!this.shouldContinueReconnecting()) {
971
- this.closeFn(new container_utils_1.GenericError("MaxReconnectsWithNoProgress", undefined, // error
977
+ this.closeFn(new container_utils_1.GenericError("Runtime detected too many reconnects with no progress syncing local ops", undefined, // error
972
978
  { attempts: this.consecutiveReconnects }));
973
979
  return;
974
980
  }
@@ -1114,7 +1120,7 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
1114
1120
  callback();
1115
1121
  }
1116
1122
  catch (error) {
1117
- this.closeFn(new container_utils_1.GenericError("orderSequentiallyCallbackException", error));
1123
+ this.closeFn(new container_utils_1.GenericError("orderSequentially callback exception", error));
1118
1124
  throw error; // throw the original error for the consumer of the runtime
1119
1125
  }
1120
1126
  finally {
@@ -1371,7 +1377,7 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
1371
1377
  * @param options - options controlling how the summary is generated or submitted
1372
1378
  */
1373
1379
  async submitSummary(options) {
1374
- var _a, _b;
1380
+ var _a, _b, _c;
1375
1381
  const { fullTree, refreshLatestAck, summaryLogger } = options;
1376
1382
  if (refreshLatestAck) {
1377
1383
  const latestSummaryRefSeq = await this.refreshLatestSummaryAckFromServer(telemetry_utils_1.ChildLogger.create(summaryLogger, undefined, { all: { safeSummary: true } }));
@@ -1389,6 +1395,14 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
1389
1395
  await this.deltaManager.inbound.pause();
1390
1396
  const summaryRefSeqNum = this.deltaManager.lastSequenceNumber;
1391
1397
  const message = `Summary @${summaryRefSeqNum}:${this.deltaManager.minimumSequenceNumber}`;
1398
+ // We should be here is we haven't processed be here. If we are of if the last message's sequence number
1399
+ // doesn't match the last processed sequence number, log an error.
1400
+ if (summaryRefSeqNum !== ((_a = this.deltaManager.lastMessage) === null || _a === void 0 ? void 0 : _a.sequenceNumber)) {
1401
+ summaryLogger.sendErrorEvent({
1402
+ eventName: "LastSequenceMismatch",
1403
+ message,
1404
+ });
1405
+ }
1392
1406
  this.summarizerNode.startSummary(summaryRefSeqNum, summaryLogger);
1393
1407
  // Helper function to check whether we should still continue between each async step.
1394
1408
  const checkContinue = () => {
@@ -1453,7 +1467,7 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
1453
1467
  const dataStoreTree = this.disableIsolatedChannels ? summaryTree : summaryTree.tree[runtime_definitions_1.channelsTreeName];
1454
1468
  common_utils_1.assert(dataStoreTree.type === protocol_definitions_1.SummaryType.Tree, 0x1fc /* "summary is not a tree" */);
1455
1469
  const handleCount = Object.values(dataStoreTree.tree).filter((value) => value.type === protocol_definitions_1.SummaryType.Handle).length;
1456
- const summaryStats = Object.assign({ dataStoreCount: this.dataStores.size, summarizedDataStoreCount: this.dataStores.size - handleCount, gcStateUpdatedDataStoreCount: (_a = summarizeResult.gcStats) === null || _a === void 0 ? void 0 : _a.updatedDataStoreCount }, partialStats);
1470
+ const summaryStats = Object.assign({ dataStoreCount: this.dataStores.size, summarizedDataStoreCount: this.dataStores.size - handleCount, gcStateUpdatedDataStoreCount: (_b = summarizeResult.gcStats) === null || _b === void 0 ? void 0 : _b.updatedDataStoreCount }, partialStats);
1457
1471
  const generateSummaryData = {
1458
1472
  referenceSequenceNumber: summaryRefSeqNum,
1459
1473
  summaryTree,
@@ -1469,7 +1483,7 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
1469
1483
  const summaryContext = lastAck === undefined
1470
1484
  ? {
1471
1485
  proposalHandle: undefined,
1472
- ackHandle: (_b = this.context.getLoadedFromVersion()) === null || _b === void 0 ? void 0 : _b.id,
1486
+ ackHandle: (_c = this.context.getLoadedFromVersion()) === null || _c === void 0 ? void 0 : _c.id,
1473
1487
  referenceSequenceNumber: summaryRefSeqNum,
1474
1488
  }
1475
1489
  : {
@@ -1600,16 +1614,7 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
1600
1614
  });
1601
1615
  }
1602
1616
  }
1603
- // Note: Chunking will increase content beyond maxOpSize because we JSON'ing JSON payload -
1604
- // there will be a lot of escape characters that can make it up to 2x bigger!
1605
- // This is Ok, because DeltaManager.shouldSplit() will have 2 * maxMessageSize limit
1606
- if (!serializedContent || serializedContent.length <= maxOpSize) {
1607
- clientSequenceNumber = this.submitRuntimeMessage(type, content,
1608
- /* batch: */ this._flushMode === runtime_definitions_1.FlushMode.TurnBased, opMetadataInternal);
1609
- }
1610
- else {
1611
- clientSequenceNumber = this.submitChunkedMessage(type, serializedContent, maxOpSize);
1612
- }
1617
+ clientSequenceNumber = this.submitMaybeChunkedMessages(type, content, serializedContent, maxOpSize, this._flushMode === runtime_definitions_1.FlushMode.TurnBased, opMetadataInternal);
1613
1618
  }
1614
1619
  // Let the PendingStateManager know that a message was submitted.
1615
1620
  this.pendingStateManager.onSubmitMessage(type, clientSequenceNumber, this.deltaManager.lastSequenceNumber, content, localOpMetadata, opMetadataInternal);
@@ -1617,6 +1622,35 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
1617
1622
  this.updateDocumentDirtyState(true);
1618
1623
  }
1619
1624
  }
1625
+ submitMaybeChunkedMessages(type, content, serializedContent, serverMaxOpSize, batch, opMetadataInternal = undefined) {
1626
+ if (this._maxOpSizeInBytes >= 0) {
1627
+ // Chunking disabled
1628
+ if (!serializedContent || serializedContent.length <= this._maxOpSizeInBytes) {
1629
+ return this.submitRuntimeMessage(type, content, batch, opMetadataInternal);
1630
+ }
1631
+ // When chunking is disabled, we ignore the server max message size
1632
+ // and if the content length is larger than the client configured message size
1633
+ // instead of splitting the content, we will fail by explicitly close the container
1634
+ this.closeFn(new container_utils_1.GenericError("OpTooLarge",
1635
+ /* error */ undefined, {
1636
+ length: {
1637
+ value: serializedContent.length,
1638
+ tag: telemetry_utils_1.TelemetryDataTag.PackageData,
1639
+ },
1640
+ limit: {
1641
+ value: this._maxOpSizeInBytes,
1642
+ tag: telemetry_utils_1.TelemetryDataTag.PackageData,
1643
+ },
1644
+ }));
1645
+ return -1;
1646
+ }
1647
+ // Chunking enabled, fallback on the server's max message size
1648
+ // and split the content accordingly
1649
+ if (!serializedContent || serializedContent.length <= serverMaxOpSize) {
1650
+ return this.submitRuntimeMessage(type, content, batch, opMetadataInternal);
1651
+ }
1652
+ return this.submitChunkedMessage(type, serializedContent, serverMaxOpSize);
1653
+ }
1620
1654
  submitChunkedMessage(type, content, maxOpSize) {
1621
1655
  const contentLength = content.length;
1622
1656
  const chunkN = Math.floor((contentLength - 1) / maxOpSize) + 1;
@@ -1695,6 +1729,8 @@ class ContainerRuntime extends common_utils_1.TypedEventEmitter {
1695
1729
  const readAndParseBlob = async (id) => driver_utils_1.readAndParse(this.storage, id);
1696
1730
  const result = await this.summarizerNode.refreshLatestSummary(proposalHandle, summaryRefSeq, async () => this.fetchSnapshotFromStorage(ackHandle, summaryLogger, {
1697
1731
  eventName: "RefreshLatestSummaryGetSnapshot",
1732
+ ackHandle,
1733
+ summaryRefSeq,
1698
1734
  fetchLatest: false,
1699
1735
  }), readAndParseBlob, summaryLogger);
1700
1736
  // Notify the garbage collector so it can update its latest summary state.