Removal of IContainerRuntimeOptions.enableGroupedBatching
in v2.20
#23270
Labels
IContainerRuntimeOptions.enableGroupedBatching
in v2.20
#23270
Deprecated API
Context
We can and should get rid of the mode where we send ops with empty content for Compression.
Configuration-wise, at this point both compression & op grouping are ON in main, and OFF in LTS. So, we can group them together into one modality and should stop mentioning (and dealing with) a modality where compression is on, but op grouping is off.
Since we will now always group a batch of 2 or more messages, we must remove the ability to configure this. Batch grouping will now be dependent on batch compression.
Then it’s just a matter of updating OpCompressor to require single-message batches and remove the empty placeholder code.
Approach
Tag the deprecated option with the @deprecated tag.
Create internal version of containerRuntimeOptions that has enableGroupedBatching and remove the existing option from containerRuntime.
Remove the code that handles compression batches with multiple messages.
DocumentSchemaController.opGroupingEnabled will now depend on the value of the internal version of enableGroupedBatching
Update opCompressor.compressBatch() so that it receives a batch with a single message and stops creating the empty placeholder ops.
Update Outbox.flushInternal() so that it always groups batches with 2 or more messages and compresses them. It’s important to note that we also want to stop grouping and compressing blobAttach batches, since we won’t group them anymore.
Dependencies
The deprecation/removal of FlushMode.Immediate from IContainerRuntimeOptions.flushMode will use the same new IContainerRuntimeOptionsInternal, so those PRs will need to be thoughtfully merged.
Compatibility Concerns
To support 1.x clients we are creating an internal version of enableGroupedBatching that will be able to receive requests from said clients and we will have a mechanism to disable grouped batching and compression both.
There shouldn’t be any issues since currently there is no existing use of turning on grouping and turning off compression.
There also shouldn’t be any issues on the functionality of batch grouping depending on batch compression, since if the user has grouping available in their version of FF they should also have an existing configuration of compression. This is because compression was released before grouping within the FF code.
Expected Timeline
We expect the chanes to be made in Client 2.20 release, which is expected to be on 01/06/2025
The text was updated successfully, but these errors were encountered: