DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
This page is meant as a template for writing a KIP. To create a KIP choose Tools->Copy on this page and modify with your content and replace the heading with the next KIP number and a description of your issue. Replace anything in italics with your own description.
Status
Current state: [One of "Under Discussion", "Accepted", "Rejected"]
Discussion thread: here [Change the link from the KIP proposal email archive to your own email thread]
JIRA: here [Change the link from KAFKA-1 to your own ticket]
Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast).
Motivation
Kafka command-line tools commonly operate against a broker running on the local machine. Requiring --bootstrap-server localhost:9092 for every invocation adds noise to quick-start, local development, and troubleshooting workflows.
Default local endpoints are useful for command-line clients:
The
mysqlclient useslocalhost:3306when no host or port is specified.zkCli.shhistorically usedlocalhost:2181when no server was specified.kafka-streams-application-reset.shalready useslocalhost:9092when--bootstrap-serveris absent.
The Streams application reset tool implements its default by initializing its bootstrap-server value to localhost:9092, then replacing it only when the user supplies --bootstrap-server. This KIP applies the same convenience to the other client tools while retaining explicit connection options for all non-local use cases.
Public Interfaces
The broker endpoint option becomes optional for the included tools. Explicit connection options continue to be supported.
Priority | Connection source | Behavior |
|---|---|---|
1 |
| Use the supplied broker endpoint. |
2 |
| Use the supplied controller endpoint, where the tool supports it and |
3 | Existing connection properties | Use the configured endpoint, such as |
4 | No endpoint supplied | Use |
When both --bootstrap-server and --bootstrap-controller are supplied, --bootstrap-server takes precedence
Proposed Changes
Apply the priority above to the included tools. This KIP does not default --bootstrap-controller: tools that support both endpoint types use localhost:9092 only when neither endpoint is specified.
Included tools
Group | Tools | Default behavior | Example |
|---|---|---|---|
Broker or controller endpoint |
| Default to |
|
|
| Make |
|
Multiple producer property sources |
| Default only when neither its command-line nor property-based configuration supplies |
|
Legacy address-list option |
| Make its address-list |
|
Existing default |
| No code change; it already defaults to |
|
Excluded tools
The following tools do not connect to a running Kafka cluster through a client bootstrap endpoint and remain unchanged:
kafka-dump-log.shkafka-jmx.shkafka-metadata-shell.shkafka-server-start.shkafka-server-stop.shkafka-storage.sh
Deprecated tools are out of scope. Connect launchers, kafka-run-class.sh, and trogdor.sh are also out of scope because they obtain cluster connection settings through worker, application, or workload configuration.
Compatibility, Deprecation, and Migration Plan
Existing invocations continue to work unchanged.
Invocations without a broker endpoint attempt to connect to
localhost:9092.Remote clusters, TLS/SASL listeners, non-default ports, and controller endpoints continue to use explicit connection options or command configuration.
Quick-start documentation may omit
--bootstrap-server localhost:9092and state the local default once. Production, security, and remote-cluster examples retain explicit endpoint options.
Rejected Alternatives
Default
--bootstrap-controllertolocalhost:9093for tools that also support--bootstrap-server. This would change the normal local broker workflow and would be ambiguous for tools whose controller support applies only to selected operations. A future controller-only tool may definelocalhost:9093as its own default; no such tool is in scope here.Add a global environment variable or configuration file. This introduces a second connection-configuration mechanism; existing command-line options and properties files already provide portable non-local configuration.