Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IdCompressor in the runtime #14340

Merged
merged 113 commits into from
May 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
113 commits
Select commit Hold shift + click to select a range
75fcfed
IdCompressor building in runtime directory and constructed in contain…
justus-camp Dec 14, 2022
bbbe80a
Generate an id in counter
justus-camp Dec 14, 2022
5bc0ac1
Merge branch 'main' into runtime_compressor_prototype
justus-camp Dec 14, 2022
8e8a540
Include compressor in summaries and ops
justus-camp Dec 15, 2022
6a9c2a4
Fix issues with summary deserialization
justus-camp Dec 15, 2022
6bd21c5
Merge branch 'main' into runtime_compressor_prototype
justus-camp Dec 27, 2022
019961c
Update typetests
justus-camp Dec 27, 2022
14ff6f5
Introduce IdCompressor interface to avoid as any cast in context
justus-camp Dec 28, 2022
12a1fc1
Start making things optional, add runtime flag for enablement
justus-camp Dec 29, 2022
8169619
Merge branch 'main' into runtime_compressor_prototype
justus-camp Jan 10, 2023
43e9df2
Merge branch 'main' into runtime_compressor_prototype
justus-camp Jan 10, 2023
d85a4e5
Integrate id-compressor changes
justus-camp Jan 11, 2023
44117f1
More compat stuff
justus-camp Jan 12, 2023
cbac31b
More type stuff
justus-camp Jan 12, 2023
2dc5306
Temp rename of SharedTree's idCompressor
justus-camp Jan 12, 2023
d42ef69
Trying to fix typetests
justus-camp Jan 12, 2023
0877f42
Run prettier, remove .only from test
justus-camp Jan 12, 2023
be7cafc
Hacky workaround for replayPendingStates, almost passing e2e now
justus-camp Jan 13, 2023
208c21b
Fix for legacy chunking
justus-camp Jan 13, 2023
f6f5aaa
Merge branch 'main' into runtime_compressor_prototype
justus-camp Jan 13, 2023
cd2574a
Only add idRange if ids were generated, fix typetests
justus-camp Jan 13, 2023
1e66288
policy-check workaround
justus-camp Jan 13, 2023
7704cef
Revert "policy-check workaround"
justus-camp Jan 13, 2023
4d91ac1
Move into SharedObject instead of containerRuntime
justus-camp Jan 13, 2023
6bae80f
Disable idCompressor by default
justus-camp Jan 17, 2023
432a2a8
Remove any type from serialized compressor
justus-camp Jan 18, 2023
92a3e32
Merge branch 'main' into runtime_compressor_prototype
justus-camp Jan 19, 2023
9c2f670
Remove erroneous code
justus-camp Jan 19, 2023
f56032a
Merge branch 'main' into runtime_compressor_prototype
justus-camp Jan 24, 2023
0c90084
Integrate bug-fix
justus-camp Jan 24, 2023
0cfd6d5
Move test directory
justus-camp Jan 24, 2023
e7595bd
Remove id-compressor from tree directory
justus-camp Jan 24, 2023
5a4e795
Address some PR feedback
justus-camp Jan 26, 2023
f91741d
Merge branch 'main' into runtime_compressor_prototype
justus-camp Jan 26, 2023
8c4e5d9
Commit files
justus-camp Jan 26, 2023
0090c95
Remove duplicate identifiers, use runtime-definitions
justus-camp Jan 26, 2023
ca48e10
Move some methods into core, error on getter for runtime idCompressor
justus-camp Jan 30, 2023
e023787
Merge branch 'main' into runtime_compressor_prototype
justus-camp Jan 30, 2023
140f513
Commit api doc I missed
justus-camp Jan 30, 2023
98e0ea1
Merge branch 'main' into runtime_compressor_prototype
justus-camp Jan 31, 2023
084087f
Address a few comments
justus-camp Feb 2, 2023
39fe8d1
Test file
justus-camp Feb 2, 2023
f00c909
IdAllocation op
justus-camp Feb 4, 2023
7f019f9
Merge branch 'main' into idCompressor_idAllocationOp
justus-camp Feb 4, 2023
8411ac6
Working stashed ops
justus-camp Feb 9, 2023
87483a5
Merge branch 'main' into idCompressor_idAllocationOp
justus-camp Feb 22, 2023
f2bccca
Update PR
justus-camp Feb 23, 2023
12fefd3
Change pendingStateManager check
justus-camp Feb 27, 2023
e16f45b
Merge branch 'main' into idCompressor_idAllocationOp
justus-camp Feb 27, 2023
2633f2a
Tests hopefully passing
justus-camp Feb 27, 2023
667632d
Remove use of any for fetching compressor snapshot
justus-camp Feb 27, 2023
23b1814
Cleanup for PR
justus-camp Feb 28, 2023
91b9ed5
Remove id-compressor from tree fence configs
justus-camp Feb 28, 2023
4922fc9
More realistic test, revert stashedOp test, expose sessionId
justus-camp Feb 28, 2023
af2d7d4
Add a bunch of tests
justus-camp Mar 2, 2023
a0d8e4f
Merge branch 'main' into idCompressor_idAllocationOp
justus-camp Mar 2, 2023
6aa63f6
Merge branch 'main' into idCompressor_idAllocationOp
justus-camp Mar 2, 2023
d733568
Run build and commit result
justus-camp Mar 2, 2023
55507d2
Test for enablement of feature, fail if runtime receives an id alloca…
justus-camp Mar 2, 2023
73d4ddf
Address some PR feedback
justus-camp Mar 3, 2023
28273f3
Merge branch 'main' into idCompressor_idAllocationOp
justus-camp Mar 8, 2023
a2830b2
Merge branch 'main' into idCompressor_idAllocationOp
justus-camp Mar 13, 2023
c8e2cb4
Hopefully fix bad merge
justus-camp Mar 13, 2023
3c3e45f
Redo typetests?
justus-camp Mar 13, 2023
7fc20f9
Merge branch 'main' into idCompressor_idAllocationOp
justus-camp Mar 27, 2023
2a8aead
Address a lot of feedback
justus-camp Mar 27, 2023
b01dccd
Fix incorrectly updated test
justus-camp Mar 27, 2023
e5e4db8
Don't expose idCompressor to DDS consumers
justus-camp Mar 27, 2023
8e09fb5
Commit api-extractor
justus-camp Mar 28, 2023
82871fc
Merge branch 'main' into idCompressor_idAllocationOp
justus-camp Mar 28, 2023
ffe0ea1
Remove reservedIds
justus-camp Mar 30, 2023
f113e86
Address some of PR feedback
justus-camp Apr 1, 2023
11314b4
Merge branch 'main' into idCompressor_idAllocationOp
justus-camp Apr 10, 2023
7e0aa37
Rename some test variables for clarity
justus-camp Apr 10, 2023
42e0de9
Small test update
justus-camp Apr 10, 2023
61ff6d3
Stashed ops working but ugly
justus-camp Apr 10, 2023
5320449
Enable option in stress tests, clarify what's going on with stashed ops
justus-camp Apr 10, 2023
73b3f0f
Refactor tests to make it easy to make multiple DataStores
justus-camp Apr 12, 2023
66fd72e
Format and lint
justus-camp Apr 12, 2023
9258eb1
IdCompressor summary tests
justus-camp Apr 13, 2023
b88796e
Reconnect test, fix issue with reconnect
justus-camp Apr 14, 2023
9602683
Detached container test
justus-camp Apr 18, 2023
7e31443
Merge branch 'main' into idCompressor_idAllocationOp
justus-camp Apr 18, 2023
c991fbf
Fix lint
justus-camp Apr 18, 2023
9d8944a
PendingStateManager fix (hopefully)
justus-camp Apr 18, 2023
9ab3cf0
Address some of PR feedback
justus-camp Apr 20, 2023
fed888c
Merge branch 'main' into idCompressor_idAllocationOp
justus-camp Apr 20, 2023
a74519d
Add type for compressor op with stashed state
justus-camp Apr 20, 2023
8c8329a
Fix gf for moved tree
justus-camp Apr 21, 2023
3e40bfc
Fix some test race conditions
justus-camp Apr 21, 2023
0769477
Merge branch 'main' into idCompressor_idAllocationOp
justus-camp Apr 21, 2023
a9029b8
Remove only
justus-camp Apr 21, 2023
2a630cb
Fix another flaky test
justus-camp Apr 21, 2023
180f1a2
Commit new type api-report
justus-camp Apr 21, 2023
f66204b
Move all tests to idCompressor.spec.ts, refactor
justus-camp Apr 21, 2023
bd3deea
Merge branch 'main' into idCompressor_idAllocationOp
justus-camp Apr 21, 2023
a39ed81
Merge branch 'main' into idCompressor_idAllocationOp
justus-camp Apr 21, 2023
39acc3f
Change enablement to one-way switch
justus-camp Apr 24, 2023
9e428a0
Remove unnecessary delete
justus-camp Apr 24, 2023
8901455
PR feedback
justus-camp Apr 25, 2023
a4d683d
Don't add compressor metadata to summary if not defined
justus-camp Apr 25, 2023
3ba81c9
Test fixes
justus-camp Apr 25, 2023
2b99e53
Merge branch 'main' into idCompressor_idAllocationOp
justus-camp Apr 25, 2023
ff4c196
PR feedback
justus-camp Apr 25, 2023
cc3d56f
Merge remote-tracking branch 'upstream/main' into idCompressor_idAllo…
justus-camp Apr 25, 2023
b18f237
Merge remote-tracking branch 'upstream/main' into idCompressor_idAllo…
justus-camp Apr 26, 2023
3f761ca
Merge branch 'main' into idCompressor_idAllocationOp
justus-camp Apr 28, 2023
db40682
PR feedback
justus-camp Apr 28, 2023
8ed9182
Remove @link because api-extractor can't find it for some reason
justus-camp Apr 28, 2023
4b2a516
Explicitly set to false in else
justus-camp Apr 28, 2023
48f5954
Bug in test
justus-camp Apr 28, 2023
5f5f820
rename test
justus-camp Apr 28, 2023
dc3eec4
Don't rename experimental sharedtree's compressor now that it's acces…
justus-camp Apr 28, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 18 additions & 1 deletion api-report/container-runtime.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ import { IFluidHandle } from '@fluidframework/core-interfaces';
import { IFluidHandleContext } from '@fluidframework/core-interfaces';
import { IFluidRouter } from '@fluidframework/core-interfaces';
import { IGarbageCollectionData } from '@fluidframework/runtime-definitions';
import { IIdCompressor } from '@fluidframework/runtime-definitions';
import { IIdCompressorCore } from '@fluidframework/runtime-definitions';
import { ILoader } from '@fluidframework/container-definitions';
import { ILoaderOptions } from '@fluidframework/container-definitions';
import { IQuorumClients } from '@fluidframework/protocol-definitions';
Expand All @@ -47,6 +49,8 @@ import { ITelemetryContext } from '@fluidframework/runtime-definitions';
import { ITelemetryLogger } from '@fluidframework/common-definitions';
import { MessageType } from '@fluidframework/protocol-definitions';
import { NamedFluidDataStoreRegistryEntries } from '@fluidframework/runtime-definitions';
import { SerializedIdCompressorWithNoSession } from '@fluidframework/runtime-definitions';
import { StableId } from '@fluidframework/runtime-definitions';
import { TypedEventEmitter } from '@fluidframework/common-utils';

// @public
Expand All @@ -55,6 +59,9 @@ export const agentSchedulerId = "_scheduler";
// @public
export const AllowTombstoneRequestHeaderKey = "allowTombstone";

// @public
export function assertIsStableId(stableId: string): StableId;

// @public
export enum CompressionAlgorithms {
// (undocumented)
Expand All @@ -73,6 +80,7 @@ export enum ContainerMessageType {
ChunkedOp = "chunkedOp",
// (undocumented)
FluidDataStoreOp = "component",
IdAllocation = "idAllocation",
// (undocumented)
Rejoin = "rejoin"
}
Expand All @@ -84,7 +92,7 @@ export class ContainerRuntime extends TypedEventEmitter<IContainerRuntimeEvents>
// Warning: (ae-forgotten-export) The symbol "IBlobManagerLoadInfo" needs to be exported by the entry point index.d.ts
//
// @internal
protected constructor(context: IContainerContext, registry: IFluidDataStoreRegistry, metadata: IContainerRuntimeMetadata | undefined, electedSummarizerData: ISerializedElection | undefined, chunks: [string, string[]][], dataStoreAliasMap: [string, string][], runtimeOptions: Readonly<Required<IContainerRuntimeOptions>>, containerScope: FluidObject, logger: ITelemetryLogger, existing: boolean, blobManagerSnapshot: IBlobManagerLoadInfo, _storage: IDocumentStorageService, requestHandler?: ((request: IRequest, runtime: IContainerRuntime) => Promise<IResponse>) | undefined, summaryConfiguration?: ISummaryConfiguration, initializeEntryPoint?: (containerRuntime: IContainerRuntime) => Promise<FluidObject>);
protected constructor(context: IContainerContext, registry: IFluidDataStoreRegistry, metadata: IContainerRuntimeMetadata | undefined, electedSummarizerData: ISerializedElection | undefined, chunks: [string, string[]][], dataStoreAliasMap: [string, string][], runtimeOptions: Readonly<Required<IContainerRuntimeOptions>>, containerScope: FluidObject, logger: ITelemetryLogger, existing: boolean, blobManagerSnapshot: IBlobManagerLoadInfo, _storage: IDocumentStorageService, serializedIdCompressor: SerializedIdCompressorWithNoSession | undefined, requestHandler?: ((request: IRequest, runtime: IContainerRuntime) => Promise<IResponse>) | undefined, summaryConfiguration?: ISummaryConfiguration, initializeEntryPoint?: (containerRuntime: IContainerRuntime) => Promise<FluidObject>);
// (undocumented)
protected addContainerStateToSummary(summaryTree: ISummaryTreeWithStats, fullTree: boolean, trackState: boolean, telemetryContext?: ITelemetryContext): void;
addedGCOutboundReference(srcHandle: IFluidHandle, outboundHandle: IFluidHandle): void;
Expand Down Expand Up @@ -148,6 +156,8 @@ export class ContainerRuntime extends TypedEventEmitter<IContainerRuntimeEvents>
// (undocumented)
get IContainerRuntime(): this;
// (undocumented)
idCompressor: (IIdCompressor & IIdCompressorCore) | undefined;
// (undocumented)
get IFluidDataStoreRegistry(): IFluidDataStoreRegistry;
// (undocumented)
get IFluidHandleContext(): IFluidHandleContext;
Expand Down Expand Up @@ -251,6 +261,9 @@ export class FluidDataStoreRegistry implements IFluidDataStoreRegistry {
get IFluidDataStoreRegistry(): this;
}

// @public
export function generateStableId(): StableId;

// @public
export interface IAckedSummary {
// (undocumented)
Expand Down Expand Up @@ -345,6 +358,7 @@ export interface IContainerRuntimeOptions {
readonly compressionOptions?: ICompressionRuntimeOptions;
readonly enableGroupedBatching?: boolean;
readonly enableOpReentryCheck?: boolean;
readonly enableRuntimeIdCompressor?: boolean;
readonly flushMode?: FlushMode;
// (undocumented)
readonly gcOptions?: IGCRuntimeOptions;
Expand Down Expand Up @@ -433,6 +447,9 @@ export interface IRootSummaryTreeWithStats extends ISummaryTreeWithStats {
// @public @deprecated (undocumented)
export function isRuntimeMessage(message: ISequencedDocumentMessage): boolean;

// @public
export function isStableId(str: string): str is StableId;

// @public
export interface ISubmitSummaryOpResult extends Omit<IUploadSummaryResult, "stage" | "error"> {
readonly clientSequenceNumber: number;
Expand Down
3 changes: 3 additions & 0 deletions api-report/datastore-definitions.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import { IFluidHandleContext } from '@fluidframework/core-interfaces';
import { IFluidLoadable } from '@fluidframework/core-interfaces';
import { IFluidRouter } from '@fluidframework/core-interfaces';
import { IGarbageCollectionData } from '@fluidframework/runtime-definitions';
import { IIdCompressor } from '@fluidframework/runtime-definitions';
import { IInboundSignalMessage } from '@fluidframework/runtime-definitions';
import { ILoaderOptions } from '@fluidframework/container-definitions';
import { IProvideFluidDataStoreRegistry } from '@fluidframework/runtime-definitions';
Expand Down Expand Up @@ -111,6 +112,8 @@ export interface IFluidDataStoreRuntime extends IFluidRouter, IEventProvider<IFl
// (undocumented)
readonly id: string;
// (undocumented)
readonly idCompressor?: IIdCompressor;
// (undocumented)
readonly IFluidHandleContext: IFluidHandleContext;
// (undocumented)
readonly logger: ITelemetryLogger;
Expand Down
3 changes: 3 additions & 0 deletions api-report/datastore.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import { IFluidDataStoreRuntimeEvents } from '@fluidframework/datastore-definiti
import { IFluidHandle } from '@fluidframework/core-interfaces';
import { IFluidHandleContext } from '@fluidframework/core-interfaces';
import { IGarbageCollectionData } from '@fluidframework/runtime-definitions';
import { IIdCompressor } from '@fluidframework/runtime-definitions';
import { IInboundSignalMessage } from '@fluidframework/runtime-definitions';
import { ILoaderOptions } from '@fluidframework/container-definitions';
import { IQuorumClients } from '@fluidframework/protocol-definitions';
Expand Down Expand Up @@ -85,6 +86,8 @@ export class FluidDataStoreRuntime extends TypedEventEmitter<IFluidDataStoreRunt
// (undocumented)
readonly id: string;
// (undocumented)
get idCompressor(): IIdCompressor | undefined;
// (undocumented)
get IFluidHandleContext(): this;
// (undocumented)
get IFluidRouter(): this;
Expand Down
207 changes: 207 additions & 0 deletions api-report/runtime-definitions.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,9 @@ export const blobCountPropertyName = "BlobCount";
// @public (undocumented)
export const channelsTreeName = ".channels";

// @alpha
export type CompressedId = FinalCompressedId | LocalCompressedId;

// @public (undocumented)
export type CreateChildSummarizerNodeFn = (summarizeInternal: SummarizeInternalFn, getGCDataFn: (fullGC?: boolean) => Promise<IGarbageCollectionData>,
getBaseGCDetailsFn?: () => Promise<IGarbageCollectionDetailsBase>) => ISummarizerNodeWithGC;
Expand Down Expand Up @@ -81,6 +84,12 @@ export interface DetachedAttributionKey {
type: "detached";
}

// @alpha
export type FinalCompressedId = number & {
readonly FinalCompressedId: "5d83d1e2-98b7-4e4e-a889-54c855cfa73d";
readonly OpNormalized: "9209432d-a959-4df7-b2ad-767ead4dbcae";
};

// @public
export type FluidDataStoreRegistryEntry = Readonly<Partial<IProvideFluidDataStoreRegistry & IProvideFluidDataStoreFactory>>;

Expand Down Expand Up @@ -152,6 +161,40 @@ export interface IDataStore extends IFluidRouter {
trySetAlias(alias: string): Promise<AliasResult>;
}

// @public
export interface IdCreationRange {
// (undocumented)
readonly ids?: IdCreationRange.Ids;
// (undocumented)
readonly sessionId: SessionId;
}

// @public (undocumented)
export namespace IdCreationRange {
// (undocumented)
export interface HasOverrides {
// (undocumented)
readonly overrides: Overrides;
}
// (undocumented)
export type Ids = {
readonly first: UnackedLocalId;
readonly last: UnackedLocalId;
} | ({
readonly first?: UnackedLocalId;
readonly last?: UnackedLocalId;
} & HasOverrides);
// (undocumented)
export type Override = readonly [id: UnackedLocalId, override: string];
// (undocumented)
export type Overrides = readonly [Override, ...Override[]];
}

// @public (undocumented)
export type IdCreationRangeWithStashedState = IdCreationRange & {
stashedState: SerializedIdCompressorWithOngoingSession;
};

// @public
export interface IEnvelope {
address: string;
Expand Down Expand Up @@ -221,6 +264,8 @@ export interface IFluidDataStoreContext extends IEventProvider<IFluidDataStoreCo
getQuorum(): IQuorumClients;
// (undocumented)
readonly id: string;
// (undocumented)
readonly idCompressor?: IIdCompressor;
readonly isLocalDataStore: boolean;
// (undocumented)
readonly logger: ITelemetryBaseLogger;
Expand Down Expand Up @@ -311,6 +356,41 @@ export interface IGarbageCollectionSummaryDetailsLegacy {
usedRoutes?: string[];
}

// @public
export interface IIdCompressor {
// Warning: (ae-incompatible-release-tags) The symbol "decompress" is marked as @public, but its signature references "SessionSpaceCompressedId" which is marked as @alpha
// Warning: (ae-incompatible-release-tags) The symbol "decompress" is marked as @public, but its signature references "FinalCompressedId" which is marked as @alpha
decompress(id: SessionSpaceCompressedId | FinalCompressedId): StableId | string;
// Warning: (ae-incompatible-release-tags) The symbol "generateCompressedId" is marked as @public, but its signature references "SessionSpaceCompressedId" which is marked as @alpha
generateCompressedId(override?: string): SessionSpaceCompressedId;
// (undocumented)
localSessionId: SessionId;
// Warning: (ae-incompatible-release-tags) The symbol "normalizeToOpSpace" is marked as @public, but its signature references "SessionSpaceCompressedId" which is marked as @alpha
normalizeToOpSpace(id: SessionSpaceCompressedId): OpSpaceCompressedId;
// Warning: (ae-incompatible-release-tags) The symbol "normalizeToSessionSpace" is marked as @public, but its signature references "SessionSpaceCompressedId" which is marked as @alpha
normalizeToSessionSpace(id: OpSpaceCompressedId, originSessionId: SessionId): SessionSpaceCompressedId;
// Warning: (ae-incompatible-release-tags) The symbol "normalizeToSessionSpace" is marked as @public, but its signature references "FinalCompressedId" which is marked as @alpha
// Warning: (ae-incompatible-release-tags) The symbol "normalizeToSessionSpace" is marked as @public, but its signature references "SessionSpaceCompressedId" which is marked as @alpha
normalizeToSessionSpace(id: FinalCompressedId): SessionSpaceCompressedId;
// Warning: (ae-incompatible-release-tags) The symbol "recompress" is marked as @public, but its signature references "SessionSpaceCompressedId" which is marked as @alpha
recompress(uncompressed: string): SessionSpaceCompressedId;
// Warning: (ae-incompatible-release-tags) The symbol "tryDecompress" is marked as @public, but its signature references "SessionSpaceCompressedId" which is marked as @alpha
// Warning: (ae-incompatible-release-tags) The symbol "tryDecompress" is marked as @public, but its signature references "FinalCompressedId" which is marked as @alpha
tryDecompress(id: SessionSpaceCompressedId | FinalCompressedId): StableId | string | undefined;
// Warning: (ae-incompatible-release-tags) The symbol "tryRecompress" is marked as @public, but its signature references "SessionSpaceCompressedId" which is marked as @alpha
tryRecompress(uncompressed: string): SessionSpaceCompressedId | undefined;
}

// @public (undocumented)
export interface IIdCompressorCore {
// (undocumented)
clusterCapacity: number;
finalizeCreationRange(range: IdCreationRange): void;
serialize(withSession: true): SerializedIdCompressorWithOngoingSession;
serialize(withSession: false): SerializedIdCompressorWithNoSession;
takeNextCreationRange(): IdCreationRange;
}

// @public
export interface IInboundSignalMessage extends ISignalMessage {
// (undocumented)
Expand Down Expand Up @@ -439,6 +519,11 @@ export interface LocalAttributionKey {
type: "local";
}

// @alpha
export type LocalCompressedId = number & {
readonly LocalCompressedId: "6fccb42f-e2a4-4243-bd29-f13d12b9c6d1";
} & SessionUnique;

// @public
export type NamedFluidDataStoreRegistryEntries = Iterable<NamedFluidDataStoreRegistryEntry>;

Expand All @@ -451,12 +536,134 @@ export interface OpAttributionKey {
type: "op";
}

// Warning: (ae-incompatible-release-tags) The symbol "OpSpaceCompressedId" is marked as @public, but its signature references "CompressedId" which is marked as @alpha
//
// @public
export type OpSpaceCompressedId = CompressedId & {
readonly OpNormalized: "9209432d-a959-4df7-b2ad-767ead4dbcae";
};

// @public
export type SerializedCluster = readonly [
sessionIndex: number,
capacity: number,
countOrOverrides?: number | SerializedClusterOverrides,
overrides?: SerializedClusterOverrides
];

// Warning: (ae-incompatible-release-tags) The symbol "SerializedClusterOverrides" is marked as @public, but its signature references "FinalCompressedId" which is marked as @alpha
//
// @public (undocumented)
export type SerializedClusterOverrides = readonly [
overriddenFinalIndex: number,
override: string,
overriddenId?: FinalCompressedId
][];

// @public
export interface SerializedIdCompressor extends VersionedSerializedIdCompressor {
readonly clusterCapacity: number;
readonly clusters: readonly SerializedCluster[];
readonly sessions: readonly SerializedSessionData[];
}

// @public
export interface SerializedIdCompressorWithNoSession extends SerializedIdCompressor {
// (undocumented)
readonly _noLocalState: "3aa2e1e8-cc28-4ea7-bc1a-a11dc3f26dfb";
}

// @public
export interface SerializedIdCompressorWithOngoingSession extends SerializedIdCompressor {
// (undocumented)
readonly _hasLocalState: "1281acae-6d14-47e7-bc92-71c8ee0819cb";
readonly localSessionIndex: number;
readonly localState?: SerializedLocalState;
}

// Warning: (ae-incompatible-release-tags) The symbol "SerializedLocalOverrides" is marked as @public, but its signature references "LocalCompressedId" which is marked as @alpha
//
// @public (undocumented)
export type SerializedLocalOverrides = readonly (readonly [LocalCompressedId, string])[];

// @public (undocumented)
export interface SerializedLocalState {
// Warning: (ae-incompatible-release-tags) The symbol "lastTakenLocalId" is marked as @public, but its signature references "LocalCompressedId" which is marked as @alpha
readonly lastTakenLocalId: LocalCompressedId | undefined;
readonly localIdCount: number;
readonly overrides?: SerializedLocalOverrides;
readonly sessionNormalizer: SerializedSessionIdNormalizer;
}

// @public
export type SerializedSessionData = readonly [
sessionId: SessionId
];

// @public
export interface SerializedSessionIdNormalizer {
// Warning: (ae-incompatible-release-tags) The symbol "localRanges" is marked as @public, but its signature references "LocalCompressedId" which is marked as @alpha
// Warning: (ae-incompatible-release-tags) The symbol "localRanges" is marked as @public, but its signature references "FinalCompressedId" which is marked as @alpha
//
// (undocumented)
readonly localRanges: readonly (readonly [
firstLocal: LocalCompressedId,
lastLocal: LocalCompressedId,
finalRanges?: readonly (readonly [
alignedLocal: LocalCompressedId,
firstFinal: FinalCompressedId,
lastFinal: FinalCompressedId
])[]
])[];
// Warning: (ae-incompatible-release-tags) The symbol "nextLocalId" is marked as @public, but its signature references "LocalCompressedId" which is marked as @alpha
//
// (undocumented)
readonly nextLocalId: LocalCompressedId;
}

// @public
export type SessionId = StableId & {
readonly SessionId: "4498f850-e14e-4be9-8db0-89ec00997e58";
};

// @alpha
export type SessionSpaceCompressedId = CompressedId & SessionUnique;

// @public
export interface SessionUnique {
// (undocumented)
readonly SessionUnique: "cea55054-6b82-4cbf-ad19-1fa645ea3b3e";
}

// @public
export type StableId = UuidString & {
readonly StableId: "53172b0d-a3d5-41ea-bd75-b43839c97f5a";
};

// @public (undocumented)
export type SummarizeInternalFn = (fullTree: boolean, trackState: boolean, telemetryContext?: ITelemetryContext, incrementalSummaryContext?: IExperimentalIncrementalSummaryContext) => Promise<ISummarizeInternalResult>;

// @public (undocumented)
export const totalBlobSizePropertyName = "TotalBlobSize";

// Warning: (ae-incompatible-release-tags) The symbol "UnackedLocalId" is marked as @public, but its signature references "LocalCompressedId" which is marked as @alpha
//
// @public (undocumented)
export type UnackedLocalId = LocalCompressedId & OpSpaceCompressedId;

// @public
export type UuidString = string & {
readonly UuidString: "9d40d0ae-90d9-44b1-9482-9f55d59d5465";
};

// @public
export interface VersionedSerializedIdCompressor {
// (undocumented)
readonly version: string;
// (undocumented)
readonly _versionedSerializedIdCompressor: "8c73c57c-1cf4-4278-8915-6444cb4f6af5";
}

// @public
const VisibilityState_2: {
NotVisible: string;
Expand Down
4 changes: 4 additions & 0 deletions api-report/test-runtime-utils.api.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,8 @@ import { IFluidHandle } from '@fluidframework/core-interfaces';
import { IFluidHandleContext } from '@fluidframework/core-interfaces';
import { IGarbageCollectionData } from '@fluidframework/runtime-definitions';
import { IGarbageCollectionDetailsBase } from '@fluidframework/runtime-definitions';
import { IIdCompressor } from '@fluidframework/runtime-definitions';
import { IIdCompressorCore } from '@fluidframework/runtime-definitions';
import { ILoader } from '@fluidframework/container-definitions';
import { ILoaderOptions } from '@fluidframework/container-definitions';
import { IQuorumClients } from '@fluidframework/protocol-definitions';
Expand Down Expand Up @@ -325,6 +327,8 @@ export class MockFluidDataStoreContext implements IFluidDataStoreContext {
// (undocumented)
readonly id: string;
// (undocumented)
idCompressor: IIdCompressorCore & IIdCompressor;
// (undocumented)
IFluidDataStoreRegistry: IFluidDataStoreRegistry;
// (undocumented)
IFluidHandleContext: IFluidHandleContext;
Expand Down
Loading