keith-turner opened a new issue, #5667:
URL: https://github.com/apache/accumulo/issues/5667

   **Is your feature request related to a problem? Please describe.**
   
   When assignments are requested from a balancer plugin calling 
TabletBalancer.getAssignments() sometimes the plugin needs information about 
tablets other than the ones for which assignments are being requested.  For 
example if the balancer is requested to assign tablet with end row "xyz123", 
the balancer may want to know were tablets before and after tablet "xyz123" are 
currently assigned when making its decision.  The only way this balancer can 
obtain this information is by calling 
`BalancerEnvironment.listTabletLocations(TableId)` which will get the locations 
of all tablets in a table.  If the balancer only wanted to know the location of 
two other tablets to make its assignment decision, then this can be very 
inefficient.
   
   **Describe the solution you'd like**
   
   In main there is a new API `Stream<TabletInformation> 
getTabletInformation(final String tableName, final Range range)` that could 
support this.  However there is no way for the balancer to plugin to access 
this functionality. Would be nice to somehow have similar functionality made 
available to the balancer plugin.  Also the balancer may need to request 
multiple ranges (like if its asked to assign 10 tablets, it may want to gather 
information about tablets within 10 ranges), so it would be nice to support 
something like `Stream<TabletInformation> getTabletInformation(final String 
tableName, final List<Range> ranges)` to minimize the number of RPCs required 
to the metadata table to gather the needed information.
   
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to