Skip to content

Conversation

kezhuw
Copy link
Member

@kezhuw kezhuw commented Aug 20, 2025

ZKConfig is client accessible, it should avoid accessing server side QuorumPeerConfig.

Changes:

  1. Introduce org.apache.zookeeper.common.ConfigException for ZKConfig(String configPath).
  2. Make QuorumPeerConfig.ConfigException a subclass of above.
  3. Throw QuorumPeerConfig.ConfigException if possible.

Given above changes, this pr maintain abi compatibility with old releases.

Breaking change: ZKConfig(String configPath) throws org.apache.zookeeper.common.ConfigException now but not QuorumPeerConfig.ConfigException, so developers have to fix it to compile.

This is a small step towards ZOOKEEPER-233.

Refs: ZOOKEEPER-233, ZOOKEEPER-835, and ZOOKEEPER-842.

@kezhuw
Copy link
Member Author

kezhuw commented Aug 20, 2025

The breaking change is source code level so it won't break runtime code. We could also make org.apache.zookeeper.common.ConfigException as an unchecked exception, but that could break runtime expectation as it could be catched as RuntimeException. I would prefer to break in source code leve but not runtime.

Give this pr and #2305, I could split zookeeper-client from zookeeper-server by moving classes mostly, though, the package hierarcy does not look good.

@kezhuw kezhuw force-pushed the ZOOKEEPER-4966-decouple-ZKConfig-from-QuorumPeerConfig branch from 868b004 to 5f4ae6f Compare August 20, 2025 16:36
@kezhuw kezhuw force-pushed the ZOOKEEPER-4966-decouple-ZKConfig-from-QuorumPeerConfig branch from 5f4ae6f to 5e405ab Compare August 20, 2025 19:21
@kezhuw kezhuw force-pushed the ZOOKEEPER-4966-decouple-ZKConfig-from-QuorumPeerConfig branch from 5e405ab to ba49a73 Compare August 26, 2025 14:18
…ption`

`ZKConfig` is client accessible, it should avoid accessing server side
`QuorumPeerConfig`.

Changes:
1. Change method and constructor signatures of `ZKConfig` and
   `ZKClientConfig` to throw `o.a.zookeeper.common.ConfigException`.
3. Throw `QuorumPeerConfig.ConfigException` if it is in classpath.

Given above changes, this pr maintain abi compatibility with old
releases.

**Breaking change**: methods and constructors of `ZKConfig` and
`ZKClientConfig` throw `org.apache.zookeeper.common.ConfigException`
now but not `QuorumPeerConfig.ConfigException`, so developers have to
fix it to compile.

This is a small step towards ZOOKEEPER-233.

Refs: ZOOKEEPER-233, ZOOKEEPER-835, ZOOKEEPER-842, ZOOKEEPER-4970,
ZOOKEEPER-4966.
@kezhuw kezhuw force-pushed the ZOOKEEPER-4966-decouple-ZKConfig-from-QuorumPeerConfig branch from ba49a73 to c247522 Compare August 30, 2025 16:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant