Skip to content

KAFKA-20939: Disable async dns resolution in streams and connect - #23364

Open
frankvicky wants to merge 1 commit into
apache:trunkfrom
frankvicky:trunk
Open

KAFKA-20939: Disable async dns resolution in streams and connect#23364
frankvicky wants to merge 1 commit into
apache:trunkfrom
frankvicky:trunk

Conversation

@frankvicky

@frankvicky frankvicky commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

KIP-909's asynchronous bootstrap DNS resolution mode (enabled by a
positive bootstrap.resolve.timeout.ms) surfaces failures as
BootstrapResolutionException from regular API calls on a permanently
broken client that must be discarded and rebuilt by the caller. Neither
Kafka Streams nor Kafka Connect is prepared to handle that recovery
contract for the clients they create internally, so a user enabling the
config would break both frameworks (see KAFKA-20939).

Since the config is marked as an evolving/experimental feature
(KAFKA-20969), disable it in both frameworks for the time being:

  • Streams: StreamsConfig forces the config to 0 for the main, restore
    and global consumers, the producer, and the admin client, logging a
    warning when a user-supplied value is overridden.
  • Connect: client config maps built by Worker (connector/task producers,
    consumers, admin clients, including per-connector overrides) and by the
    config/offset/status backing stores force the config to 0 via a new
    ConnectUtils helper; DistributedConfig forces the parsed value to 0 so
    the herder's own network client also stays in synchronous mode.

Reviewers: Chia-Ping Tsai chia7712@gmail.com, Ken Huang
s7133700@gmail.com

…nd Connect

KIP-909's asynchronous bootstrap DNS resolution mode (enabled by a
positive bootstrap.resolve.timeout.ms) surfaces failures as
BootstrapResolutionException from regular API calls on a permanently
broken client that must be discarded and rebuilt by the caller.
Neither Kafka Streams nor Kafka Connect is prepared to handle that
recovery contract for the clients they create internally, so a user
enabling the config would break both frameworks (see KAFKA-20939).

Since the config is marked as an evolving/experimental feature
(KAFKA-20969), disable it in both frameworks for the time being:

- Streams: StreamsConfig forces the config to 0 for the main, restore
  and global consumers, the producer, and the admin client, logging a
  warning when a user-supplied value is overridden.
- Connect: client config maps built by Worker (connector/task
  producers, consumers, admin clients, including per-connector
  overrides) and by the config/offset/status backing stores force the
  config to 0 via a new ConnectUtils helper; DistributedConfig forces
  the parsed value to 0 so the herder's own network client also stays
  in synchronous mode.
@github-actions github-actions Bot added triage PRs from the community streams connect labels Sep 4, 2026
@frankvicky frankvicky changed the title KAFKA-20939: disable async dns resolution in streams and connect KAFKA-20939: Disable async dns resolution in streams and connect Sep 4, 2026
CommonClientConfigs.warnDisablingExponentialBackoff(this);
warnIfConnectionsMaxIdleMsLowerThanRebalanceTimeoutMs();
return super.postProcessParsedConfig(parsedValues);
Map<String, Object> configUpdates = new HashMap<>(super.postProcessParsedConfig(parsedValues));

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm wondering whether we should block it for Connect at all. For instance, group.protocol is not blocked like bootstrap.resolve.timeout.ms here, even though the former could have a bigger impact on Connect.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IIUC, the group.protocol is stable now, and given it's not a major release, I would say we should keep the guard.

@m1a2st m1a2st left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you also update the Kafka website documentation?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

connect streams triage PRs from the community

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants