You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "Duo Zhang (Jira)" <ji...@apache.org> on 2021/04/22 07:14:00 UTC

[jira] [Resolved] (HBASE-25801) Move NamedQueuePayload to hbase-common

     [ https://issues.apache.org/jira/browse/HBASE-25801?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Duo Zhang resolved HBASE-25801.
-------------------------------
    Resolution: Won't Fix

Seems the interface is narrow enough.

{code}
  private void sendRegionPlansToRingBuffer(List<RegionPlan> plans, double currentCost,
      double initCost, String initFunctionTotalCosts, long step) {
    if (this.namedQueueRecorder != null) {
      List<String> regionPlans = new ArrayList<>();
      for (RegionPlan plan : plans) {
        regionPlans.add(
          "table: " + plan.getRegionInfo().getTable() + " , region: " + plan.getRegionName()
            + " , source: " + plan.getSource() + " , destination: " + plan.getDestination());
      }
      BalancerDecision balancerDecision =
        new BalancerDecision.Builder()
          .setInitTotalCost(initCost)
          .setInitialFunctionCosts(initFunctionTotalCosts)
          .setComputedTotalCost(currentCost)
          .setFinalFunctionCosts(totalCostsPerFunc())
          .setComputedSteps(step)
          .setRegionPlans(regionPlans).build();
      namedQueueRecorder.addRecord(new BalancerDecisionDetails(balancerDecision));
    }
  }
{code}

This is the only place where we use NamedQueueRecord in LoadBalancer, I think we could just introduce a sendRegionPlansToRingBuffer method in ClusterInfoProvider, and implement the actual code where we create BalancerDecision in MasterClusterInfoProvider, so we do not need to depend on NamedQueueRecord in hbase-balancer module.

Resolve as won't fix for now.

> Move NamedQueuePayload to hbase-common
> --------------------------------------
>
>                 Key: HBASE-25801
>                 URL: https://issues.apache.org/jira/browse/HBASE-25801
>             Project: HBase
>          Issue Type: Sub-task
>          Components: Operability
>            Reporter: Duo Zhang
>            Assignee: Duo Zhang
>            Priority: Major
>
> We use this class to record the balancer decision in LoadBalancer, so if we want to move LoadBalancer to hbae-balancer, we also need to move NamedQueueRecord related classes out of hbase-server. Since we use a system table to record, hbase-client will be a suitable place.
> ====== Update ======
> A we depend on disruptor for NamedQueueRecord, I do not think it is a good idea to introduce this dependency to our client library. So let's just move the minimum classes to hbase-client or hbase-common instead of the whole namedqueues implementation.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)