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.HRegionInfo;
25 import org.apache.hadoop.hbase.HTableDescriptor;
26 import org.apache.hadoop.hbase.Server;
27 import org.apache.hadoop.hbase.TableName;
28 import org.apache.hadoop.hbase.classification.InterfaceAudience;
29 import org.apache.hadoop.hbase.executor.EventType;
30 import org.apache.hadoop.hbase.master.HMaster;
31 import org.apache.hadoop.hbase.master.MasterCoprocessorHost;
32 import org.apache.hadoop.hbase.master.MasterFileSystem;
33 import org.apache.hadoop.hbase.master.MasterServices;
34 import org.apache.hadoop.hbase.util.Bytes;
35
36
37
38
39 @InterfaceAudience.Private
40 public class TableDeleteFamilyHandler extends TableEventHandler {
41
42 private byte [] familyName;
43
44 public TableDeleteFamilyHandler(TableName tableName, byte [] familyName,
45 Server server, final MasterServices masterServices) throws IOException {
46 super(EventType.C_M_DELETE_FAMILY, tableName, server, masterServices);
47 this.familyName = familyName;
48 }
49
50 @Override
51 protected void prepareWithTableLock() throws IOException {
52 super.prepareWithTableLock();
53 HTableDescriptor htd = getTableDescriptor();
54 this.familyName = hasColumnFamily(htd, familyName);
55 }
56
57 @Override
58 protected void handleTableOperation(List<HRegionInfo> hris) throws IOException {
59 MasterCoprocessorHost cpHost = ((HMaster) this.server)
60 .getMasterCoprocessorHost();
61 if (cpHost != null) {
62 cpHost.preDeleteColumnHandler(this.tableName, this.familyName);
63 }
64
65 this.masterServices.getMasterFileSystem().deleteColumn(tableName, familyName);
66
67 MasterFileSystem mfs = this.masterServices.getMasterFileSystem();
68 for (HRegionInfo hri : hris) {
69
70 mfs.deleteFamilyFromFS(hri, familyName);
71 }
72 if (cpHost != null) {
73 cpHost.postDeleteColumnHandler(this.tableName, this.familyName);
74 }
75 }
76
77 @Override
78 public String toString() {
79 String name = "UnknownServerName";
80 if(server != null && server.getServerName() != null) {
81 name = server.getServerName().toString();
82 }
83 String family = "UnknownFamily";
84 if(familyName != null) {
85 family = Bytes.toString(familyName);
86 }
87 return getClass().getSimpleName() + "-" + name + "-" + getSeqid() +
88 "-" + tableName + "-" + family;
89 }
90 }