@fluidframework/container-runtime 2.40.0-336023 → 2.40.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 +14 -0
- package/api-report/container-runtime.legacy.alpha.api.md +4 -0
- package/container-runtime.test-files.tar +0 -0
- package/dist/blobManager/blobManager.d.ts +31 -8
- package/dist/blobManager/blobManager.d.ts.map +1 -1
- package/dist/blobManager/blobManager.js +90 -17
- package/dist/blobManager/blobManager.js.map +1 -1
- package/dist/channelCollection.d.ts +8 -2
- package/dist/channelCollection.d.ts.map +1 -1
- package/dist/channelCollection.js +29 -6
- package/dist/channelCollection.js.map +1 -1
- package/dist/compatUtils.d.ts +19 -10
- package/dist/compatUtils.d.ts.map +1 -1
- package/dist/compatUtils.js +39 -32
- package/dist/compatUtils.js.map +1 -1
- package/dist/containerRuntime.d.ts +29 -13
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +139 -149
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStoreContext.d.ts +12 -4
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +37 -18
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +1 -0
- package/dist/opLifecycle/index.d.ts +1 -1
- package/dist/opLifecycle/index.d.ts.map +1 -1
- package/dist/opLifecycle/index.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +20 -7
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +16 -20
- package/dist/opLifecycle/outbox.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/pendingStateManager.d.ts +22 -8
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +11 -16
- package/dist/pendingStateManager.js.map +1 -1
- package/lib/blobManager/blobManager.d.ts +31 -8
- package/lib/blobManager/blobManager.d.ts.map +1 -1
- package/lib/blobManager/blobManager.js +91 -18
- package/lib/blobManager/blobManager.js.map +1 -1
- package/lib/channelCollection.d.ts +8 -2
- package/lib/channelCollection.d.ts.map +1 -1
- package/lib/channelCollection.js +29 -6
- package/lib/channelCollection.js.map +1 -1
- package/lib/compatUtils.d.ts +19 -10
- package/lib/compatUtils.d.ts.map +1 -1
- package/lib/compatUtils.js +36 -29
- package/lib/compatUtils.js.map +1 -1
- package/lib/containerRuntime.d.ts +29 -13
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +60 -70
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStoreContext.d.ts +12 -4
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +38 -19
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/legacy.d.ts +1 -0
- package/lib/opLifecycle/index.d.ts +1 -1
- package/lib/opLifecycle/index.d.ts.map +1 -1
- package/lib/opLifecycle/index.js.map +1 -1
- package/lib/opLifecycle/outbox.d.ts +20 -7
- package/lib/opLifecycle/outbox.d.ts.map +1 -1
- package/lib/opLifecycle/outbox.js +16 -20
- package/lib/opLifecycle/outbox.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.d.ts.map +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/pendingStateManager.d.ts +22 -8
- package/lib/pendingStateManager.d.ts.map +1 -1
- package/lib/pendingStateManager.js +11 -16
- package/lib/pendingStateManager.js.map +1 -1
- package/package.json +18 -18
- package/src/blobManager/blobManager.ts +141 -33
- package/src/channelCollection.ts +42 -6
- package/src/compatUtils.ts +53 -30
- package/src/containerRuntime.ts +102 -81
- package/src/dataStoreContext.ts +44 -25
- package/src/index.ts +1 -0
- package/src/opLifecycle/index.ts +1 -0
- package/src/opLifecycle/outbox.ts +42 -33
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +37 -20
|
@@ -83,6 +83,7 @@ export declare abstract class FluidDataStoreContext extends TypedEventEmitter<IF
|
|
|
83
83
|
get baseLogger(): ITelemetryBaseLogger;
|
|
84
84
|
private readonly _contextDeltaManagerProxy;
|
|
85
85
|
get deltaManager(): IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>;
|
|
86
|
+
private isStagingMode;
|
|
86
87
|
isReadOnly: () => boolean;
|
|
87
88
|
get connected(): boolean;
|
|
88
89
|
get IFluidHandleContext(): IFluidHandleContext;
|
|
@@ -189,7 +190,14 @@ export declare abstract class FluidDataStoreContext extends TypedEventEmitter<IF
|
|
|
189
190
|
* its new client ID when we are connecting or connected.
|
|
190
191
|
*/
|
|
191
192
|
setConnectionState(connected: boolean, clientId?: string): void;
|
|
192
|
-
notifyReadOnlyState(
|
|
193
|
+
notifyReadOnlyState(): void;
|
|
194
|
+
/**
|
|
195
|
+
* Updates the readonly state of the data store based on the staging mode.
|
|
196
|
+
*
|
|
197
|
+
* @param staging - A boolean indicating whether the container is in staging mode.
|
|
198
|
+
* If true, the data store is set to readonly unless explicitly allowed by its policies.
|
|
199
|
+
*/
|
|
200
|
+
notifyStagingMode(staging: boolean): void;
|
|
193
201
|
/**
|
|
194
202
|
* Process messages for this data store. The messages here are contiguous messages for this data store in a batch.
|
|
195
203
|
* @param messageCollection - The collection of messages to process.
|
|
@@ -282,16 +290,16 @@ export declare abstract class FluidDataStoreContext extends TypedEventEmitter<IF
|
|
|
282
290
|
* @deprecated The functionality to get base GC details has been moved to summarizer node.
|
|
283
291
|
*/
|
|
284
292
|
getBaseGCDetails(): Promise<IGarbageCollectionDetailsBase>;
|
|
285
|
-
reSubmit(type: string, contents: unknown, localOpMetadata: unknown): void;
|
|
293
|
+
reSubmit(type: string, contents: unknown, localOpMetadata: unknown, squash: boolean): void;
|
|
286
294
|
rollback(type: string, contents: unknown, localOpMetadata: unknown): void;
|
|
287
295
|
applyStashedOp(contents: unknown): Promise<unknown>;
|
|
288
296
|
private verifyNotClosed;
|
|
289
297
|
/**
|
|
290
|
-
*
|
|
298
|
+
* Readonly client, including summarizer, should not have local changes. These changes can become part of the summary and can break
|
|
291
299
|
* eventual consistency. For example, the next summary (say at ref seq# 100) may contain these changes whereas
|
|
292
300
|
* other clients that are up-to-date till seq# 100 may not have them yet.
|
|
293
301
|
*/
|
|
294
|
-
protected
|
|
302
|
+
protected identifyLocalChangeIfReadonly(eventName: string, type?: string): void;
|
|
295
303
|
getCreateChildSummarizerNodeFn(id: string, createParam: CreateChildSummarizerNodeParam): (summarizeInternal: SummarizeInternalFn, getGCDataFn: (fullGC?: boolean) => Promise<IGarbageCollectionData>) => ISummarizerNodeWithGC;
|
|
296
304
|
deleteChildSummarizerNode(id: string): void;
|
|
297
305
|
uploadBlob(blob: ArrayBufferLike, signal?: AbortSignal): Promise<IFluidHandleInternal<ArrayBufferLike>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataStoreContext.d.ts","sourceRoot":"","sources":["../src/dataStoreContext.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,EACN,aAAa,EAIb,MAAM,gDAAgD,CAAC;AACxD,OAAO,EACN,WAAW,EACX,WAAW,
|
|
1
|
+
{"version":3,"file":"dataStoreContext.d.ts","sourceRoot":"","sources":["../src/dataStoreContext.ts"],"names":[],"mappings":"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"}
|
package/lib/dataStoreContext.js
CHANGED
|
@@ -12,7 +12,7 @@ import { addBlobToSummary, isSnapshotFetchRequiredForLoadingGroupId, } from "@fl
|
|
|
12
12
|
import { DataProcessingError, LoggingError, ThresholdCounter, UsageError, createChildMonitoringContext, extractSafePropertiesFromMessage, generateStack, tagCodeArtifacts, } from "@fluidframework/telemetry-utils/internal";
|
|
13
13
|
import { BaseDeltaManagerProxy } from "./deltaManagerProxies.js";
|
|
14
14
|
import { runtimeCompatDetailsForDataStore, validateDatastoreCompatibility, } from "./runtimeLayerCompatState.js";
|
|
15
|
-
import { dataStoreAttributesBlobName, getAttributesFormatVersion, getFluidDataStoreAttributes, hasIsolatedChannels,
|
|
15
|
+
import { dataStoreAttributesBlobName, getAttributesFormatVersion, getFluidDataStoreAttributes, hasIsolatedChannels, wrapSummaryInChannelsTree, } from "./summary/index.js";
|
|
16
16
|
function createAttributes(pkg, isRootDataStore) {
|
|
17
17
|
const stringifiedPkg = JSON.stringify(pkg);
|
|
18
18
|
return {
|
|
@@ -60,14 +60,14 @@ class ContextDeltaManagerProxy extends BaseDeltaManagerProxy {
|
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
/**
|
|
63
|
-
* Called by the owning datastore context to
|
|
64
|
-
*
|
|
63
|
+
* Called by the owning datastore context to emit the readonly
|
|
64
|
+
* event on the delta manger that is projected down to the datastore
|
|
65
65
|
* runtime. This state may not align with that of the true delta
|
|
66
66
|
* manager if the context wishes to control the read only state
|
|
67
67
|
* differently than the delta manager itself.
|
|
68
68
|
*/
|
|
69
|
-
|
|
70
|
-
this.emit("readonly",
|
|
69
|
+
emitReadonly() {
|
|
70
|
+
this.emit("readonly", this.isReadOnly());
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
73
|
/**
|
|
@@ -172,7 +172,9 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
172
172
|
this.existing = existing;
|
|
173
173
|
this.isLocalDataStore = isLocalDataStore;
|
|
174
174
|
this.makeLocallyVisibleFn = makeLocallyVisibleFn;
|
|
175
|
-
this.
|
|
175
|
+
this.isStagingMode = false;
|
|
176
|
+
this.isReadOnly = () => (this.isStagingMode && this.channel?.policies?.readonlyInStagingMode !== false) ||
|
|
177
|
+
this.parentContext.isReadOnly();
|
|
176
178
|
this._disposed = false;
|
|
177
179
|
/**
|
|
178
180
|
* A Tombstoned object has been unreferenced long enough that GC knows it won't be referenced again.
|
|
@@ -371,10 +373,26 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
371
373
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
372
374
|
this.channel.setConnectionState(connected, clientId);
|
|
373
375
|
}
|
|
374
|
-
notifyReadOnlyState(
|
|
376
|
+
notifyReadOnlyState() {
|
|
375
377
|
this.verifyNotClosed("notifyReadOnlyState", false /* checkTombstone */);
|
|
376
|
-
|
|
377
|
-
this.
|
|
378
|
+
// These two calls achieve the same purpose, and are both needed for a time for back compat
|
|
379
|
+
this.channel?.notifyReadOnlyState?.(this.isReadOnly());
|
|
380
|
+
this._contextDeltaManagerProxy.emitReadonly();
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Updates the readonly state of the data store based on the staging mode.
|
|
384
|
+
*
|
|
385
|
+
* @param staging - A boolean indicating whether the container is in staging mode.
|
|
386
|
+
* If true, the data store is set to readonly unless explicitly allowed by its policies.
|
|
387
|
+
*/
|
|
388
|
+
notifyStagingMode(staging) {
|
|
389
|
+
// If the `readonlyInStagingMode` policy is not explicitly set to `false`,
|
|
390
|
+
// the data store is treated as readonly in staging mode.
|
|
391
|
+
const oldReadOnlyState = this.isReadOnly();
|
|
392
|
+
this.isStagingMode = staging;
|
|
393
|
+
if (this.isReadOnly() !== oldReadOnlyState) {
|
|
394
|
+
this.notifyReadOnlyState();
|
|
395
|
+
}
|
|
378
396
|
}
|
|
379
397
|
/**
|
|
380
398
|
* Process messages for this data store. The messages here are contiguous messages for this data store in a batch.
|
|
@@ -511,8 +529,8 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
511
529
|
submitMessage(type, content, localOpMetadata) {
|
|
512
530
|
this.verifyNotClosed("submitMessage");
|
|
513
531
|
assert(!!this.channel, 0x146 /* "Channel must exist when submitting message" */);
|
|
514
|
-
//
|
|
515
|
-
this.
|
|
532
|
+
// Readonly clients should not submit messages.
|
|
533
|
+
this.identifyLocalChangeIfReadonly("DataStoreMessageWhileReadonly", type);
|
|
516
534
|
this.parentContext.submitMessage(type, content, localOpMetadata);
|
|
517
535
|
}
|
|
518
536
|
/**
|
|
@@ -616,9 +634,9 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
616
634
|
async getBaseGCDetails() {
|
|
617
635
|
return {};
|
|
618
636
|
}
|
|
619
|
-
reSubmit(type, contents, localOpMetadata) {
|
|
637
|
+
reSubmit(type, contents, localOpMetadata, squash) {
|
|
620
638
|
assert(!!this.channel, 0x14b /* "Channel must exist when resubmitting ops" */);
|
|
621
|
-
this.channel.reSubmit(type, contents, localOpMetadata);
|
|
639
|
+
this.channel.reSubmit(type, contents, localOpMetadata, squash);
|
|
622
640
|
}
|
|
623
641
|
rollback(type, contents, localOpMetadata) {
|
|
624
642
|
if (!this.channel) {
|
|
@@ -660,16 +678,15 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
660
678
|
}
|
|
661
679
|
}
|
|
662
680
|
/**
|
|
663
|
-
*
|
|
681
|
+
* Readonly client, including summarizer, should not have local changes. These changes can become part of the summary and can break
|
|
664
682
|
* eventual consistency. For example, the next summary (say at ref seq# 100) may contain these changes whereas
|
|
665
683
|
* other clients that are up-to-date till seq# 100 may not have them yet.
|
|
666
684
|
*/
|
|
667
|
-
|
|
668
|
-
if (this.
|
|
669
|
-
this.localChangesTelemetryCount <= 0) {
|
|
685
|
+
identifyLocalChangeIfReadonly(eventName, type) {
|
|
686
|
+
if (!this.isReadOnly() || this.localChangesTelemetryCount <= 0) {
|
|
670
687
|
return;
|
|
671
688
|
}
|
|
672
|
-
// Log a telemetry if there are local changes in
|
|
689
|
+
// Log a telemetry if there are local changes in readonly. This will give us data on how often
|
|
673
690
|
// this is happening and which data stores do this. The eventual goal is to disallow local changes
|
|
674
691
|
// in the summarizer and the data will help us plan this.
|
|
675
692
|
this.mc.logger.sendTelemetryEvent({
|
|
@@ -677,6 +694,8 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
677
694
|
type,
|
|
678
695
|
isSummaryInProgress: this.summarizerNode.isSummaryInProgress?.(),
|
|
679
696
|
stack: generateStack(30),
|
|
697
|
+
readonly: this.isReadOnly(),
|
|
698
|
+
isStagingMode: this.isStagingMode,
|
|
680
699
|
});
|
|
681
700
|
this.localChangesTelemetryCount--;
|
|
682
701
|
}
|
|
@@ -841,7 +860,7 @@ export class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
841
860
|
};
|
|
842
861
|
});
|
|
843
862
|
// Summarizer client should not create local data stores.
|
|
844
|
-
this.
|
|
863
|
+
this.identifyLocalChangeIfReadonly("DataStoreCreatedWhileReadonly");
|
|
845
864
|
this.snapshotTree = props.snapshotTree;
|
|
846
865
|
}
|
|
847
866
|
setAttachState(attachState) {
|