accumulo-notifications mailing list archives

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


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:
>             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)
> (2)
> (3)

This message was sent by Atlassian JIRA

View raw message