Versions Compared

Key

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

...

There are two additional dynamic broker configs introduced in KIP-848: group.consumer.session.timeout.ms and group.consumer.heartbeat.interval.ms. They will be stored in the metadata log as they are dynamic. These configs will be part of a new resource type GROUP so which the downgraded existing quorum controller will throw an exception since the ConfigResource type is unknown. Therefore, we either need the controller ignore them. Ideally, this should be unknown resource types or have them cleaned up as part of the downgrade. There For removing the configs, there are two options: 1) The controller or the coordinator cleans the dynamic configs. This is difficult to implement as dynamic configs do not have versions and likely will need a generic solution for all dynamic configs. And 2) have the operator remove these dynamic configs before downgrading. This introduces an additional manual step, but it is far less complex than the former option. This KIP proposes to take option 2) and make changes to the controller to ignore unknown resource types.

Broker shutdown

When a broker goes down, consumers will remain unaffected as they have already been downgraded and are using the old protocol. Their ownership moves to a different coordinator and the behavior is identical to what we do today, regardless of whether the migrated coordinator is downgraded or not.

...

  1. ignore unknown record types: this needs to be added to the current coordinator. Otherwise, the downgraded coordinator will fail to load partitions.
  2. ignore unknown record fields (tagged fields): this also needs to be added. The existing coordinator is unable to read versions that are greater than the maximum supported version (throws IllegalStateException). Also, the current coordinator needs the version bump to 4 so that OffsetCommitValue is a flexible version. Otherwise, it will be unable to read future taggedFields.
  3. ignore unknown ConfigResource types for dynamic configs. Otherwise, the downgrade will fail as the controller will throw an exception.

Test Plan

Once KIP-848 is implemented, we should add two system tests: one for the upgrade process and one for the downgrade process. Below describes the downgrade test:

...