1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.hadoop.hbase.replication;
20
21 import java.io.IOException;
22 import java.util.List;
23 import java.util.UUID;
24
25 import org.apache.hadoop.hbase.Abortable;
26 import org.apache.hadoop.hbase.classification.InterfaceAudience;
27 import org.apache.hadoop.conf.Configuration;
28 import org.apache.hadoop.fs.FileSystem;
29 import org.apache.hadoop.hbase.HBaseInterfaceAudience;
30 import org.apache.hadoop.hbase.TableDescriptors;
31 import org.apache.hadoop.hbase.wal.WAL.Entry;
32 import org.apache.hadoop.hbase.replication.regionserver.MetricsSource;
33
34 import com.google.common.util.concurrent.Service;
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.REPLICATION)
50 public interface ReplicationEndpoint extends Service {
51
52 @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.REPLICATION)
53 class Context {
54 private final Configuration conf;
55 private final FileSystem fs;
56 private final TableDescriptors tableDescriptors;
57 private final ReplicationPeerConfig peerConfig;
58 private final ReplicationPeer replicationPeer;
59 private final String peerId;
60 private final UUID clusterId;
61 private final MetricsSource metrics;
62 private final Abortable abortable;
63
64 @InterfaceAudience.Private
65 public Context(
66 final Configuration conf,
67 final FileSystem fs,
68 final ReplicationPeerConfig peerConfig,
69 final String peerId,
70 final UUID clusterId,
71 final ReplicationPeer replicationPeer,
72 final MetricsSource metrics,
73 final TableDescriptors tableDescriptors,
74 final Abortable abortable) {
75 this.peerConfig = peerConfig;
76 this.conf = conf;
77 this.fs = fs;
78 this.clusterId = clusterId;
79 this.peerId = peerId;
80 this.replicationPeer = replicationPeer;
81 this.metrics = metrics;
82 this.tableDescriptors = tableDescriptors;
83 this.abortable = abortable;
84 }
85 public Configuration getConfiguration() {
86 return conf;
87 }
88 public FileSystem getFilesystem() {
89 return fs;
90 }
91 public UUID getClusterId() {
92 return clusterId;
93 }
94 public String getPeerId() {
95 return peerId;
96 }
97 public ReplicationPeerConfig getPeerConfig() {
98 return peerConfig;
99 }
100 public ReplicationPeer getReplicationPeer() {
101 return replicationPeer;
102 }
103 public MetricsSource getMetrics() {
104 return metrics;
105 }
106 public TableDescriptors getTableDescriptors() {
107 return tableDescriptors;
108 }
109 public Abortable getAbortable() { return abortable; }
110 }
111
112
113
114
115
116
117 void init(Context context) throws IOException;
118
119
120
121 boolean canReplicateToSameCluster();
122
123
124
125
126
127
128
129 UUID getPeerUUID();
130
131
132
133
134
135
136 WALEntryFilter getWALEntryfilter();
137
138
139
140
141 @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.REPLICATION)
142 static class ReplicateContext {
143 List<Entry> entries;
144 int size;
145 String walGroupId;
146 @InterfaceAudience.Private
147 public ReplicateContext() {
148 }
149
150 public ReplicateContext setEntries(List<Entry> entries) {
151 this.entries = entries;
152 return this;
153 }
154 public ReplicateContext setSize(int size) {
155 this.size = size;
156 return this;
157 }
158 public ReplicateContext setWalGroupId(String walGroupId) {
159 this.walGroupId = walGroupId;
160 return this;
161 }
162 public List<Entry> getEntries() {
163 return entries;
164 }
165 public int getSize() {
166 return size;
167 }
168 public String getWalGroupId(){
169 return walGroupId;
170 }
171 }
172
173
174
175
176
177
178
179
180
181 boolean replicate(ReplicateContext replicateContext);
182
183 }