@fluidframework/container-runtime 2.0.0-internal.5.4.0 → 2.0.0-internal.6.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.
- package/CHANGELOG.md +75 -0
- package/dist/batchTracker.d.ts +2 -1
- package/dist/batchTracker.d.ts.map +1 -1
- package/dist/batchTracker.js.map +1 -1
- package/dist/blobManager.d.ts +4 -1
- package/dist/blobManager.d.ts.map +1 -1
- package/dist/blobManager.js +61 -26
- package/dist/blobManager.js.map +1 -1
- package/dist/connectionTelemetry.js +10 -2
- package/dist/connectionTelemetry.js.map +1 -1
- package/dist/containerRuntime.d.ts +26 -11
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +189 -131
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStore.js +8 -2
- package/dist/dataStore.js.map +1 -1
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +24 -26
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStores.d.ts +20 -4
- package/dist/dataStores.d.ts.map +1 -1
- package/dist/dataStores.js +107 -53
- package/dist/dataStores.js.map +1 -1
- package/dist/deltaManagerProxyBase.d.ts +35 -0
- package/dist/deltaManagerProxyBase.d.ts.map +1 -0
- package/dist/deltaManagerProxyBase.js +77 -0
- package/dist/deltaManagerProxyBase.js.map +1 -0
- package/dist/deltaManagerSummarizerProxy.d.ts +1 -1
- package/dist/deltaManagerSummarizerProxy.d.ts.map +1 -1
- package/dist/deltaManagerSummarizerProxy.js +2 -2
- package/dist/deltaManagerSummarizerProxy.js.map +1 -1
- package/dist/gc/garbageCollection.js +17 -20
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcConfigs.js +13 -11
- package/dist/gc/gcConfigs.js.map +1 -1
- package/dist/gc/gcHelpers.js +4 -6
- package/dist/gc/gcHelpers.js.map +1 -1
- package/dist/gc/gcSummaryStateTracker.js +4 -6
- package/dist/gc/gcSummaryStateTracker.js.map +1 -1
- package/dist/gc/gcTelemetry.d.ts.map +1 -1
- package/dist/gc/gcTelemetry.js +55 -37
- package/dist/gc/gcTelemetry.js.map +1 -1
- package/dist/id-compressor/idCompressor.js +49 -51
- package/dist/id-compressor/idCompressor.js.map +1 -1
- package/dist/id-compressor/idRange.js +2 -2
- package/dist/id-compressor/idRange.js.map +1 -1
- package/dist/id-compressor/sessionIdNormalizer.js +11 -16
- package/dist/id-compressor/sessionIdNormalizer.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/opLifecycle/batchManager.js +10 -6
- package/dist/opLifecycle/batchManager.js.map +1 -1
- package/dist/opLifecycle/opCompressor.js +6 -1
- package/dist/opLifecycle/opCompressor.js.map +1 -1
- package/dist/opLifecycle/opDecompressor.js +11 -9
- package/dist/opLifecycle/opDecompressor.js.map +1 -1
- package/dist/opLifecycle/opGroupingManager.js +13 -5
- package/dist/opLifecycle/opGroupingManager.js.map +1 -1
- package/dist/opLifecycle/opSplitter.js +10 -6
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.js +1 -2
- package/dist/opLifecycle/outbox.js.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.js +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/dist/opProperties.js +1 -2
- 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/pendingStateManager.d.ts +2 -2
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +22 -22
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/scheduleManager.js +14 -10
- package/dist/scheduleManager.js.map +1 -1
- package/dist/summary/orderedClientElection.d.ts +2 -1
- package/dist/summary/orderedClientElection.d.ts.map +1 -1
- package/dist/summary/orderedClientElection.js +17 -18
- package/dist/summary/orderedClientElection.js.map +1 -1
- package/dist/summary/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/runningSummarizer.js +35 -57
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summarizer.js +4 -7
- package/dist/summary/summarizer.js.map +1 -1
- package/dist/summary/summarizerClientElection.js +5 -9
- package/dist/summary/summarizerClientElection.js.map +1 -1
- package/dist/summary/summarizerHeuristics.js +8 -12
- package/dist/summary/summarizerHeuristics.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.js +22 -15
- package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.js +2 -4
- package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js +17 -16
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/dist/summary/summaryCollection.js +3 -5
- package/dist/summary/summaryCollection.js.map +1 -1
- package/dist/summary/summaryFormat.js +1 -2
- package/dist/summary/summaryFormat.js.map +1 -1
- package/dist/summary/summaryGenerator.d.ts.map +1 -1
- package/dist/summary/summaryGenerator.js +62 -21
- package/dist/summary/summaryGenerator.js.map +1 -1
- package/dist/summary/summaryManager.js +3 -5
- package/dist/summary/summaryManager.js.map +1 -1
- package/lib/batchTracker.d.ts +2 -1
- package/lib/batchTracker.d.ts.map +1 -1
- package/lib/batchTracker.js.map +1 -1
- package/lib/blobManager.d.ts +4 -1
- package/lib/blobManager.d.ts.map +1 -1
- package/lib/blobManager.js +61 -26
- package/lib/blobManager.js.map +1 -1
- package/lib/connectionTelemetry.js +10 -2
- package/lib/connectionTelemetry.js.map +1 -1
- package/lib/containerRuntime.d.ts +26 -11
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +189 -131
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStore.js +8 -2
- package/lib/dataStore.js.map +1 -1
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +24 -26
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/dataStores.d.ts +20 -4
- package/lib/dataStores.d.ts.map +1 -1
- package/lib/dataStores.js +107 -53
- package/lib/dataStores.js.map +1 -1
- package/lib/deltaManagerProxyBase.d.ts +35 -0
- package/lib/deltaManagerProxyBase.d.ts.map +1 -0
- package/lib/deltaManagerProxyBase.js +73 -0
- package/lib/deltaManagerProxyBase.js.map +1 -0
- package/lib/deltaManagerSummarizerProxy.d.ts +1 -1
- package/lib/deltaManagerSummarizerProxy.d.ts.map +1 -1
- package/lib/deltaManagerSummarizerProxy.js +1 -1
- package/lib/deltaManagerSummarizerProxy.js.map +1 -1
- package/lib/gc/garbageCollection.js +17 -20
- package/lib/gc/garbageCollection.js.map +1 -1
- package/lib/gc/gcConfigs.js +13 -11
- package/lib/gc/gcConfigs.js.map +1 -1
- package/lib/gc/gcHelpers.js +4 -6
- package/lib/gc/gcHelpers.js.map +1 -1
- package/lib/gc/gcSummaryStateTracker.js +4 -6
- package/lib/gc/gcSummaryStateTracker.js.map +1 -1
- package/lib/gc/gcTelemetry.d.ts.map +1 -1
- package/lib/gc/gcTelemetry.js +55 -37
- package/lib/gc/gcTelemetry.js.map +1 -1
- package/lib/id-compressor/idCompressor.js +49 -51
- package/lib/id-compressor/idCompressor.js.map +1 -1
- package/lib/id-compressor/idRange.js +2 -2
- package/lib/id-compressor/idRange.js.map +1 -1
- package/lib/id-compressor/sessionIdNormalizer.js +11 -16
- package/lib/id-compressor/sessionIdNormalizer.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/opLifecycle/batchManager.js +10 -6
- package/lib/opLifecycle/batchManager.js.map +1 -1
- package/lib/opLifecycle/opCompressor.js +6 -1
- package/lib/opLifecycle/opCompressor.js.map +1 -1
- package/lib/opLifecycle/opDecompressor.js +11 -9
- package/lib/opLifecycle/opDecompressor.js.map +1 -1
- package/lib/opLifecycle/opGroupingManager.js +13 -5
- package/lib/opLifecycle/opGroupingManager.js.map +1 -1
- package/lib/opLifecycle/opSplitter.js +10 -6
- package/lib/opLifecycle/opSplitter.js.map +1 -1
- package/lib/opLifecycle/outbox.js +1 -2
- package/lib/opLifecycle/outbox.js.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.js +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/lib/opProperties.js +1 -2
- 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/pendingStateManager.d.ts +2 -2
- package/lib/pendingStateManager.d.ts.map +1 -1
- package/lib/pendingStateManager.js +22 -22
- package/lib/pendingStateManager.js.map +1 -1
- package/lib/scheduleManager.js +14 -10
- package/lib/scheduleManager.js.map +1 -1
- package/lib/summary/orderedClientElection.d.ts +2 -1
- package/lib/summary/orderedClientElection.d.ts.map +1 -1
- package/lib/summary/orderedClientElection.js +17 -18
- package/lib/summary/orderedClientElection.js.map +1 -1
- package/lib/summary/runningSummarizer.d.ts.map +1 -1
- package/lib/summary/runningSummarizer.js +35 -57
- package/lib/summary/runningSummarizer.js.map +1 -1
- package/lib/summary/summarizer.js +4 -7
- package/lib/summary/summarizer.js.map +1 -1
- package/lib/summary/summarizerClientElection.js +5 -9
- package/lib/summary/summarizerClientElection.js.map +1 -1
- package/lib/summary/summarizerHeuristics.js +8 -12
- package/lib/summary/summarizerHeuristics.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.js +22 -15
- package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.js +2 -4
- package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js +17 -16
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/lib/summary/summaryCollection.js +3 -5
- package/lib/summary/summaryCollection.js.map +1 -1
- package/lib/summary/summaryFormat.js +1 -2
- package/lib/summary/summaryFormat.js.map +1 -1
- package/lib/summary/summaryGenerator.d.ts.map +1 -1
- package/lib/summary/summaryGenerator.js +62 -21
- package/lib/summary/summaryGenerator.js.map +1 -1
- package/lib/summary/summaryManager.js +3 -5
- package/lib/summary/summaryManager.js.map +1 -1
- package/package.json +19 -19
- package/src/batchTracker.ts +2 -1
- package/src/blobManager.ts +43 -2
- package/src/containerRuntime.ts +95 -67
- package/src/dataStore.ts +7 -1
- package/src/dataStoreContext.ts +1 -2
- package/src/dataStores.ts +95 -55
- package/src/deltaManagerProxyBase.ts +111 -0
- package/src/deltaManagerSummarizerProxy.ts +2 -1
- package/src/gc/gcTelemetry.ts +1 -2
- package/src/index.ts +0 -1
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +12 -15
- package/src/summary/orderedClientElection.ts +2 -1
- package/src/summary/runningSummarizer.ts +9 -31
- package/src/summary/summaryGenerator.ts +0 -1
package/src/index.ts
CHANGED
package/src/packageVersion.ts
CHANGED
|
@@ -16,7 +16,7 @@ import { pkgVersion } from "./packageVersion";
|
|
|
16
16
|
import { IBatchMetadata } from "./metadata";
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
|
-
* ! TODO: Remove this interface in "2.0.0-internal.7.0.0" once we only read IPendingMessageNew
|
|
19
|
+
* ! TODO: Remove this interface in "2.0.0-internal.7.0.0" once we only read IPendingMessageNew (AB#4763)
|
|
20
20
|
*/
|
|
21
21
|
export interface IPendingMessageOld {
|
|
22
22
|
type: "message";
|
|
@@ -42,7 +42,7 @@ export interface IPendingMessageNew {
|
|
|
42
42
|
}
|
|
43
43
|
|
|
44
44
|
/**
|
|
45
|
-
* ! TODO: Remove this type in "2.0.0-internal.7.0.0"
|
|
45
|
+
* ! TODO: Remove this type in "2.0.0-internal.7.0.0" (AB#4763)
|
|
46
46
|
*/
|
|
47
47
|
export type IPendingState = IPendingMessageOld | IPendingMessageNew;
|
|
48
48
|
|
|
@@ -115,21 +115,18 @@ export class PendingStateManager implements IDisposable {
|
|
|
115
115
|
if (!this.pendingMessages.isEmpty()) {
|
|
116
116
|
return {
|
|
117
117
|
pendingStates: this.pendingMessages.toArray().map((message) => {
|
|
118
|
-
|
|
119
|
-
const
|
|
118
|
+
let content = message.content;
|
|
119
|
+
const parsedContent = JSON.parse(content);
|
|
120
120
|
// IdAllocations need their localOpMetadata stashed in the contents
|
|
121
121
|
// of the op to correctly resume the session when processing stashed ops
|
|
122
|
-
if (
|
|
123
|
-
|
|
122
|
+
if (parsedContent.type === ContainerMessageType.IdAllocation) {
|
|
123
|
+
parsedContent.contents.stashedState = message.localOpMetadata;
|
|
124
|
+
content = JSON.stringify(parsedContent);
|
|
124
125
|
}
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
// delete localOpMetadata since it may not be serializable
|
|
130
|
-
// and will be regenerated by applyStashedOp()
|
|
131
|
-
localOpMetadata: undefined,
|
|
132
|
-
};
|
|
126
|
+
|
|
127
|
+
// delete localOpMetadata since it may not be serializable
|
|
128
|
+
// and will be regenerated by applyStashedOp()
|
|
129
|
+
return { ...message, content, localOpMetadata: undefined };
|
|
133
130
|
}),
|
|
134
131
|
};
|
|
135
132
|
}
|
|
@@ -142,7 +139,7 @@ export class PendingStateManager implements IDisposable {
|
|
|
142
139
|
) {
|
|
143
140
|
/**
|
|
144
141
|
* Convert old local state format to the new format (IPendingMessageOld to IPendingMessageNew)
|
|
145
|
-
* ! TODO: Remove this conversion in "2.0.0-internal.7.0.0"
|
|
142
|
+
* ! TODO: Remove this conversion in "2.0.0-internal.7.0.0" (AB#4763)
|
|
146
143
|
*/
|
|
147
144
|
if (initialLocalState?.pendingStates) {
|
|
148
145
|
for (const initialState of initialLocalState.pendingStates) {
|
|
@@ -9,6 +9,7 @@ import { assert, TypedEventEmitter } from "@fluidframework/common-utils";
|
|
|
9
9
|
import { IDeltaManager } from "@fluidframework/container-definitions";
|
|
10
10
|
import { UsageError } from "@fluidframework/container-utils";
|
|
11
11
|
import { IClient, IQuorumClients, ISequencedClient } from "@fluidframework/protocol-definitions";
|
|
12
|
+
import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
|
|
12
13
|
import { summarizerClientType } from "./summarizerClientElection";
|
|
13
14
|
|
|
14
15
|
// helper types for recursive readonly.
|
|
@@ -101,7 +102,7 @@ export class OrderedClientCollection
|
|
|
101
102
|
}
|
|
102
103
|
|
|
103
104
|
constructor(
|
|
104
|
-
logger:
|
|
105
|
+
logger: ITelemetryBaseLogger,
|
|
105
106
|
deltaManager: Pick<IDeltaManager<unknown, unknown>, "lastSequenceNumber">,
|
|
106
107
|
quorum: Pick<IQuorumClients, "getMembers" | "on">,
|
|
107
108
|
) {
|
|
@@ -44,8 +44,6 @@ import {
|
|
|
44
44
|
|
|
45
45
|
const maxSummarizeAckWaitTime = 10 * 60 * 1000; // 10 minutes
|
|
46
46
|
|
|
47
|
-
const defaultNumberSummarizationAttempts = 2; // only up to 2 attempts
|
|
48
|
-
|
|
49
47
|
/**
|
|
50
48
|
* An instance of RunningSummarizer manages the heuristics for summarizing.
|
|
51
49
|
* Until disposed, the instance of RunningSummarizer can assume that it is
|
|
@@ -573,31 +571,15 @@ export class RunningSummarizer implements IDisposable {
|
|
|
573
571
|
this.beforeSummaryAction();
|
|
574
572
|
},
|
|
575
573
|
async () => {
|
|
576
|
-
const attempts:
|
|
574
|
+
const attempts: ISummarizeOptions[] = [
|
|
577
575
|
{ refreshLatestAck: false, fullTree: false },
|
|
578
576
|
{ refreshLatestAck: true, fullTree: false },
|
|
579
|
-
{ refreshLatestAck: true, fullTree: false, delaySeconds: 2 * 60 },
|
|
580
|
-
{ refreshLatestAck: true, fullTree: true, delaySeconds: 10 * 60 },
|
|
581
577
|
];
|
|
582
578
|
let overrideDelaySeconds: number | undefined;
|
|
583
579
|
let summaryAttempts = 0;
|
|
584
580
|
let summaryAttemptsPerPhase = 0;
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
this.mc.config.getNumber("Fluid.Summarizer.Attempts") ??
|
|
588
|
-
defaultNumberSummarizationAttempts;
|
|
589
|
-
|
|
590
|
-
if (totalAttempts > attempts.length) {
|
|
591
|
-
this.mc.logger.sendTelemetryEvent({
|
|
592
|
-
eventName: "InvalidSummarizerAttempts",
|
|
593
|
-
attempts: totalAttempts,
|
|
594
|
-
});
|
|
595
|
-
totalAttempts = defaultNumberSummarizationAttempts;
|
|
596
|
-
} else if (totalAttempts < 1) {
|
|
597
|
-
throw new UsageError("Invalid number of attempts.");
|
|
598
|
-
}
|
|
599
|
-
|
|
600
|
-
for (let summaryAttemptPhase = 0; summaryAttemptPhase < totalAttempts; ) {
|
|
581
|
+
let summaryAttemptPhase = 0;
|
|
582
|
+
while (summaryAttemptPhase < attempts.length) {
|
|
601
583
|
if (this.cancellationToken.cancelled) {
|
|
602
584
|
return;
|
|
603
585
|
}
|
|
@@ -609,22 +591,20 @@ export class RunningSummarizer implements IDisposable {
|
|
|
609
591
|
|
|
610
592
|
summaryAttemptsPerPhase++;
|
|
611
593
|
|
|
612
|
-
const
|
|
613
|
-
attempts[summaryAttemptPhase];
|
|
614
|
-
|
|
594
|
+
const summarizeOptions = attempts[summaryAttemptPhase];
|
|
615
595
|
const summarizeProps: ISummarizeTelemetryProperties = {
|
|
616
596
|
reason,
|
|
617
597
|
summaryAttempts,
|
|
618
598
|
summaryAttemptsPerPhase,
|
|
619
599
|
summaryAttemptPhase: summaryAttemptPhase + 1, // make everything 1-based
|
|
620
|
-
...
|
|
600
|
+
...summarizeOptions,
|
|
621
601
|
};
|
|
622
602
|
|
|
623
603
|
// Note: no need to account for cancellationToken.waitCancelled here, as
|
|
624
604
|
// this is accounted SummaryGenerator.summarizeCore that controls receivedSummaryAckOrNack.
|
|
625
605
|
const resultSummarize = this.generator.summarize(
|
|
626
606
|
summarizeProps,
|
|
627
|
-
|
|
607
|
+
summarizeOptions,
|
|
628
608
|
cancellationToken,
|
|
629
609
|
);
|
|
630
610
|
const result = await resultSummarize.receivedSummaryAckOrNack;
|
|
@@ -635,15 +615,13 @@ export class RunningSummarizer implements IDisposable {
|
|
|
635
615
|
|
|
636
616
|
// Check for retryDelay that can come from summaryNack or upload summary flow.
|
|
637
617
|
// Retry the same step only once per retryAfter response.
|
|
638
|
-
|
|
639
|
-
if (
|
|
618
|
+
const delaySeconds = result.retryAfterSeconds;
|
|
619
|
+
if (delaySeconds === undefined || summaryAttemptsPerPhase > 1) {
|
|
640
620
|
summaryAttemptPhase++;
|
|
641
621
|
summaryAttemptsPerPhase = 0;
|
|
642
622
|
}
|
|
643
623
|
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
if (delaySeconds > 0) {
|
|
624
|
+
if (delaySeconds !== undefined) {
|
|
647
625
|
this.mc.logger.sendPerformanceEvent({
|
|
648
626
|
eventName: "SummarizeAttemptDelay",
|
|
649
627
|
duration: delaySeconds,
|