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.handler;
20
21 import java.io.IOException;
22 import java.util.List;
23
24 import org.apache.hadoop.hbase.classification.InterfaceAudience;
25 import org.apache.hadoop.hbase.TableName;
26 import org.apache.hadoop.hbase.HColumnDescriptor;
27 import org.apache.hadoop.hbase.HRegionInfo;
28 import org.apache.hadoop.hbase.HTableDescriptor;
29 import org.apache.hadoop.hbase.Server;
30 import org.apache.hadoop.hbase.executor.EventType;
31 import org.apache.hadoop.hbase.master.HMaster;
32 import org.apache.hadoop.hbase.master.MasterCoprocessorHost;
33 import org.apache.hadoop.hbase.master.MasterServices;
34
35
36
37
38 @InterfaceAudience.Private
39 public class TableModifyFamilyHandler extends TableEventHandler {
40 private final HColumnDescriptor familyDesc;
41
42 public TableModifyFamilyHandler(TableName tableName,
43 HColumnDescriptor familyDesc, Server server,
44 final MasterServices masterServices) {
45 super(EventType.C_M_MODIFY_FAMILY, tableName, server, masterServices);
46 this.familyDesc = familyDesc;
47 }
48
49 @Override
50 protected void prepareWithTableLock() throws IOException {
51 super.prepareWithTableLock();
52 HTableDescriptor htd = getTableDescriptor();
53 hasColumnFamily(htd, familyDesc.getName());
54 }
55
56 @Override
57 protected void handleTableOperation(List<HRegionInfo> regions) throws IOException {
58 MasterCoprocessorHost cpHost = ((HMaster) this.server)
59 .getMasterCoprocessorHost();
60 if (cpHost != null) {
61 cpHost.preModifyColumnHandler(this.tableName, this.familyDesc);
62 }
63
64 this.masterServices.getMasterFileSystem().modifyColumn(tableName, familyDesc);
65 if (cpHost != null) {
66 cpHost.postModifyColumnHandler(this.tableName, this.familyDesc);
67 }
68 }
69
70 @Override
71 public String toString() {
72 String name = "UnknownServerName";
73 if(server != null && server.getServerName() != null) {
74 name = server.getServerName().toString();
75 }
76 String family = "UnknownFamily";
77 if(familyDesc != null) {
78 family = familyDesc.getNameAsString();
79 }
80 return getClass().getSimpleName() + "-" + name + "-" + getSeqid() +
81 "-" + tableName + "-" + family;
82 }
83
84 }