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