[
https://issues.apache.org/jira/browse/ACCUMULO-4549?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15819263#comment-15819263
]
Christopher Tubbs commented on ACCUMULO-4549:
---------------------------------------------
I briefly looked into this. It's actually kinda frustrating, because the
{{ServerConfigurationFactory}} really shouldn't be the base object used here.
As an interim solution, we can deprecate the old method with
{{ServerConfiguration}} but it really should be injecting the {{Master}}
context, or a dedicated configuration object available for balancers. If we're
going to treat the {{TabletBalancer}} as API, we're going to need to ensure we
treat any method parameter types as public API, too, and that's way out of
scope for {{ServerConfigurationFactory}}.
It looks like the main reason this is even needed in the {{TabletBalancer}} is
to construct a context, which carries the RPC credentials, so the balancer can
do thrift calls to get online tablets lists. It seems to me that this isn't
really necessary, because the {{Master}} should have that information. However,
it's also used to get {{TableConfiguration}} instances in some subclasses.
In short, we can deprecate one of them, but this is a really terrible API, with
tons of scope creep on these server configuration objects, which will have to
be improved significantly before promoting the balancer to "public API".
> Remove duplicate init functions in TabletBalancer
> -------------------------------------------------
>
> Key: ACCUMULO-4549
> URL: https://issues.apache.org/jira/browse/ACCUMULO-4549
> Project: Accumulo
> Issue Type: Improvement
> Reporter: Adam J Shook
> Priority: Minor
> Fix For: 2.0.0
>
>
> There are two {{init}} functions with similar signatures in the
> {{TabletLoadBalancer}} class that could result in an end-user overriding the
> wrong function and their object may never be initialized.
> {{Master}} (1) calls the {{TabletBalancer#init(ServerConfigurationFactory)}}
> which is not what the regex load balancer is overriding (2), and the
> {{TabletBalancer}} doesn't call the other init function (3).
> Come up with a plan for compatibility and remove the duplicate functions.
> (1)
> https://github.com/apache/accumulo/blob/1.7/server/master/src/main/java/org/apache/accumulo/master/Master.java#L589
> (2)
> https://github.com/apache/accumulo/blob/1.7/server/base/src/main/java/org/apache/accumulo/server/master/balancer/HostRegexTableLoadBalancer.java#L257
> (3)
> https://github.com/apache/accumulo/blob/1.7/server/base/src/main/java/org/apache/accumulo/server/master/balancer/TabletBalancer.java#L57
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)