Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Including DynamicConfigs in describeConfigs()

...

  • CLUSTER_AUTHORIZATION_FAILED (31) Authorization failed
  • POLICY_VIOLATION(44) The request violated the configured policy
  • INVALID_TOPIC_EXCEPTION (17) If the topic doesn't exist
  • UNKNOWN_MEMBER_ID (25) If any broker ids in the partition_reassignments included an unknown broker id
  • INVALID_REQUEST (42) If duplicate topics appeared in the request
  • PARTITION_REASSIGNMENT_IN_PROGRESS (new) If the reassignment cannot be started because a reassignment is currently running (i.e. the /admin/reassign_partitions znode exists)
  • INVALID_REPLICA_ASSIGNMENT (39) If a partition, replica or broker id in the partition_assignment doesn't exist or is incompatible with the requested num_partitions and /or replication_factor. The error_message would contain further information.
  • NONE (0) reassignment has started

AdminClient: describeConfigs() and alterConfigs()

Anchor
alterConfigs()
alterConfigs()
This API already exists, but doesn't currently support changing broker configs.
We need to address the following use cases:

  1. A previous call to reassignPartitions()  has been made and the user wants to apply or change the throttle.
  2. A previous call to reassignPartitions() is complete and the user wants to remove the throttle.

Inter-broker throttling is implemented via DynamicConfigs on the broker :

  • leader.replication.throttled.rate
  • follower.replication.throttled.rate

DynamicConfigs are (DynamicConfigs are configs "which have no physical manifestation in the server.properties and can only be set dynamically"):

  • leader.replication.throttled.rate
  • follower.replication.throttled.rate

(And via normal topic configs :leader.replication.throttled.replicas

...

and follower.replication.throttled.replicas)

The alterConfigsdescribeConfigs() API already exists, but doesn't current include Broker DynamicConfigs in its results. The describeConfigs() API will therefore be changed to allow altering DynamicConfigs in order to support  the following use cases:

  1. A previous call to reassignPartitions()  has been made and the user wants to apply or change the throttle.
  2. A previous call to reassignPartitions() is complete and the user wants to remove the throttle.

include broker DynamicConfigs in its output.

The alterConfigs() API already exists, but doesn't currently support changing broker configs (dynamic or otherwise). The alterConfigs() API will therefore be changed to allow altering DynamicConfigs.  This KIP does not propose to support altering broker configs that are not DynamicConfigs.

This will involve changing the API docdocs of these methods in the AdminClient.

Network Protocol:

...

(Describe|Alter)Configs(Request|Response)

Thes protocols already existThis protocol already exists, but support will be added for describing and altering broker DynamicConfigs, as described above for the corresponding AdminClient methods. The network format will not need to change, but the AlterConfigsResponse will (when the request attempts to alter broker configs) be able to fail with a new error code : (CLUSTER_AUTHORIZATION_FAILED) when the request attempts to alter broker configs.

Compatibility, Deprecation, and Migration Plan

...