FluidFramework/RELEASE_NOTES/2.0.0-internal.7.4.0.md

5.0 KiB

Fluid Framework v2.0.0-internal.7.4.0

container-runtime: (GC) Tombstoned objects will fail to load by default

Previously, Tombstoned objects would only trigger informational logs by default, with an option via config to also cause errors to be thrown on load. Now, failure to load is the default with an option to disable it if necessary. This reflects the purpose of the Tombstone stage which is to mimic the user experience of objects being deleted.

IdCompressor and related types from the @fluidframework/container-runtime and @fluidframework/runtime-definitions packages have been deprecated. They can now be found in a new package, @fluidframework/id-compressor.

The IdCompressor class is deprecated even in the new package. Consumers should use the interfaces, IIdCompressor and IIdCompressorCore, in conjunction with the factory function createIdCompressor instead.

telemetry-utils: Deprecate ConfigTypes and IConfigProviderBase

The types ConfigTypes and IConfigProviderBase have been deprecated in the @fluidframework/telemetry-utils package. The types can now be found in the @fluidframework/core-interfaces package. Please replace any uses with the types from @fluidframework/core-interfaces.

telemetry-utils: Deprecated logIfFalse

This functionality was not intended for export and will be removed in a future release. No replacement API is offered because the logic is trivial to reproduce as needed.

sequence: Deprecated findOverlappingIntervals API

The findOverlappingIntervals API from IntervalCollection has been deprecated. This functionality is moved to the OverlappingIntervalsIndex. Users should independently attach the index to the collection and utilize the API accordingly, for instance:

const overlappingIntervalsIndex = createOverlappingIntervalsIndex(sharedString);
collection.attachIndex(overlappingIntervalsIndex);
const result = overlappingIntervalsIndex.findOverlappingIntervals(start, end);

sequence: Deprecated previousInterval and nextInterval APIs

The previousInterval and nextInterval APIs from IntervalCollection have been deprecated. These functions are moved to the EndpointIndex. Users should independently attach the index to the collection and utilize the API accordingly, for instance:

const endpointIndex = createEndpointIndex(sharedString);
collection.attachIndex(endpointIndex);

const result1 = endpointIndex.previousInterval(pos);
const result2 = endpointIndex.nextInterval(pos);

sequence: Deprecated ICombiningOp, PropertiesRollback.Rewrite, and SharedString.annotateMarkerNotifyConsensus

The ICombiningOp and its usage in various APIs has been deprecated. APIs affected include SharedSegmentSequence.annotateRange and SharedString.annotateMarker. SharedString.annotateMarkerNotifyConsensus has also been deprecated, because it is related to combining ops. This functionality had no test coverage and was largely unused.

sequence: change and changeProperties are now a single method

Instead of having two separate methods to change the endpoints of an interval and the properties, they have been combined into a single method that will change the endpoints, properties, or both, depending on the arguments passed in. The signature of this combined method is now updated as well.

The new way to use the change method is to call it with an interval id as the first parameter and an object containing the desired portions of the interval to update as the second parameter. For the object parameter, the endpoints field should be an object containing the new start and end values for the interval, and the properties field should be an object containing the new properties for the interval. Either the endpoints field or the properties field can be omitted, and if neither are present, change will return undefined.

The new usage of the change method is as follows:

Change interval endpoints: change(id, { endpoints: { start: 1, end: 4 } });

Change interval properties: change(id { props: { a: 1 } });

Change interval endpoints and properties: change(id, { endpoints: { start: 1, end: 4 }, props: { a: 1 } });

aqueduct: Deprecated IRootDataObjectFactory

The IRootDataObjectFactory interface has been deprecated and will be removed in a future major release. Please remove all usage of it.

azure-client: Deprecated FluidStatic Classes

Several FluidStatic classes were unnecessarily exposed. They have been replaced with creation functions. This helps us keep implementations decoupled from usage which is easier to maintain and extend. It has very minimal impact on the public surface area of downstream packages. The deprecated classes are as follows:

  • AzureAudience (use IAzureAudience instead)
  • TinyliciousAudience (use ITinyliciousAudience instead)
  • DOProviderContainerRuntimeFactory
  • FluidContainer
  • ServiceAudience