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.classification.InterfaceAudience;
26 import org.apache.hadoop.conf.Configuration;
27 import org.apache.hadoop.fs.FileSystem;
28 import org.apache.hadoop.hbase.HBaseInterfaceAudience;
29 import org.apache.hadoop.hbase.regionserver.wal.HLog;
30 import org.apache.hadoop.hbase.replication.regionserver.MetricsSource;
31
32 import com.google.common.util.concurrent.Service;
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.REPLICATION)
48 public interface ReplicationEndpoint extends Service, ReplicationPeerConfigListener {
49
50 @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.REPLICATION)
51 class Context {
52 private final Configuration conf;
53 private final FileSystem fs;
54 private final ReplicationPeer replicationPeer;
55 private final String peerId;
56 private final UUID clusterId;
57 private final MetricsSource metrics;
58
59 @InterfaceAudience.Private
60 public Context(
61 final Configuration conf,
62 final FileSystem fs,
63 final String peerId,
64 final UUID clusterId,
65 final ReplicationPeer replicationPeer,
66 final MetricsSource metrics) {
67 this.conf = conf;
68 this.fs = fs;
69 this.clusterId = clusterId;
70 this.peerId = peerId;
71 this.replicationPeer = replicationPeer;
72 this.metrics = metrics;
73 }
74 public Configuration getConfiguration() {
75 return conf;
76 }
77 public FileSystem getFilesystem() {
78 return fs;
79 }
80 public UUID getClusterId() {
81 return clusterId;
82 }
83 public String getPeerId() {
84 return peerId;
85 }
86 public ReplicationPeerConfig getPeerConfig() {
87 return replicationPeer.getPeerConfig();
88 }
89 public ReplicationPeer getReplicationPeer() {
90 return replicationPeer;
91 }
92 public MetricsSource getMetrics() {
93 return metrics;
94 }
95 }
96
97
98
99
100
101
102 void init(Context context) throws IOException;
103
104
105
106 boolean canReplicateToSameCluster();
107
108
109
110
111
112
113
114 UUID getPeerUUID();
115
116
117
118
119
120
121 WALEntryFilter getWALEntryfilter();
122
123
124
125
126 @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.REPLICATION)
127 static class ReplicateContext {
128 List<HLog.Entry> entries;
129 int size;
130 @InterfaceAudience.Private
131 public ReplicateContext() {
132 }
133
134 public ReplicateContext setEntries(List<HLog.Entry> entries) {
135 this.entries = entries;
136 return this;
137 }
138 public ReplicateContext setSize(int size) {
139 this.size = size;
140 return this;
141 }
142 public List<HLog.Entry> getEntries() {
143 return entries;
144 }
145 public int getSize() {
146 return size;
147 }
148 }
149
150
151
152
153
154
155
156
157
158 boolean replicate(ReplicateContext replicateContext);
159
160 }