You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@hbase.apache.org by "Wellington Chevreuil (Jira)" <ji...@apache.org> on 2020/01/13 11:48:00 UTC
[jira] [Created] (HBASE-23683) Make
HBaseInterClusterReplicationEndpoint more extensible
Wellington Chevreuil created HBASE-23683:
--------------------------------------------
Summary: Make HBaseInterClusterReplicationEndpoint more extensible
Key: HBASE-23683
URL: https://issues.apache.org/jira/browse/HBASE-23683
Project: HBase
Issue Type: Improvement
Reporter: Wellington Chevreuil
Assignee: Wellington Chevreuil
*HBaseInterClusterReplicationEndpoint* currently creates the cluster connection and sink manager instances inside its _init_ method and assigns those to private class variables. Then any potential custom extension of *HBaseInterClusterReplicationEndpoint* that requires custom implementations of connection and/or sink manager would need to resort to _java reflection_ for effectively replace those instances, such as below:
{noformat}
...
ClusterConnection conn = (ClusterConnection)ConnectionFactory.
createConnection(context.getConfiguration(), User.create(replicationUgi));
ReplicationSinkManager sinkManager = new ReplicationSinkManager(conn, ctx.getPeerId(),
this, context.getConfiguration());
try {
Field field = this.getClass().getSuperclass().getDeclaredField("conn");
field.setAccessible(true);
field.set(this, conn);
field = this.getClass().getSuperclass().getDeclaredField("replicationSinkMgr");
field.setAccessible(true);
field.set(this, sinkManager);
} catch (Exception e) {
throw new IOException(e);
}
...
{noformat}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)