accumulo-notifications mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Christopher Tubbs (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (ACCUMULO-4549) Remove duplicate init functions in TabletBalancer
Date Wed, 11 Jan 2017 21:40:16 GMT

    [ 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)

Mime
View raw message