@fluidframework/container-runtime 2.0.0-internal.1.4.1 → 2.0.0-internal.1.4.3
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/dist/containerRuntime.d.ts +1 -1
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +0 -1
- package/dist/containerRuntime.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/summarizerHeuristics.d.ts.map +1 -1
- package/dist/summarizerHeuristics.js +3 -0
- package/dist/summarizerHeuristics.js.map +1 -1
- package/lib/containerRuntime.d.ts +1 -1
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +0 -1
- package/lib/containerRuntime.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/summarizerHeuristics.d.ts.map +1 -1
- package/lib/summarizerHeuristics.js +3 -0
- package/lib/summarizerHeuristics.js.map +1 -1
- package/package.json +20 -17
- package/src/containerRuntime.ts +1 -3
- package/src/packageVersion.ts +1 -1
- package/src/summarizerHeuristics.ts +3 -0
package/lib/packageVersion.d.ts
CHANGED
|
@@ -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.0.0-internal.1.4.
|
|
8
|
+
export declare const pkgVersion = "2.0.0-internal.1.4.3";
|
|
9
9
|
//# sourceMappingURL=packageVersion.d.ts.map
|
package/lib/packageVersion.js
CHANGED
|
@@ -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.0.0-internal.1.4.
|
|
8
|
+
export const pkgVersion = "2.0.0-internal.1.4.3";
|
|
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,sBAAsB,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.0.0-internal.1.4.
|
|
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,sBAAsB,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.0.0-internal.1.4.3\";\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summarizerHeuristics.d.ts","sourceRoot":"","sources":["../src/summarizerHeuristics.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAEtE,OAAO,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EACH,uBAAuB,EACvB,yBAAyB,EACzB,iBAAiB,EACjB,yBAAyB,EAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,4EAA4E;AAC5E,qBAAa,sBAAuB,YAAW,uBAAuB;IAoCvD,oBAAoB,EAAE,MAAM;IAnCvC,SAAS,CAAC,YAAY,EAAE,iBAAiB,CAAC;IAC1C,IAAW,WAAW,IAAI,iBAAiB,CAE1C;IAED,SAAS,CAAC,sBAAsB,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAC9D,IAAW,qBAAqB,IAAI,QAAQ,CAAC,iBAAiB,CAAC,CAE9D;IAEM,gBAAgB,EAAE,MAAM,CAAK;IAC7B,YAAY,EAAE,MAAM,CAAK;IACzB,gBAAgB,EAAE,OAAO,CAAS;IAEzC;;;OAGG;IACF,MAAM;IACP,OAAO,CAAC,kBAAkB,CAAa;IAEvC;;;OAGG;IACH,OAAO,CAAC,kBAAkB,CAAa;IAEhC,aAAa,EAAE,MAAM,CAAK;IACjC;;;OAGG;IACH,OAAO,CAAC,qBAAqB,CAAa;gBAG/B,oBAAoB,EAAE,MAAM;IACnC,wFAAwF;IACxF,eAAe,EAAE,iBAAiB;IAM/B,4BAA4B,CAAC,WAAW,EAAE,QAAQ,CAAC,iBAAiB,CAAC;IAKrE,aAAa,CAAC,iBAAiB,CAAC,EAAE,MAAM;IAWxC,2BAA2B;CAYrC;AAED;;GAEG;AACH,qBAAa,wBAAyB,YAAW,yBAAyB;IAKlE,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IARxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoC;gBAG5C,aAAa,EAAE,uBAAuB,EACtC,aAAa,EAAE,+BAA+B,EAC/D,YAAY,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,EAC9B,MAAM,EAAE,gBAAgB,EACxB,mBAAmB,GAAE,yBAAyB,EAA2C;IAiB9G,IAAW,QAAQ,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"summarizerHeuristics.d.ts","sourceRoot":"","sources":["../src/summarizerHeuristics.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAEtE,OAAO,EAAE,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EACH,uBAAuB,EACvB,yBAAyB,EACzB,iBAAiB,EACjB,yBAAyB,EAC5B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,4EAA4E;AAC5E,qBAAa,sBAAuB,YAAW,uBAAuB;IAoCvD,oBAAoB,EAAE,MAAM;IAnCvC,SAAS,CAAC,YAAY,EAAE,iBAAiB,CAAC;IAC1C,IAAW,WAAW,IAAI,iBAAiB,CAE1C;IAED,SAAS,CAAC,sBAAsB,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC;IAC9D,IAAW,qBAAqB,IAAI,QAAQ,CAAC,iBAAiB,CAAC,CAE9D;IAEM,gBAAgB,EAAE,MAAM,CAAK;IAC7B,YAAY,EAAE,MAAM,CAAK;IACzB,gBAAgB,EAAE,OAAO,CAAS;IAEzC;;;OAGG;IACF,MAAM;IACP,OAAO,CAAC,kBAAkB,CAAa;IAEvC;;;OAGG;IACH,OAAO,CAAC,kBAAkB,CAAa;IAEhC,aAAa,EAAE,MAAM,CAAK;IACjC;;;OAGG;IACH,OAAO,CAAC,qBAAqB,CAAa;gBAG/B,oBAAoB,EAAE,MAAM;IACnC,wFAAwF;IACxF,eAAe,EAAE,iBAAiB;IAM/B,4BAA4B,CAAC,WAAW,EAAE,QAAQ,CAAC,iBAAiB,CAAC;IAKrE,aAAa,CAAC,iBAAiB,CAAC,EAAE,MAAM;IAWxC,2BAA2B;CAYrC;AAED;;GAEG;AACH,qBAAa,wBAAyB,YAAW,yBAAyB;IAKlE,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAE9B,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,mBAAmB;IARxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAoC;gBAG5C,aAAa,EAAE,uBAAuB,EACtC,aAAa,EAAE,+BAA+B,EAC/D,YAAY,EAAE,CAAC,MAAM,EAAE,eAAe,KAAK,IAAI,EAC9B,MAAM,EAAE,gBAAgB,EACxB,mBAAmB,GAAE,yBAAyB,EAA2C;IAiB9G,IAAW,QAAQ,IAAI,MAAM,CAoB5B;IAED,IAAW,eAAe,IAAI,MAAM,CAEnC;IAEM,KAAK;IAIL,GAAG;IAUH,oBAAoB,IAAI,OAAO;IAa/B,OAAO;CAGjB"}
|
|
@@ -82,6 +82,9 @@ export class SummarizeHeuristicRunner {
|
|
|
82
82
|
};
|
|
83
83
|
}
|
|
84
84
|
get idleTime() {
|
|
85
|
+
if (this.configuration.idleTime !== undefined) {
|
|
86
|
+
return this.configuration.idleTime;
|
|
87
|
+
}
|
|
85
88
|
const maxIdleTime = this.configuration.maxIdleTime;
|
|
86
89
|
const minIdleTime = this.configuration.minIdleTime;
|
|
87
90
|
const weightedNumOfOps = getWeightedNumberOfOps(this.heuristicData.numRuntimeOps, this.heuristicData.numNonRuntimeOps, this.configuration.runtimeOpWeight, this.configuration.nonRuntimeOpWeight);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summarizerHeuristics.js","sourceRoot":"","sources":["../src/summarizerHeuristics.ts"],"names":[],"mappings":"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","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 { Timer } from \"@fluidframework/common-utils\";\nimport { ISummaryConfigurationHeuristics } from \"./containerRuntime\";\nimport {\n ISummarizeHeuristicData,\n ISummarizeHeuristicRunner,\n ISummarizeAttempt,\n ISummaryHeuristicStrategy,\n} from \"./summarizerTypes\";\nimport { SummarizeReason } from \"./summaryGenerator\";\n\n/** Simple implementation of class for tracking summarize heuristic data. */\nexport class SummarizeHeuristicData implements ISummarizeHeuristicData {\n protected _lastAttempt: ISummarizeAttempt;\n public get lastAttempt(): ISummarizeAttempt {\n return this._lastAttempt;\n }\n\n protected _lastSuccessfulSummary: Readonly<ISummarizeAttempt>;\n public get lastSuccessfulSummary(): Readonly<ISummarizeAttempt> {\n return this._lastSuccessfulSummary;\n }\n\n public numNonRuntimeOps: number = 0;\n public totalOpsSize: number = 0;\n public hasMissingOpData: boolean = false;\n\n /**\n * Cumulative size in bytes of all the ops at the beginning of the summarization attempt.\n * Is used to adjust totalOpsSize appropriately after successful summarization.\n */\n /** */\n private totalOpsSizeBefore: number = 0;\n\n /**\n * Number of system ops at beginning of attempting to summarize.\n * Is used to adjust numSystemOps appropriately after successful summarization.\n */\n private numSystemOpsBefore: number = 0;\n\n public numRuntimeOps: number = 0;\n /**\n * Number of non-system ops at beginning of attempting to summarize.\n * Is used to adjust numNonSystemOps appropriately after successful summarization.\n */\n private numNonSystemOpsBefore: number = 0;\n\n constructor(\n public lastOpSequenceNumber: number,\n /** Baseline attempt data used for comparisons with subsequent attempts/calculations. */\n attemptBaseline: ISummarizeAttempt,\n ) {\n this._lastAttempt = attemptBaseline;\n this._lastSuccessfulSummary = { ...attemptBaseline };\n }\n\n public updateWithLastSummaryAckInfo(lastSummary: Readonly<ISummarizeAttempt>) {\n this._lastAttempt = lastSummary;\n this._lastSuccessfulSummary = { ...lastSummary };\n }\n\n public recordAttempt(refSequenceNumber?: number) {\n this._lastAttempt = {\n refSequenceNumber: refSequenceNumber ?? this.lastOpSequenceNumber,\n summaryTime: Date.now(),\n };\n\n this.numSystemOpsBefore = this.numNonRuntimeOps;\n this.numNonSystemOpsBefore = this.numRuntimeOps;\n this.totalOpsSizeBefore = this.totalOpsSize;\n }\n\n public markLastAttemptAsSuccessful() {\n this._lastSuccessfulSummary = { ...this.lastAttempt };\n\n this.numNonRuntimeOps -= this.numSystemOpsBefore;\n this.numSystemOpsBefore = 0;\n\n this.numRuntimeOps -= this.numNonSystemOpsBefore;\n this.numNonSystemOpsBefore = 0;\n\n this.totalOpsSize -= this.totalOpsSizeBefore;\n this.totalOpsSizeBefore = 0;\n }\n}\n\n/**\n * This class contains the heuristics for when to summarize.\n */\nexport class SummarizeHeuristicRunner implements ISummarizeHeuristicRunner {\n private readonly idleTimer: Timer | undefined;\n private readonly runSummarize: (reason: SummarizeReason) => void;\n\n public constructor(\n private readonly heuristicData: ISummarizeHeuristicData,\n private readonly configuration: ISummaryConfigurationHeuristics,\n trySummarize: (reason: SummarizeReason) => void,\n private readonly logger: ITelemetryLogger,\n private readonly summarizeStrategies: ISummaryHeuristicStrategy[] = getDefaultSummaryHeuristicStrategies(),\n ) {\n this.idleTimer = new Timer(\n this.idleTime,\n () => this.runSummarize(\"idle\"));\n\n this.runSummarize = (reason: SummarizeReason) => {\n this.idleTimer?.clear();\n\n // We shouldn't attempt a summary if there are no new processed ops\n const opsSinceLastAck = this.opsSinceLastAck;\n if (opsSinceLastAck > 0) {\n trySummarize(reason);\n }\n };\n }\n\n public get idleTime(): number {\n const maxIdleTime = this.configuration.maxIdleTime;\n const minIdleTime = this.configuration.minIdleTime;\n const weightedNumOfOps = getWeightedNumberOfOps(\n this.heuristicData.numRuntimeOps,\n this.heuristicData.numNonRuntimeOps,\n this.configuration.runtimeOpWeight,\n this.configuration.nonRuntimeOpWeight,\n );\n const pToMaxOps = weightedNumOfOps * 1.0 / this.configuration.maxOps;\n\n if (pToMaxOps >= 1) {\n return minIdleTime;\n }\n\n // Return a ratioed idle time based on the percentage of ops\n return maxIdleTime - ((maxIdleTime - minIdleTime) * pToMaxOps);\n }\n\n public get opsSinceLastAck(): number {\n return this.heuristicData.lastOpSequenceNumber - this.heuristicData.lastSuccessfulSummary.refSequenceNumber;\n }\n\n public start() {\n this.idleTimer?.start(this.idleTime);\n }\n\n public run() {\n for (const strategy of this.summarizeStrategies) {\n if (strategy.shouldRunSummary(this.configuration, this.heuristicData)) {\n return this.runSummarize(strategy.summarizeReason);\n }\n }\n\n this.idleTimer?.restart(this.idleTime);\n }\n\n public shouldRunLastSummary(): boolean {\n const opsSinceLastAck = this.opsSinceLastAck;\n const minOpsForLastSummaryAttempt = this.configuration.minOpsForLastSummaryAttempt;\n\n this.logger.sendTelemetryEvent({\n eventName: \"ShouldRunLastSummary\",\n opsSinceLastAck,\n minOpsForLastSummaryAttempt,\n });\n\n return opsSinceLastAck >= minOpsForLastSummaryAttempt;\n }\n\n public dispose() {\n this.idleTimer?.clear();\n }\n}\n\n/** Strategy used to run a summary when it's been a while since our last successful summary */\nclass MaxTimeSummaryHeuristicStrategy implements ISummaryHeuristicStrategy {\n public readonly summarizeReason: Readonly<SummarizeReason> = \"maxTime\";\n\n public shouldRunSummary(\n configuration: ISummaryConfigurationHeuristics,\n heuristicData: ISummarizeHeuristicData,\n ): boolean {\n const timeSinceLastSummary = Date.now() - heuristicData.lastSuccessfulSummary.summaryTime;\n return timeSinceLastSummary > configuration.maxTime;\n }\n}\n\nfunction getWeightedNumberOfOps(\n runtimeOpCount: number,\n nonRuntimeOpCount: number,\n runtimeOpWeight: number,\n nonRuntimeOpWeight: number,\n): number {\n return (runtimeOpWeight * runtimeOpCount)\n + (nonRuntimeOpWeight * nonRuntimeOpCount);\n}\n\n/** Strategy used to do a weighted analysis on the ops we've processed since the last successful summary */\nclass WeightedOpsSummaryHeuristicStrategy implements ISummaryHeuristicStrategy {\n public readonly summarizeReason: Readonly<SummarizeReason> = \"maxOps\";\n\n public shouldRunSummary(\n configuration: ISummaryConfigurationHeuristics,\n heuristicData: ISummarizeHeuristicData,\n ): boolean {\n const weightedNumOfOps = getWeightedNumberOfOps(\n heuristicData.numRuntimeOps,\n heuristicData.numNonRuntimeOps,\n configuration.runtimeOpWeight,\n configuration.nonRuntimeOpWeight,\n );\n return weightedNumOfOps > configuration.maxOps;\n }\n}\n\nfunction getDefaultSummaryHeuristicStrategies() {\n return [\n new MaxTimeSummaryHeuristicStrategy(),\n new WeightedOpsSummaryHeuristicStrategy(),\n ];\n}\n"]}
|
|
1
|
+
{"version":3,"file":"summarizerHeuristics.js","sourceRoot":"","sources":["../src/summarizerHeuristics.ts"],"names":[],"mappings":"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","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 { Timer } from \"@fluidframework/common-utils\";\nimport { ISummaryConfigurationHeuristics } from \"./containerRuntime\";\nimport {\n ISummarizeHeuristicData,\n ISummarizeHeuristicRunner,\n ISummarizeAttempt,\n ISummaryHeuristicStrategy,\n} from \"./summarizerTypes\";\nimport { SummarizeReason } from \"./summaryGenerator\";\n\n/** Simple implementation of class for tracking summarize heuristic data. */\nexport class SummarizeHeuristicData implements ISummarizeHeuristicData {\n protected _lastAttempt: ISummarizeAttempt;\n public get lastAttempt(): ISummarizeAttempt {\n return this._lastAttempt;\n }\n\n protected _lastSuccessfulSummary: Readonly<ISummarizeAttempt>;\n public get lastSuccessfulSummary(): Readonly<ISummarizeAttempt> {\n return this._lastSuccessfulSummary;\n }\n\n public numNonRuntimeOps: number = 0;\n public totalOpsSize: number = 0;\n public hasMissingOpData: boolean = false;\n\n /**\n * Cumulative size in bytes of all the ops at the beginning of the summarization attempt.\n * Is used to adjust totalOpsSize appropriately after successful summarization.\n */\n /** */\n private totalOpsSizeBefore: number = 0;\n\n /**\n * Number of system ops at beginning of attempting to summarize.\n * Is used to adjust numSystemOps appropriately after successful summarization.\n */\n private numSystemOpsBefore: number = 0;\n\n public numRuntimeOps: number = 0;\n /**\n * Number of non-system ops at beginning of attempting to summarize.\n * Is used to adjust numNonSystemOps appropriately after successful summarization.\n */\n private numNonSystemOpsBefore: number = 0;\n\n constructor(\n public lastOpSequenceNumber: number,\n /** Baseline attempt data used for comparisons with subsequent attempts/calculations. */\n attemptBaseline: ISummarizeAttempt,\n ) {\n this._lastAttempt = attemptBaseline;\n this._lastSuccessfulSummary = { ...attemptBaseline };\n }\n\n public updateWithLastSummaryAckInfo(lastSummary: Readonly<ISummarizeAttempt>) {\n this._lastAttempt = lastSummary;\n this._lastSuccessfulSummary = { ...lastSummary };\n }\n\n public recordAttempt(refSequenceNumber?: number) {\n this._lastAttempt = {\n refSequenceNumber: refSequenceNumber ?? this.lastOpSequenceNumber,\n summaryTime: Date.now(),\n };\n\n this.numSystemOpsBefore = this.numNonRuntimeOps;\n this.numNonSystemOpsBefore = this.numRuntimeOps;\n this.totalOpsSizeBefore = this.totalOpsSize;\n }\n\n public markLastAttemptAsSuccessful() {\n this._lastSuccessfulSummary = { ...this.lastAttempt };\n\n this.numNonRuntimeOps -= this.numSystemOpsBefore;\n this.numSystemOpsBefore = 0;\n\n this.numRuntimeOps -= this.numNonSystemOpsBefore;\n this.numNonSystemOpsBefore = 0;\n\n this.totalOpsSize -= this.totalOpsSizeBefore;\n this.totalOpsSizeBefore = 0;\n }\n}\n\n/**\n * This class contains the heuristics for when to summarize.\n */\nexport class SummarizeHeuristicRunner implements ISummarizeHeuristicRunner {\n private readonly idleTimer: Timer | undefined;\n private readonly runSummarize: (reason: SummarizeReason) => void;\n\n public constructor(\n private readonly heuristicData: ISummarizeHeuristicData,\n private readonly configuration: ISummaryConfigurationHeuristics,\n trySummarize: (reason: SummarizeReason) => void,\n private readonly logger: ITelemetryLogger,\n private readonly summarizeStrategies: ISummaryHeuristicStrategy[] = getDefaultSummaryHeuristicStrategies(),\n ) {\n this.idleTimer = new Timer(\n this.idleTime,\n () => this.runSummarize(\"idle\"));\n\n this.runSummarize = (reason: SummarizeReason) => {\n this.idleTimer?.clear();\n\n // We shouldn't attempt a summary if there are no new processed ops\n const opsSinceLastAck = this.opsSinceLastAck;\n if (opsSinceLastAck > 0) {\n trySummarize(reason);\n }\n };\n }\n\n public get idleTime(): number {\n if (this.configuration.idleTime !== undefined) {\n return this.configuration.idleTime;\n }\n const maxIdleTime = this.configuration.maxIdleTime;\n const minIdleTime = this.configuration.minIdleTime;\n const weightedNumOfOps = getWeightedNumberOfOps(\n this.heuristicData.numRuntimeOps,\n this.heuristicData.numNonRuntimeOps,\n this.configuration.runtimeOpWeight,\n this.configuration.nonRuntimeOpWeight,\n );\n const pToMaxOps = weightedNumOfOps * 1.0 / this.configuration.maxOps;\n\n if (pToMaxOps >= 1) {\n return minIdleTime;\n }\n\n // Return a ratioed idle time based on the percentage of ops\n return maxIdleTime - ((maxIdleTime - minIdleTime) * pToMaxOps);\n }\n\n public get opsSinceLastAck(): number {\n return this.heuristicData.lastOpSequenceNumber - this.heuristicData.lastSuccessfulSummary.refSequenceNumber;\n }\n\n public start() {\n this.idleTimer?.start(this.idleTime);\n }\n\n public run() {\n for (const strategy of this.summarizeStrategies) {\n if (strategy.shouldRunSummary(this.configuration, this.heuristicData)) {\n return this.runSummarize(strategy.summarizeReason);\n }\n }\n\n this.idleTimer?.restart(this.idleTime);\n }\n\n public shouldRunLastSummary(): boolean {\n const opsSinceLastAck = this.opsSinceLastAck;\n const minOpsForLastSummaryAttempt = this.configuration.minOpsForLastSummaryAttempt;\n\n this.logger.sendTelemetryEvent({\n eventName: \"ShouldRunLastSummary\",\n opsSinceLastAck,\n minOpsForLastSummaryAttempt,\n });\n\n return opsSinceLastAck >= minOpsForLastSummaryAttempt;\n }\n\n public dispose() {\n this.idleTimer?.clear();\n }\n}\n\n/** Strategy used to run a summary when it's been a while since our last successful summary */\nclass MaxTimeSummaryHeuristicStrategy implements ISummaryHeuristicStrategy {\n public readonly summarizeReason: Readonly<SummarizeReason> = \"maxTime\";\n\n public shouldRunSummary(\n configuration: ISummaryConfigurationHeuristics,\n heuristicData: ISummarizeHeuristicData,\n ): boolean {\n const timeSinceLastSummary = Date.now() - heuristicData.lastSuccessfulSummary.summaryTime;\n return timeSinceLastSummary > configuration.maxTime;\n }\n}\n\nfunction getWeightedNumberOfOps(\n runtimeOpCount: number,\n nonRuntimeOpCount: number,\n runtimeOpWeight: number,\n nonRuntimeOpWeight: number,\n): number {\n return (runtimeOpWeight * runtimeOpCount)\n + (nonRuntimeOpWeight * nonRuntimeOpCount);\n}\n\n/** Strategy used to do a weighted analysis on the ops we've processed since the last successful summary */\nclass WeightedOpsSummaryHeuristicStrategy implements ISummaryHeuristicStrategy {\n public readonly summarizeReason: Readonly<SummarizeReason> = \"maxOps\";\n\n public shouldRunSummary(\n configuration: ISummaryConfigurationHeuristics,\n heuristicData: ISummarizeHeuristicData,\n ): boolean {\n const weightedNumOfOps = getWeightedNumberOfOps(\n heuristicData.numRuntimeOps,\n heuristicData.numNonRuntimeOps,\n configuration.runtimeOpWeight,\n configuration.nonRuntimeOpWeight,\n );\n return weightedNumOfOps > configuration.maxOps;\n }\n}\n\nfunction getDefaultSummaryHeuristicStrategies() {\n return [\n new MaxTimeSummaryHeuristicStrategy(),\n new WeightedOpsSummaryHeuristicStrategy(),\n ];\n}\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/container-runtime",
|
|
3
|
-
"version": "2.0.0-internal.1.4.
|
|
3
|
+
"version": "2.0.0-internal.1.4.3",
|
|
4
4
|
"description": "Fluid container runtime",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -63,19 +63,19 @@
|
|
|
63
63
|
"dependencies": {
|
|
64
64
|
"@fluidframework/common-definitions": "^0.20.1",
|
|
65
65
|
"@fluidframework/common-utils": "^1.0.0",
|
|
66
|
-
"@fluidframework/container-definitions": "^2.0.0-internal.1.4.
|
|
67
|
-
"@fluidframework/container-runtime-definitions": "^2.0.0-internal.1.4.
|
|
68
|
-
"@fluidframework/container-utils": "^2.0.0-internal.1.4.
|
|
69
|
-
"@fluidframework/core-interfaces": "^2.0.0-internal.1.4.
|
|
70
|
-
"@fluidframework/datastore": "^2.0.0-internal.1.4.
|
|
71
|
-
"@fluidframework/driver-definitions": "^2.0.0-internal.1.4.
|
|
72
|
-
"@fluidframework/driver-utils": "^2.0.0-internal.1.4.
|
|
73
|
-
"@fluidframework/garbage-collector": "^2.0.0-internal.1.4.
|
|
66
|
+
"@fluidframework/container-definitions": "^2.0.0-internal.1.4.3",
|
|
67
|
+
"@fluidframework/container-runtime-definitions": "^2.0.0-internal.1.4.3",
|
|
68
|
+
"@fluidframework/container-utils": "^2.0.0-internal.1.4.3",
|
|
69
|
+
"@fluidframework/core-interfaces": "^2.0.0-internal.1.4.3",
|
|
70
|
+
"@fluidframework/datastore": "^2.0.0-internal.1.4.3",
|
|
71
|
+
"@fluidframework/driver-definitions": "^2.0.0-internal.1.4.3",
|
|
72
|
+
"@fluidframework/driver-utils": "^2.0.0-internal.1.4.3",
|
|
73
|
+
"@fluidframework/garbage-collector": "^2.0.0-internal.1.4.3",
|
|
74
74
|
"@fluidframework/protocol-base": "^0.1037.2001",
|
|
75
75
|
"@fluidframework/protocol-definitions": "^1.0.0",
|
|
76
|
-
"@fluidframework/runtime-definitions": "^2.0.0-internal.1.4.
|
|
77
|
-
"@fluidframework/runtime-utils": "^2.0.0-internal.1.4.
|
|
78
|
-
"@fluidframework/telemetry-utils": "^2.0.0-internal.1.4.
|
|
76
|
+
"@fluidframework/runtime-definitions": "^2.0.0-internal.1.4.3",
|
|
77
|
+
"@fluidframework/runtime-utils": "^2.0.0-internal.1.4.3",
|
|
78
|
+
"@fluidframework/telemetry-utils": "^2.0.0-internal.1.4.3",
|
|
79
79
|
"double-ended-queue": "^2.1.0-0",
|
|
80
80
|
"uuid": "^8.3.1"
|
|
81
81
|
},
|
|
@@ -84,8 +84,8 @@
|
|
|
84
84
|
"@fluidframework/build-tools": "^0.4.4000",
|
|
85
85
|
"@fluidframework/container-runtime-previous": "npm:@fluidframework/container-runtime@^1.0.0",
|
|
86
86
|
"@fluidframework/eslint-config-fluid": "^1.0.0",
|
|
87
|
-
"@fluidframework/mocha-test-setup": "^2.0.0-internal.1.4.
|
|
88
|
-
"@fluidframework/test-runtime-utils": "^2.0.0-internal.1.4.
|
|
87
|
+
"@fluidframework/mocha-test-setup": "^2.0.0-internal.1.4.3",
|
|
88
|
+
"@fluidframework/test-runtime-utils": "^2.0.0-internal.1.4.3",
|
|
89
89
|
"@microsoft/api-extractor": "^7.22.2",
|
|
90
90
|
"@rushstack/eslint-config": "^2.5.1",
|
|
91
91
|
"@types/double-ended-queue": "^2.1.0",
|
|
@@ -108,13 +108,16 @@
|
|
|
108
108
|
"version": "2.0.0",
|
|
109
109
|
"broken": {
|
|
110
110
|
"VariableDeclaration_DefaultSummaryConfiguration": {
|
|
111
|
-
"forwardCompat": false
|
|
111
|
+
"forwardCompat": false,
|
|
112
|
+
"backCompat": false
|
|
112
113
|
},
|
|
113
114
|
"TypeAliasDeclaration_ISummaryConfiguration": {
|
|
114
|
-
"forwardCompat": false
|
|
115
|
+
"forwardCompat": false,
|
|
116
|
+
"backCompat": false
|
|
115
117
|
},
|
|
116
118
|
"InterfaceDeclaration_ISummaryConfigurationHeuristics": {
|
|
117
|
-
"forwardCompat": false
|
|
119
|
+
"forwardCompat": false,
|
|
120
|
+
"backCompat": false
|
|
118
121
|
},
|
|
119
122
|
"InterfaceDeclaration_IGeneratedSummaryStats": {
|
|
120
123
|
"backCompat": false
|
package/src/containerRuntime.ts
CHANGED
|
@@ -233,7 +233,7 @@ export interface ISummaryConfigurationHeuristics extends ISummaryBaseConfigurati
|
|
|
233
233
|
* @deprecated Please move all implementations to {@link ISummaryConfigurationHeuristics.minIdleTime} and
|
|
234
234
|
* {@link ISummaryConfigurationHeuristics.maxIdleTime} instead.
|
|
235
235
|
*/
|
|
236
|
-
idleTime
|
|
236
|
+
idleTime?: number;
|
|
237
237
|
/**
|
|
238
238
|
* Defines the maximum allowed time, since the last received Ack, before running the summary
|
|
239
239
|
* with reason maxTime.
|
|
@@ -297,8 +297,6 @@ export type ISummaryConfiguration =
|
|
|
297
297
|
export const DefaultSummaryConfiguration: ISummaryConfiguration = {
|
|
298
298
|
state: "enabled",
|
|
299
299
|
|
|
300
|
-
idleTime: 15 * 1000, // 15 secs.
|
|
301
|
-
|
|
302
300
|
minIdleTime: 0,
|
|
303
301
|
|
|
304
302
|
maxIdleTime: 30 * 1000, // 30 secs.
|
package/src/packageVersion.ts
CHANGED
|
@@ -119,6 +119,9 @@ export class SummarizeHeuristicRunner implements ISummarizeHeuristicRunner {
|
|
|
119
119
|
}
|
|
120
120
|
|
|
121
121
|
public get idleTime(): number {
|
|
122
|
+
if (this.configuration.idleTime !== undefined) {
|
|
123
|
+
return this.configuration.idleTime;
|
|
124
|
+
}
|
|
122
125
|
const maxIdleTime = this.configuration.maxIdleTime;
|
|
123
126
|
const minIdleTime = this.configuration.minIdleTime;
|
|
124
127
|
const weightedNumOfOps = getWeightedNumberOfOps(
|