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

Remove CompatibilityMode case for "1" and compatibilityModeRuntimeOptions["1"] #23289

Open
markfields opened this issue Dec 10, 2024 · 1 comment
Labels
api deprecation Changes to a deprecated API triage

Comments

@markfields
Copy link
Member

markfields commented Dec 10, 2024

(Someone correct me if I'm wrong)

We don't intend to support collaboration between 1.x and 3.0 clients. Both are compatible with 2.x, so users can be migrated over the 2.x timeframe.

So in 3.0 we can remove "1" from the union type CompatibilityMode (maybe should change the structure of that type to make it easier to deprecate/remove in the future), and remove compatibilityModeRuntimeOptions["1"] from https://github.com/microsoft/FluidFramework/blob/main/packages/framework/fluid-static/src/compatibilityConfiguration.ts

Then we'll be able to clean up the code supporting those old configurations which aren't otherwise used.

@markfields markfields added the api deprecation Changes to a deprecated API label Dec 10, 2024
@markfields
Copy link
Member Author

@vladsud - On second thought, I don't think this has to happen at the 3.0.0 moment, what do you think? Here are the options it overrides:

"1": {
	// 1.x clients are compatible with TurnBased flushing, but here we elect to remain on Immediate flush mode
	// as a work-around for inability to send batches larger than 1Mb. Immediate flushing keeps batches smaller as
	// fewer messages will be included per flush.
	flushMode: FlushMode.Immediate,
	// Op compression is on by default but introduces a new type of op which is not compatible with 1.x clients.
	compressionOptions: {
		minimumBatchSizeInBytes: Number.POSITIVE_INFINITY, // disabled
		compressionAlgorithm: CompressionAlgorithms.lz4,
	},
	// Grouped batching is on by default but introduces a new type of op which is not compatible with 1.x clients.
	enableGroupedBatching: false,
	// TODO: Include explicit disables for things that are currently off-by-default?

	// Explicitly disable running Sweep in compat mode "1". Sweep is supported only in 2.x. So, when 1.x and 2.x
	// clients are running in parallel, running sweep will fail 1.x clients.
	gcOptions: { enableGCSweep: undefined },
},

flushMode and enableGroupedBatching are being removed from the Legacy-Alpha options list in 2.20 (tracked in sub-issues under #22835). compressionOptions and gcOptions aren't changing, so it's not like this is blocking some other breaking change.

If you agree, I'll close this and track it in ADO. cc @jason-ha @ChumpChief

@markfields markfields changed the title Remove compatibilityModeRuntimeOptions["1"] Remove CompatibilityMode case for "1" and compatibilityModeRuntimeOptions["1"] Dec 13, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api deprecation Changes to a deprecated API triage
Projects
None yet
Development

No branches or pull requests

1 participant