@fluidframework/container-runtime 2.0.0-internal.6.0.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 +4 -0
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +15 -11
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +1 -2
- package/dist/dataStoreContext.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/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/summary/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/runningSummarizer.js +8 -24
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summaryGenerator.d.ts.map +1 -1
- package/dist/summary/summaryGenerator.js +0 -1
- package/dist/summary/summaryGenerator.js.map +1 -1
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +15 -11
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +1 -2
- package/lib/dataStoreContext.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/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/summary/runningSummarizer.d.ts.map +1 -1
- package/lib/summary/runningSummarizer.js +8 -24
- package/lib/summary/runningSummarizer.js.map +1 -1
- package/lib/summary/summaryGenerator.d.ts.map +1 -1
- package/lib/summary/summaryGenerator.js +0 -1
- package/lib/summary/summaryGenerator.js.map +1 -1
- package/package.json +19 -31
- package/src/containerRuntime.ts +21 -16
- package/src/dataStoreContext.ts +1 -2
- package/src/deltaManagerProxyBase.ts +111 -0
- package/src/deltaManagerSummarizerProxy.ts +2 -1
- package/src/packageVersion.ts +1 -1
- package/src/summary/runningSummarizer.ts +9 -31
- package/src/summary/summaryGenerator.ts +0 -1
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
+
* Licensed under the MIT License.
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { EventForwarder } from "@fluidframework/common-utils";
|
|
7
|
+
import {
|
|
8
|
+
IDeltaManager,
|
|
9
|
+
IDeltaManagerEvents,
|
|
10
|
+
IDeltaQueue,
|
|
11
|
+
IDeltaSender,
|
|
12
|
+
ReadOnlyInfo,
|
|
13
|
+
} from "@fluidframework/container-definitions";
|
|
14
|
+
import {
|
|
15
|
+
IClientConfiguration,
|
|
16
|
+
IClientDetails,
|
|
17
|
+
IDocumentMessage,
|
|
18
|
+
ISequencedDocumentMessage,
|
|
19
|
+
ISignalMessage,
|
|
20
|
+
} from "@fluidframework/protocol-definitions";
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Base class for creating proxy to the real delta manager. It implements all required methods on IDeltaManager and
|
|
24
|
+
* proxy implementations can override specific methods.
|
|
25
|
+
*/
|
|
26
|
+
export class DeltaManagerProxyBase
|
|
27
|
+
extends EventForwarder<IDeltaManagerEvents>
|
|
28
|
+
implements IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>
|
|
29
|
+
{
|
|
30
|
+
public get IDeltaSender(): IDeltaSender {
|
|
31
|
+
return this;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
public get inbound(): IDeltaQueue<ISequencedDocumentMessage> {
|
|
35
|
+
return this.deltaManager.inbound;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
public get outbound(): IDeltaQueue<IDocumentMessage[]> {
|
|
39
|
+
return this.deltaManager.outbound;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
public get inboundSignal(): IDeltaQueue<ISignalMessage> {
|
|
43
|
+
return this.deltaManager.inboundSignal;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
public get minimumSequenceNumber(): number {
|
|
47
|
+
return this.deltaManager.minimumSequenceNumber;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
public get lastSequenceNumber(): number {
|
|
51
|
+
return this.deltaManager.lastSequenceNumber;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
public get lastMessage() {
|
|
55
|
+
return this.deltaManager.lastMessage;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
public get lastKnownSeqNumber() {
|
|
59
|
+
return this.deltaManager.lastKnownSeqNumber;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
public get initialSequenceNumber(): number {
|
|
63
|
+
return this.deltaManager.initialSequenceNumber;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
public get hasCheckpointSequenceNumber() {
|
|
67
|
+
return this.deltaManager.hasCheckpointSequenceNumber;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
public get clientDetails(): IClientDetails {
|
|
71
|
+
return this.deltaManager.clientDetails;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
public get version(): string {
|
|
75
|
+
return this.deltaManager.version;
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
public get maxMessageSize(): number {
|
|
79
|
+
return this.deltaManager.maxMessageSize;
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
public get serviceConfiguration(): IClientConfiguration | undefined {
|
|
83
|
+
return this.deltaManager.serviceConfiguration;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
public get active(): boolean {
|
|
87
|
+
return this.deltaManager.active;
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
public get readOnlyInfo(): ReadOnlyInfo {
|
|
91
|
+
return this.deltaManager.readOnlyInfo;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
constructor(
|
|
95
|
+
protected readonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>,
|
|
96
|
+
) {
|
|
97
|
+
super(deltaManager);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
public dispose(): void {
|
|
101
|
+
super.dispose();
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
public submitSignal(content: any): void {
|
|
105
|
+
return this.deltaManager.submitSignal(content);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
public flush(): void {
|
|
109
|
+
return this.deltaManager.flush();
|
|
110
|
+
}
|
|
111
|
+
}
|
|
@@ -4,8 +4,9 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { IDeltaManager, ReadOnlyInfo } from "@fluidframework/container-definitions";
|
|
7
|
-
import { DeltaManagerProxyBase } from "@fluidframework/container-utils";
|
|
8
7
|
import { IDocumentMessage, ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
|
|
8
|
+
|
|
9
|
+
import { DeltaManagerProxyBase } from "./deltaManagerProxyBase";
|
|
9
10
|
import { summarizerClientType } from "./summary";
|
|
10
11
|
|
|
11
12
|
/**
|
package/src/packageVersion.ts
CHANGED
|
@@ -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,
|