diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/ReplicationEndpoint.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/ReplicationEndpoint.java index ffdba34713..8e1daca47d 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/ReplicationEndpoint.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/replication/ReplicationEndpoint.java @@ -35,20 +35,25 @@ import org.apache.hadoop.hbase.replication.regionserver.MetricsSource; /** * ReplicationEndpoint is a plugin which implements replication - * to other HBase clusters, or other systems. ReplicationEndpoint implementation - * can be specified at the peer creation time by specifying it - * in the {@link ReplicationPeerConfig}. A ReplicationEndpoint is run in a thread - * in each region server in the same process. + * to other HBase clusters, or other systems. The ReplicationEndpoint implementation + * is specified at peer creation time by specifying a {@link ReplicationPeerConfig}. + * A ReplicationEndpoint is run in a thread in each region server inside the RegionServer + * process. *

* ReplicationEndpoint is closely tied to ReplicationSource in a producer-consumer * relation. ReplicationSource is an HBase-private class which tails the logs and manages * the queue of logs plus management and persistence of all the state for replication. * ReplicationEndpoint on the other hand is responsible for doing the actual shipping * and persisting of the WAL entries in the other cluster. + * + *

Filtering

+ * ReplicationEndpoint implementations can filter out WALEdits on the sending side. + * Implement {@link WALEntryFilter}(s) and return them via {@link #getWALEntryfilter()}}. + * For examples see {@link BaseReplicationEndpoint}'s {@link #getWALEntryfilter()}}. */ @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.REPLICATION) public interface ReplicationEndpoint extends ReplicationPeerConfigListener { - // TODO: This class needs doc. Has a Context and a ReplicationContext. Then has #start, #stop. + // TODO: This class needs doc. Has a Context and a ReplicateContext. Then has #start, #stop. // How they relate? Do we #start before #init(Context)? We fail fast if you don't? @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.REPLICATION) @@ -142,6 +147,7 @@ public interface ReplicationEndpoint extends ReplicationPeerConfigListener { List entries; int size; String walGroupId; + @InterfaceAudience.Private public ReplicateContext() { } @@ -150,14 +156,17 @@ public interface ReplicationEndpoint extends ReplicationPeerConfigListener { this.entries = entries; return this; } + public ReplicateContext setSize(int size) { this.size = size; return this; } + public ReplicateContext setWalGroupId(String walGroupId) { this.walGroupId = walGroupId; return this; } + public List getEntries() { return entries; } @@ -171,7 +180,7 @@ public interface ReplicationEndpoint extends ReplicationPeerConfigListener { /** * Replicate the given set of entries (in the context) to the other cluster. - * Can block until all the given entries are replicated. Upon this method is returned, + * Can block until all the given entries are replicated. Upon return, * all entries that were passed in the context are assumed to be persisted in the * target cluster. * @param replicateContext a context where WAL entries and other