Versions Compared

Key

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

...

These changes use and are based on KAFKA-1845 (KafkaConfig should use ConfigDef).

Applying Global Configuration to the Broker

The new proposed workflow is the following:

...

The global configuration is stored in the same format as a topic-level configuration:

 

 

{

    "version" : "1",
    "config"  : {
	            "message.max.bytes" : "200000",
		    "num.network.threads" : "5"
		}
}

Dedicated zookeeper path to store global configuration: /brokers/config

Updating Global Configuration

To change global configuration the new Wire Protocol message is introduced. Proposed schema:

Request:

ConfigChangeRequest => [ConfigData]
  ConfigData => ConfigKey ConfigValue
   ConfigKey => string
ConfigValue => string

Response:

ConfigChangeResponse => ErrorCode
ErrorCode => int16

To change global configuration:

  1. User issues ChangeConfigRequest to Controller with global configuration that needs to be updated
  2. Controller fetches current global configuration from zk, merges with supplied and validates merged config
  3. If successful, configuration is updated in zk
  4. Once broker is restarted new global configuration is applied to it 

Compatibility, Deprecation, and Migration Plan

...