DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
...
Current state: Under Discussion
Discussion thread: None
JIRA: Jira
Please keep the discussion on the mailing list rather than commenting on the wiki (wiki discussions get unwieldy fast).
...
Motivation
Since
...
Apache
...
Kafka
...
4.0,
...
ZooKeeper
...
has
...
been
...
removed
...
and
...
KRaft
...
is
...
the
...
only
...
supported
...
mode
...
(
...
...
).
...
In
...
KRaft
...
mode,
...
a
...
single
...
process
...
can
...
serve
...
as
...
a
...
broker,
...
a
...
controller,
...
or
...
both.
...
...
therefore
...
introduced
...
node.id
...
to
...
replace
...
broker.id
...
as
...
the
...
canonical
...
node
...
identifier.
However,
...
the
...
legacy
...
broker.id
...
configuration
...
still
...
exists
...
and
...
is
...
treated
...
as
...
a
...
synonym
...
of
...
node.id
...
.
...
If
...
only
...
one
...
is
...
set,
...
the
...
other
...
is
...
automatically
...
populated
...
with
...
the
...
same
...
value.
...
If
...
both
...
are
...
explicitly
...
set,
...
they
...
must
...
be
...
equal;
...
otherwise,
...
a
...
ConfigException
...
is
...
thrown.
Having
...
two
...
configuration
...
properties
...
that
...
must
...
always
...
hold
...
the
...
same
...
value
...
causes
...
unnecessary
...
confusion.
...
The
...
documentation
...
describes
...
node.id
...
as
...
required
...
in
...
KRaft
...
mode,
...
yet
...
the
...
synonym
...
mechanism
...
allows
...
users
...
to
...
omit
...
node.id
...
entirely
...
if
...
broker.id
...
is
...
set,
...
contradicting
...
the
...
documented
...
requirement.
Related
...
ZooKeeper-era
...
configurations
...
such
...
as
...
broker.id.generation.enable
...
and
...
reserved.broker.max.id
...
were
...
already
...
removed
...
in
...
Kafka
...
4.0,
...
making
...
broker.id
...
the
...
only
...
remaining
...
legacy
...
identifier
...
config.
...
We
...
should
...
deprecate
...
it
...
to
...
simplify
...
the
...
configuration
...
surface
...
and
...
guide
...
all
...
users
...
toward
...
the
...
single,
...
canonical
...
configuration:
...
node.id
...
.
...
Public
...
Interfaces
This
...
KIP
...
proposes
...
to
...
deprecate
...
the
...
broker.id
...
server
...
configuration
...
property
...
in
...
Apache
...
Kafka
...
4.3
...
and
...
remove
...
it
...
in
...
Apache
...
Kafka
...
5.0.
...
Config |
|---|
...
Type |
|---|
...
Default |
|---|
...
4.3 |
|---|
...
5.0 |
|---|
...
...
|
...
INT | -1 |
...
Deprecated | Removed | |
|
...
INT | (required) |
...
No |
...
change |
...
No |
...
change |
...
Note:
...
The
...
documentation
...
describes
...
node.id
...
as
...
required
...
in
...
KRaft
...
mode,
...
but
...
it
...
can
...
currently
...
be
...
omitted
...
if
...
broker.id
...
is
...
set,
...
because
...
the
...
synonym
...
mechanism
...
automatically
...
populates
...
node.id
...
from
...
broker.id
...
.
...
After
...
the
...
removal
...
in
...
5.0,
...
node.id
...
must
...
be
...
explicitly
...
set.
No
...
changes
...
to
...
public
...
APIs,
...
network
...
protocols,
...
metrics,
...
or
...
command-line
...
tools.
...
Proposed
...
Changes
...
Phase
...
1:
...
Deprecation
...
(Apache
...
Kafka
...
4.3)
...
- Log
...
- deprecation
...
- warning
...
- :
...
- When
...
broker.id
...
- is
...
- explicitly
...
- set
...
- in
...
- the
...
- server
...
- configuration,
...
- log
...
- a
...
- WARN-level
...
- message
...
- at
...
- startup:
...
Code Block
...
The 'broker.id' configuration is deprecated and will be removed in Apache Kafka 5.0. Please use 'node.id' instead.
...
- Preserve
...
- backward
...
- compatibility
...
- :
...
- The
...
- existing
...
- synonym
...
- mechanism
...
- will
...
- continue
...
- to
...
- function.
...
- Users
...
- who
...
- only
...
- set
...
broker.id
...
- will
...
- still
...
- have
...
- it
...
- automatically
...
- copied
...
- to
...
node.id
...
- .
...
- The
...
- validation
...
- requiring
...
- both
...
- to
...
- be
...
- equal
...
- (if
...
- both
...
- are
...
- explicitly
...
- set)
...
- also
...
- remains
...
- unchanged.
...
Phase
...
2:
...
Removal
...
(Apache
...
Kafka
...
5.0)
...
- Remove
...
broker.id
...
- configuration
...
- :
...
- The
...
BROKER_ID_CONFIG
...
- will
...
- be
...
- removed
...
- from
...
ServerConfigs
...
- .
...
- Setting
...
- it
...
- will
...
- result
...
- in
...
- an
...
- unknown
...
- configuration
...
- warning.
...
- Remove
...
- synonym
...
- logic
...
- :
...
- Remove
...
- the
...
broker.id
...
- /
...
node.id
...
- synonym
...
- handling
...
- from
...
AbstractKafkaConfig.populateSynonyms()
...
- .
...
- Retain
...
- internal
...
brokerId()
...
- accessor
...
- :
...
- The
...
brokerId()
...
- method
...
- will
...
- continue
...
- to
...
- exist
...
- for
...
- internal
...
- use,
...
- delegating
...
- to
...
nodeId()
...
- .
...
Behavior
...
Matrix
The
...
following
...
table
...
summarizes
...
the
...
expected
...
behavior
...
for
...
each
...
configuration
...
scenario
...
across
...
version
...
ranges:
...
Configuration |
|---|
...
4.0 |
|---|
...
~ |
|---|
...
4.2 |
|---|
...
(Current) |
|---|
...
4.3 |
|---|
...
~ |
|---|
...
4.x |
|---|
...
(Deprecated) |
|---|
...
5.0 |
|---|
...
(Removed) |
|---|
...
...
Only |
...
|
...
set |
...
Valid |
...
Valid |
...
Valid |
...
...
Only |
...
|
...
set |
...
Valid; |
...
|
...
is |
...
auto-populated |
...
from |
...
|
...
Valid |
...
+ |
...
is |
...
auto-populated |
...
from |
...
|
...
|
...
is |
...
required |
...
...
Both |
...
set, |
...
same |
...
value |
...
Valid |
...
Valid |
...
+ | Valid; |
...
is |
...
ignored |
...
with |
...
unknown |
...
config |
...
warning |
...
...
Both |
...
set, |
...
different |
...
values |
|
...
must |
...
equal |
...
|
...
|
...
must |
...
equal |
...
|
...
Valid; |
...
|
...
is |
...
ignored |
...
with |
...
unknown |
...
config |
...
warning |
...
...
Neither |
...
set |
...
|
...
: |
...
|
...
is |
...
required |
|
...
is |
...
required |
...
|
...
: |
...
|
...
is |
...
required |
...
...
Compatibility,
...
Deprecation,
...
and
...
Migration
...
Plan
...
Migration
...
Steps
Users
...
should
...
replace
...
broker.id
...
with
...
node.id
...
in
...
their
...
server
...
configuration.
...
If
...
both
...
are
...
configured,
...
simply
...
remove
...
broker.id
...
.
...
Test
...
Plan
...
Phase
...
1:
...
Deprecation
...
(Apache
...
Kafka
...
4.3)
Unit
...
tests
...
to
...
verify:
...
- A
...
- deprecation
...
- warning
...
- is
...
- logged
...
- when
...
broker.id
...
- is
...
- explicitly
...
- set
...
- (with
...
- or
...
- without
...
node.id
...
- ).
...
- Backward
...
- compatibility:
...
- setting
...
- only
...
broker.id
...
- still
...
- works
...
- (existing
...
- tests
...
- in
...
KafkaConfigTest
...
- already
...
- create
...
- configs
...
- with
...
- only
...
broker.id
...
- set).
...
Phase
...
2:
...
Removal
...
(Apache
...
Kafka
...
5.0)
Unit
...
tests
...
to
...
verify:
...
broker.id
...
- is
...
- no
...
- longer
...
- recognized
...
- and
...
- is
...
- ignored
...
- with
...
- an
...
- unknown
...
- config
...
- warning.
...
- Setting
...
- only
...
broker.id
...
- without
...
node.id
...
- results
...
- in
...
- a
...
ConfigException
...
- .
...
Rejected
...
Alternatives
...
None.
...