@fluidframework/container-runtime 2.0.0-dev-rc.5.0.0.271717 → 2.0.0-dev-rc.5.0.0.272251

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 (68) hide show
  1. package/api-extractor/api-extractor-lint-bundle.json +5 -0
  2. package/api-extractor/api-extractor-lint-legacy.cjs.json +5 -0
  3. package/api-extractor/api-extractor-lint-legacy.esm.json +5 -0
  4. package/api-extractor/api-extractor-lint-public.cjs.json +5 -0
  5. package/api-extractor/api-extractor-lint-public.esm.json +5 -0
  6. package/api-report/container-runtime.alpha.api.md +1 -1
  7. package/container-runtime.test-files.tar +0 -0
  8. package/dist/channelCollection.d.ts +12 -2
  9. package/dist/channelCollection.d.ts.map +1 -1
  10. package/dist/channelCollection.js +85 -87
  11. package/dist/channelCollection.js.map +1 -1
  12. package/dist/containerRuntime.d.ts +2 -1
  13. package/dist/containerRuntime.d.ts.map +1 -1
  14. package/dist/containerRuntime.js +25 -4
  15. package/dist/containerRuntime.js.map +1 -1
  16. package/dist/dataStoreContext.d.ts +2 -1
  17. package/dist/dataStoreContext.d.ts.map +1 -1
  18. package/dist/dataStoreContext.js +3 -2
  19. package/dist/dataStoreContext.js.map +1 -1
  20. package/dist/gc/garbageCollection.d.ts +4 -2
  21. package/dist/gc/garbageCollection.d.ts.map +1 -1
  22. package/dist/gc/garbageCollection.js +10 -6
  23. package/dist/gc/garbageCollection.js.map +1 -1
  24. package/dist/gc/gcDefinitions.d.ts +7 -4
  25. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  26. package/dist/gc/gcDefinitions.js.map +1 -1
  27. package/dist/gc/gcTelemetry.d.ts +1 -1
  28. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  29. package/dist/gc/gcTelemetry.js +0 -5
  30. package/dist/gc/gcTelemetry.js.map +1 -1
  31. package/dist/packageVersion.d.ts +1 -1
  32. package/dist/packageVersion.js +1 -1
  33. package/dist/packageVersion.js.map +1 -1
  34. package/lib/channelCollection.d.ts +12 -2
  35. package/lib/channelCollection.d.ts.map +1 -1
  36. package/lib/channelCollection.js +85 -87
  37. package/lib/channelCollection.js.map +1 -1
  38. package/lib/containerRuntime.d.ts +2 -1
  39. package/lib/containerRuntime.d.ts.map +1 -1
  40. package/lib/containerRuntime.js +26 -5
  41. package/lib/containerRuntime.js.map +1 -1
  42. package/lib/dataStoreContext.d.ts +2 -1
  43. package/lib/dataStoreContext.d.ts.map +1 -1
  44. package/lib/dataStoreContext.js +3 -2
  45. package/lib/dataStoreContext.js.map +1 -1
  46. package/lib/gc/garbageCollection.d.ts +4 -2
  47. package/lib/gc/garbageCollection.d.ts.map +1 -1
  48. package/lib/gc/garbageCollection.js +10 -6
  49. package/lib/gc/garbageCollection.js.map +1 -1
  50. package/lib/gc/gcDefinitions.d.ts +7 -4
  51. package/lib/gc/gcDefinitions.d.ts.map +1 -1
  52. package/lib/gc/gcDefinitions.js.map +1 -1
  53. package/lib/gc/gcTelemetry.d.ts +1 -1
  54. package/lib/gc/gcTelemetry.d.ts.map +1 -1
  55. package/lib/gc/gcTelemetry.js +0 -5
  56. package/lib/gc/gcTelemetry.js.map +1 -1
  57. package/lib/packageVersion.d.ts +1 -1
  58. package/lib/packageVersion.js +1 -1
  59. package/lib/packageVersion.js.map +1 -1
  60. package/package.json +27 -18
  61. package/src/channelCollection.ts +133 -123
  62. package/src/containerRuntime.ts +31 -4
  63. package/src/dataStoreContext.ts +3 -2
  64. package/src/gc/garbageCollection.ts +24 -7
  65. package/src/gc/gcDefinitions.ts +16 -4
  66. package/src/gc/gcTelemetry.ts +1 -7
  67. package/src/packageVersion.ts +1 -1
  68. package/tsdoc.json +4 -0
@@ -0,0 +1,5 @@
1
+ {
2
+ "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3
+ "extends": "<projectFolder>/../../../common/build/build-common/api-extractor-lint.json",
4
+ "mainEntryPointFilePath": "<projectFolder>/lib/index.d.ts"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3
+ "extends": "<projectFolder>/../../../common/build/build-common/api-extractor-lint.entrypoint.json",
4
+ "mainEntryPointFilePath": "<projectFolder>/dist/legacy.d.ts"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3
+ "extends": "<projectFolder>/../../../common/build/build-common/api-extractor-lint.entrypoint.json",
4
+ "mainEntryPointFilePath": "<projectFolder>/lib/legacy.d.ts"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3
+ "extends": "<projectFolder>/../../../common/build/build-common/api-extractor-lint.entrypoint.json",
4
+ "mainEntryPointFilePath": "<projectFolder>/dist/public.d.ts"
5
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "$schema": "https://developer.microsoft.com/json-schemas/api-extractor/v7/api-extractor.schema.json",
3
+ "extends": "<projectFolder>/../../../common/build/build-common/api-extractor-lint.entrypoint.json",
4
+ "mainEntryPointFilePath": "<projectFolder>/lib/public.d.ts"
5
+ }
@@ -101,7 +101,7 @@ export class ContainerRuntime extends TypedEventEmitter<IContainerRuntimeEvents
101
101
  protected constructor(context: IContainerContext, registry: IFluidDataStoreRegistry, metadata: IContainerRuntimeMetadata | undefined, electedSummarizerData: ISerializedElection | undefined, chunks: [string, string[]][], dataStoreAliasMap: [string, string][], runtimeOptions: Readonly<Required<IContainerRuntimeOptions>>, containerScope: FluidObject, baseLogger: ITelemetryBaseLogger, existing: boolean, blobManagerSnapshot: IBlobManagerLoadInfo, _storage: IDocumentStorageService, createIdCompressor: () => Promise<IIdCompressor & IIdCompressorCore>, documentsSchemaController: DocumentsSchemaController, featureGatesForTelemetry: Record<string, boolean | number | undefined>, provideEntryPoint: (containerRuntime: IContainerRuntime) => Promise<FluidObject>, requestHandler?: ((request: IRequest, runtime: IContainerRuntime) => Promise<IResponse>) | undefined, summaryConfiguration?: ISummaryConfiguration);
102
102
  // (undocumented)
103
103
  protected addContainerStateToSummary(summaryTree: ISummaryTreeWithStats, fullTree: boolean, trackState: boolean, telemetryContext?: ITelemetryContext): void;
104
- addedGCOutboundRoute(fromPath: string, toPath: string): void;
104
+ addedGCOutboundRoute(fromPath: string, toPath: string, messageTimestampMs?: number): void;
105
105
  // (undocumented)
106
106
  get attachState(): AttachState;
107
107
  // (undocumented)
Binary file
@@ -88,7 +88,7 @@ export declare class ChannelCollection implements IFluidDataStoreChannel, IDispo
88
88
  makeVisibleAndAttachGraph(): void;
89
89
  private processAttachMessage;
90
90
  private processAliasMessage;
91
- processAliasMessageCore(internalId: string, alias: string): boolean;
91
+ processAliasMessageCore(internalId: string, alias: string, messageTimestampMs?: number): boolean;
92
92
  private alreadyProcessed;
93
93
  /** Package up the context's attach summary etc into an IAttachMessage */
94
94
  private generateAttachMessage;
@@ -149,7 +149,6 @@ export declare class ChannelCollection implements IFluidDataStoreChannel, IDispo
149
149
  setConnectionState(connected: boolean, clientId?: string): void;
150
150
  setAttachState(attachState: AttachState.Attaching | AttachState.Attached): void;
151
151
  get size(): number;
152
- summarize(fullTree: boolean, trackState: boolean, telemetryContext?: ITelemetryContext): Promise<ISummaryTreeWithStats>;
153
152
  /**
154
153
  * Create a summary. Used when attaching or serializing a detached container.
155
154
  */
@@ -158,6 +157,17 @@ export declare class ChannelCollection implements IFluidDataStoreChannel, IDispo
158
157
  * Gets the GC data. Used when attaching or serializing a detached container.
159
158
  */
160
159
  getAttachGCData(telemetryContext?: ITelemetryContext): IGarbageCollectionData;
160
+ /**
161
+ * Helper method for preparing to attach this channel.
162
+ * Runs the callback for each bound context to incorporate its data however the caller specifies
163
+ */
164
+ private visitLocalBoundContextsDuringAttach;
165
+ /**
166
+ * Helper method for preparing to summarize this channel.
167
+ * Runs the callback for each bound context to incorporate its data however the caller specifies
168
+ */
169
+ private visitContextsDuringSummary;
170
+ summarize(fullTree: boolean, trackState: boolean, telemetryContext?: ITelemetryContext): Promise<ISummaryTreeWithStats>;
161
171
  /**
162
172
  * Generates data used for garbage collection. It does the following:
163
173
  *
@@ -1 +1 @@
1
- {"version":3,"file":"channelCollection.d.ts","sourceRoot":"","sources":["../src/channelCollection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"channelCollection.d.ts","sourceRoot":"","sources":["../src/channelCollection.ts"],"names":[],"mappings":"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"}
@@ -266,7 +266,7 @@ class ChannelCollection {
266
266
  const foundGCData = (0, internal_5.processAttachMessageGCData)(attachMessage.snapshot, (nodeId, toPath) => {
267
267
  // nodeId is the relative path under the node being attached. Always starts with "/", but no trailing "/" after an id
268
268
  const fromPath = `/${attachMessage.id}${nodeId === "/" ? "" : nodeId}`;
269
- this.parentContext.addedGCOutboundRoute(fromPath, toPath);
269
+ this.parentContext.addedGCOutboundRoute(fromPath, toPath, message.timestamp);
270
270
  });
271
271
  // Only log once per container to avoid noise/cost.
272
272
  // Allows longitudinal tracking of various state (e.g. foundGCData), and some sampled details
@@ -338,12 +338,12 @@ class ChannelCollection {
338
338
  });
339
339
  }
340
340
  const resolve = localOpMetadata;
341
- const aliasResult = this.processAliasMessageCore(aliasMessage.internalId, aliasMessage.alias);
341
+ const aliasResult = this.processAliasMessageCore(aliasMessage.internalId, aliasMessage.alias, message.timestamp);
342
342
  if (local) {
343
343
  resolve(aliasResult);
344
344
  }
345
345
  }
346
- processAliasMessageCore(internalId, alias) {
346
+ processAliasMessageCore(internalId, alias, messageTimestampMs) {
347
347
  if (this.alreadyProcessed(alias)) {
348
348
  return false;
349
349
  }
@@ -360,7 +360,11 @@ class ChannelCollection {
360
360
  });
361
361
  return false;
362
362
  }
363
- this.parentContext.addedGCOutboundRoute("/", `/${internalId}`);
363
+ // If message timestamp doesn't exist, this is called in a detached container. Don't notify GC in that case
364
+ // because it doesn't run in detached container and doesn't need to know about this route.
365
+ if (messageTimestampMs) {
366
+ this.parentContext.addedGCOutboundRoute("/", `/${internalId}`, messageTimestampMs);
367
+ }
364
368
  this.aliasMap.set(alias, context.id);
365
369
  this.aliasedDataStores.add(context.id);
366
370
  context.setInMemoryRoot();
@@ -593,7 +597,7 @@ class ChannelCollection {
593
597
  };
594
598
  this.processChannelOp(envelope.address, transformed, local, localMessageMetadata);
595
599
  // Notify GC of any outbound references that were added by this op.
596
- detectOutboundReferences(envelope.address, transformed.contents, (fromPath, toPath) => this.parentContext.addedGCOutboundRoute(fromPath, toPath));
600
+ detectOutboundReferences(envelope.address, transformed.contents, (fromPath, toPath) => this.parentContext.addedGCOutboundRoute(fromPath, toPath, message.timestamp));
597
601
  break;
598
602
  }
599
603
  default:
@@ -766,61 +770,24 @@ class ChannelCollection {
766
770
  get size() {
767
771
  return this.contexts.size;
768
772
  }
769
- async summarize(fullTree, trackState, telemetryContext) {
770
- const summaryBuilder = new internal_5.SummaryTreeBuilder();
771
- // Iterate over each store and ask it to snapshot
772
- await Promise.all(Array.from(this.contexts)
773
- .filter(([_, context]) => {
774
- // Summarizer works only with clients with no local changes. A data store in attaching
775
- // state indicates an op was sent to attach a local data store, and the the attach op
776
- // had not yet round tripped back to the client.
777
- if (context.attachState === container_definitions_1.AttachState.Attaching) {
778
- // Formerly assert 0x588
779
- const error = internal_6.DataProcessingError.create("Local data store detected in attaching state during summarize", "summarize");
780
- throw error;
781
- }
782
- return context.attachState === container_definitions_1.AttachState.Attached;
783
- })
784
- .map(async ([contextId, context]) => {
785
- const contextSummary = await context.summarize(fullTree, trackState, telemetryContext);
786
- summaryBuilder.addWithStats(contextId, contextSummary);
787
- }));
788
- return summaryBuilder.getSummaryTree();
789
- }
790
773
  /**
791
774
  * Create a summary. Used when attaching or serializing a detached container.
792
775
  */
793
776
  getAttachSummary(telemetryContext) {
794
777
  const builder = new internal_5.SummaryTreeBuilder();
795
- // Attaching graph of some stores can cause other stores to get bound too.
796
- // So keep taking summary until no new stores get bound.
797
- let notBoundContextsLength;
798
- do {
799
- const builderTree = builder.summary.tree;
800
- notBoundContextsLength = this.contexts.notBoundLength();
801
- // Iterate over each data store and ask it to snapshot
802
- Array.from(this.contexts)
803
- .filter(([key, _]) =>
804
- // Take summary of bounded data stores only, make sure we haven't summarized them already
805
- // and no attach op has been fired for that data store because for loader versions <= 0.24
806
- // we set attach state as "attaching" before taking createNew summary.
807
- !(this.contexts.isNotBound(key) ||
808
- builderTree[key] ||
809
- this.attachOpFiredForDataStore.has(key)))
810
- .map(([key, value]) => {
811
- let dataStoreSummary;
812
- if (value.isLoaded) {
813
- dataStoreSummary = value.getAttachSummary(telemetryContext);
814
- }
815
- else {
816
- // If this data store is not yet loaded, then there should be no changes in the snapshot from
817
- // which it was created as it is detached container. So just use the previous snapshot.
818
- (0, internal_1.assert)(!!this.baseSnapshot, 0x166 /* "BaseSnapshot should be there as detached container loaded from snapshot" */);
819
- dataStoreSummary = (0, internal_5.convertSnapshotTreeToSummaryTree)((0, internal_3.getSnapshotTree)(this.baseSnapshot).trees[key]);
820
- }
821
- builder.addWithStats(key, dataStoreSummary);
822
- });
823
- } while (notBoundContextsLength !== this.contexts.notBoundLength());
778
+ this.visitLocalBoundContextsDuringAttach((contextId, context) => {
779
+ let dataStoreSummary;
780
+ if (context.isLoaded) {
781
+ dataStoreSummary = context.getAttachSummary(telemetryContext);
782
+ }
783
+ else {
784
+ // If this data store is not yet loaded, then there should be no changes in the snapshot from
785
+ // which it was created as it is detached container. So just use the previous snapshot.
786
+ (0, internal_1.assert)(!!this.baseSnapshot, 0x166 /* "BaseSnapshot should be there as detached container loaded from snapshot" */);
787
+ dataStoreSummary = (0, internal_5.convertSnapshotTreeToSummaryTree)((0, internal_3.getSnapshotTree)(this.baseSnapshot).trees[contextId]);
788
+ }
789
+ builder.addWithStats(contextId, dataStoreSummary);
790
+ });
824
791
  return builder.getSummaryTree();
825
792
  }
826
793
  /**
@@ -828,27 +795,70 @@ class ChannelCollection {
828
795
  */
829
796
  getAttachGCData(telemetryContext) {
830
797
  const builder = new internal_5.GCDataBuilder();
831
- // Attaching graph of some stores can cause other stores to get bound too.
832
- // So keep taking summary until no new stores get bound.
833
- let notBoundContextsLength;
834
- do {
835
- notBoundContextsLength = this.contexts.notBoundLength();
836
- // Iterate over each data store and ask for its GC data.
837
- Array.from(this.contexts)
838
- .filter(([key, _]) =>
839
- // Take GC data of bounded data stores only.
840
- !this.contexts.isNotBound(key))
841
- .map(([key, value]) => {
842
- const contextGCData = value.getAttachGCData(telemetryContext);
843
- // Prefix the child's id to the ids of its GC nodes so they can be identified as belonging to the child.
844
- // This also gradually builds the id of each node to be a path from the root.
845
- builder.prefixAndAddNodes(key, contextGCData.gcNodes);
846
- });
847
- } while (notBoundContextsLength !== this.contexts.notBoundLength());
798
+ this.visitLocalBoundContextsDuringAttach((contextId, context) => {
799
+ const contextGCData = context.getAttachGCData(telemetryContext);
800
+ // Prefix the child's id to the ids of its GC nodes so they can be identified as belonging to the child.
801
+ // This also gradually builds the id of each node to be a path from the root.
802
+ builder.prefixAndAddNodes(contextId, contextGCData.gcNodes);
803
+ });
848
804
  // Get the outbound routes (aliased data stores) and add a GC node for this channel.
849
805
  builder.addNode("/", Array.from(this.aliasedDataStores));
850
806
  return builder.getGCData();
851
807
  }
808
+ /**
809
+ * Helper method for preparing to attach this channel.
810
+ * Runs the callback for each bound context to incorporate its data however the caller specifies
811
+ */
812
+ visitLocalBoundContextsDuringAttach(visitor) {
813
+ const visitedContexts = new Set();
814
+ let visitedLength = -1;
815
+ let notBoundContextsLength = -1;
816
+ while (visitedLength !== visitedContexts.size &&
817
+ notBoundContextsLength !== this.contexts.notBoundLength()) {
818
+ // detect changes in the visitedContexts set, as on visiting a context
819
+ // it could could make contexts available by removing other contexts
820
+ // from the not bound context list, so we need to ensure those get processed as well.
821
+ // only once the loop can run with no new contexts added to the visitedContexts set do we
822
+ // know for sure all possible contexts have been visited.
823
+ visitedLength = visitedContexts.size;
824
+ notBoundContextsLength = this.contexts.notBoundLength();
825
+ for (const [contextId, context] of this.contexts) {
826
+ if (!(visitedContexts.has(contextId) ||
827
+ this.contexts.isNotBound(contextId) ||
828
+ this.attachOpFiredForDataStore.has(contextId))) {
829
+ visitor(contextId, context);
830
+ visitedContexts.add(contextId);
831
+ }
832
+ }
833
+ }
834
+ }
835
+ /**
836
+ * Helper method for preparing to summarize this channel.
837
+ * Runs the callback for each bound context to incorporate its data however the caller specifies
838
+ */
839
+ async visitContextsDuringSummary(visitor) {
840
+ for (const [contextId, context] of this.contexts) {
841
+ // Summarizer client and hence GC works only with clients with no local changes. A data store in
842
+ // attaching state indicates an op was sent to attach a local data store, and the the attach op
843
+ // had not yet round tripped back to the client.
844
+ // Formerly assert 0x589
845
+ if (context.attachState === container_definitions_1.AttachState.Attaching) {
846
+ const error = internal_6.DataProcessingError.create("Local data store detected in attaching state", "summarize/getGCData");
847
+ throw error;
848
+ }
849
+ if (context.attachState === container_definitions_1.AttachState.Attached) {
850
+ await visitor(contextId, context);
851
+ }
852
+ }
853
+ }
854
+ async summarize(fullTree, trackState, telemetryContext) {
855
+ const summaryBuilder = new internal_5.SummaryTreeBuilder();
856
+ await this.visitContextsDuringSummary(async (contextId, context) => {
857
+ const contextSummary = await context.summarize(fullTree, trackState, telemetryContext);
858
+ summaryBuilder.addWithStats(contextId, contextSummary);
859
+ });
860
+ return summaryBuilder.getSummaryTree();
861
+ }
852
862
  /**
853
863
  * Generates data used for garbage collection. It does the following:
854
864
  *
@@ -864,25 +874,12 @@ class ChannelCollection {
864
874
  */
865
875
  async getGCData(fullGC = false) {
866
876
  const builder = new internal_5.GCDataBuilder();
867
- // Iterate over each store and get their GC data.
868
- await Promise.all(Array.from(this.contexts)
869
- .filter(([_, context]) => {
870
- // Summarizer client and hence GC works only with clients with no local changes. A data store in
871
- // attaching state indicates an op was sent to attach a local data store, and the the attach op
872
- // had not yet round tripped back to the client.
873
- // Formerly assert 0x589
874
- if (context.attachState === container_definitions_1.AttachState.Attaching) {
875
- const error = internal_6.DataProcessingError.create("Local data store detected in attaching state while running GC", "getGCData");
876
- throw error;
877
- }
878
- return context.attachState === container_definitions_1.AttachState.Attached;
879
- })
880
- .map(async ([contextId, context]) => {
877
+ await this.visitContextsDuringSummary(async (contextId, context) => {
881
878
  const contextGCData = await context.getGCData(fullGC);
882
879
  // Prefix the child's id to the ids of its GC nodes so they can be identified as belonging to the child.
883
880
  // This also gradually builds the id of each node to be a path from the root.
884
881
  builder.prefixAndAddNodes(contextId, contextGCData.gcNodes);
885
- }));
882
+ });
886
883
  // Get the outbound routes and add a GC node for this channel.
887
884
  builder.addNode("/", await this.getOutboundRoutes());
888
885
  return builder.getGCData();
@@ -1059,6 +1056,7 @@ class ChannelCollection {
1059
1056
  packagePath: details.pkg,
1060
1057
  request,
1061
1058
  headerData,
1059
+ timestampMs: undefined, // This will be added by the parent context if needed.
1062
1060
  });
1063
1061
  const dataStore = await dataStoreContext.realize();
1064
1062
  const subRequest = requestParser.createSubRequest(1);