[
https://issues.apache.org/jira/browse/HBASE-26158?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17402711#comment-17402711
]
Geoffrey Jacoby commented on HBASE-26158:
-----------------------------------------
I stand by my point that so long as HBase has a mini ZooKeeper cluster, it
should remain IA.Public so that downstream users don't have to wrestle with
reconciling dependencies or maintaining internal forks.
I don't think I've heard yet a practical example of something bad that occurs
if it remains IA.Public -- you seem to dislike it because of a theory of what
HBase "is" and "is not". Given that you don't want to get rid of or change the
class, what's the real-world harm in keeping the IA as is? I've tried to give
practical examples of bad things that will happen if it's no longer IA.Public.
Here's another example, from just last week. Tephra is a subproject of Phoenix
that does distributed transactions for both HBase and Phoenix. It was
originally an incubating Apache project that Phoenix later adopted. Tephra
chose to use Apache Twill's ZK minicluster for its tests. But Twill is in the
Attic now and its dependencies are old. Trying to use newer versions of Tephra
as dependencies with multiple legacy (4.x) Phoenix versions (which don't shade
their dependencies very well) is _really_ hard. If Tephra had chosen to use
HBase's ZK minicluster instead, this would be much easier.
As you say, HBase is trying to get rid of ZK dependencies, so it's totally
reasonable for HBase to deprecate its own MiniZookeeperCluster and adopt
another project's. Then downstream projects can use the same well-tested
solution that HBase uses; it's wouldn't be a lot of extra work for them. And if
HBase ever does deprecate ZK support entirely, as I think Kafka is trying to
do, of course any testing infrastructure around ZK would get deprecated too. No
objection to either!
But in the meantime, downstream developers should be able to use the same APIs
as HBase does to do the same sort of testing. Most tests are simple, but not
all, and it's the hard ones I worry about.
Happy to continue the conversation here or on the dev list to get other
opinions and perspectives if you'd like. I'd like to find consensus and avoid
using my first committer veto if I can. But so far I haven't heard any benefit
to HBase that outweighs the harm to downstream devs.
> MiniZooKeeperCluster should not be IA.Public
> --------------------------------------------
>
> Key: HBASE-26158
> URL: https://issues.apache.org/jira/browse/HBASE-26158
> Project: HBase
> Issue Type: Sub-task
> Components: API, test
> Reporter: Duo Zhang
> Priority: Major
>
> End users do not need to test HBase when zookeeper is broken. And if users
> want to start only a zookeeper cluster, they can just use curator-test, so I
> do not think we should expose this class as IA.Public.
--
This message was sent by Atlassian Jira
(v8.3.4#803005)