Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
| Name | `share.coordinator.snapshot.update.records.per.snapshot` |
| Type | `INT` |
| Default | `500`  |
| Validator | `between(200, 1000)` (changed)  |
| Importance | `MEDIUM`  |
| Doc | "The number of update records the share coordinator writes between snapshot records, applied as a ceiling across all share groups on this broker. Must be in `[200, 1000]`. May be overridden per group via the `share.snapshot.update.records.per.snapshot` group config; per-group values are clamped to this ceiling." |

The floor value moves from 0 to 200, to disallow values that waste disk by writing too many full snapshots.

At very low values, every small state change triggers a full ShareSnapshot instead of a small ShareUpdate, so most of what gets written to the log is large snapshot records. This is a behavior break for any cluster currently set below 200 (including the documented value `0`); See the *Migration Plan* section which is required before upgrading lower bound of `0` is preserved for backwards compatibility. The semantics of `0` ("snapshot every write") are documented but otherwise unchanged. Disallowing `0` is explicitly out of scope (see *Rejected Alternatives*).


     2. New per-group dynamic config: `shareshare.snapshot.update.records.per.snapshot`snapshot

A new entry on `ConfigResourceConfigResource.Type.GROUP`GROUP, set via `AdminClient.incrementalAlterConfigs` like any other share-group dynamic config (modeled on `share.record.lock.duration.ms`).| **Name** | AdminClient.incrementalAlterConfigs.


Code Block
| Name | `share.snapshot.update.records.per.snapshot` |

...


|

...

 Type

...

 | `INT` |

...


|

...

 Default

...

 | _unset_  falls back to `share.coordinator.snapshot.update.records.per.snapshot` |

...


|

...

 Validator

...

 | `between(

...

200, broker_value)` enforced at apply time; static

...

 `between(200, 1000)` for the ConfigDef itself |
| Importance | `MEDIUM` |
| Doc | "Number of update records the share coordinator writes between snapshot records for this share group. Must be in `[200, broker_ceiling]`, where `broker_ceiling` is the current value of `share.coordinator.snapshot.update.records.per.snapshot`

...

. If unset, the broker-level

...

 value is used." |

...



3. Java constants

`ShareCoordinatorConfig.java` already exposes `SNAPSHOT_UPDATE_RECORDS_PER_SNAPSHOT_CONFIG`. The new per-group constant lives in `GroupConfig.java`:

...