1   
2   
3   
4   
5   
6   
7   
8   
9   
10  
11  
12  
13  
14  
15  
16  
17  
18  
19  package org.apache.hadoop.hbase.master.normalizer;
20  
21  import org.apache.commons.logging.Log;
22  import org.apache.commons.logging.LogFactory;
23  import org.apache.hadoop.hbase.HRegionInfo;
24  import org.apache.hadoop.hbase.classification.InterfaceAudience;
25  import org.apache.hadoop.hbase.client.Admin;
26  
27  import java.io.IOException;
28  
29  
30  
31  
32  @InterfaceAudience.Private
33  public class MergeNormalizationPlan implements NormalizationPlan {
34    private static final Log LOG = LogFactory.getLog(MergeNormalizationPlan.class.getName());
35  
36    private final HRegionInfo firstRegion;
37    private final HRegionInfo secondRegion;
38  
39    public MergeNormalizationPlan(HRegionInfo firstRegion, HRegionInfo secondRegion) {
40      this.firstRegion = firstRegion;
41      this.secondRegion = secondRegion;
42    }
43  
44    HRegionInfo getFirstRegion() {
45      return firstRegion;
46    }
47  
48    HRegionInfo getSecondRegion() {
49      return secondRegion;
50    }
51  
52    @Override
53    public String toString() {
54      return "MergeNormalizationPlan{" +
55        "firstRegion=" + firstRegion +
56        ", secondRegion=" + secondRegion +
57        '}';
58    }
59  
60    
61  
62  
63    @Override
64    public void execute(Admin admin) {
65      LOG.info("Executing merging normalization plan: " + this);
66      try {
67        admin.mergeRegions(firstRegion.getEncodedNameAsBytes(),
68          secondRegion.getEncodedNameAsBytes(), true);
69      } catch (IOException ex) {
70        LOG.error("Error during region merge: ", ex);
71      }
72    }
73  }