Versions Compared

Key

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

...

Proposed Changes

log.dirs & log.dir

After KIP-1161, log.dir was changed to a LIST-type configuration, allowing comma-separated log directories. As a result, log.dir and log.dirs now provide the same functionality. To avoid duplication and confusion, we should remove the log.dir configuration.

Code Block
languagejava
@Deprecated
public static final String LOG_DIR_CONFIG = LOG_PREFIX + "dir";
@Deprecated
public static final String LOG_DIR_DEFAULT = "/tmp/kafka-logs";
@Deprecated
public static final String LOG_DIR_DOC = "A comma-separated list of the directories where the log data is stored. (supplemental to \" + LOG_DIRS_CONFIG + \" property) " +
    "This configuration has the same functionality as " + LOG_DIRS_CONFIG + " thus is deprecated and will be removed in Kafka 5.0.";

In Kafka 5.0, we should also update the default value of log.dirs and its validator.

Code Block
languagejava
public static final String LOG_DIRS_CONFIG = LOG_PREFIX + "dirs";
public static final String LOG_DIRS_DEFAULT = "/tmp/kafka-logs";
public static final String LOG_DIRS_DOC = "A comma-separated list of the directories where the log data is stored.";// define class
public class LogConfig extends AbstractConfig {    // skip
    .define(ServerLogConfigs.LOG_DIRS_CONFIG, STRING, ServerLogConfigs.LOG_DIRS_DEFAULT, ConfigDef.ValidList.anyNonDuplicateValues(false, false), HIGH, ServerLogConfigs.LOG_DIRS_DOC)     // skip
}

node.id & broker.id

The broker.id configuration is used in ZooKeeper mode. In KRaft mode, however, it is awkward to set a broker.id for a controller node. This makes the configuration outdated. Instead, node.id provides a more meaningful and semantic option in KRaft mode.

Code Block
languagejava
@Deprecated
public static final String BROKER_ID_CONFIG = "broker.id";
@Deprecated
public static final int BROKER_ID_DEFAULT = -1;
@Deprecated
public static final String BROKER_ID_DOC = "The broker id for this server. This configuration will be remove in Kafka 5.0. " +
        "Please use <code>node.id</code> instead.";

Compatibility, Deprecation, and Migration Plan

  1. We will add the `@Deprecated` annotation to these configurations. If users set any of them, Kafka 4.0 will print a warning message.

  2. These deprecated configurations will be fully removed in Kafka 5.0.
  3. Update the validator and default values for the remaining configurations in Kafka 5.0.

Test Plan

The unit tests and integration tests should be updated to use the non-deprecated configurations, and all tests must pass.

In Kafka 5.0 all tests should passed after add new default value and validator.

Rejected Alternatives

n/a