Details
Description
The HBase shell allows a user to create a replication peer using the add_peer method, which can take a peer id and a Ruby hash. It creates a ReplicationPeerConfig and passes it through to the Java ReplicationAdmin#addPeer.
The Ruby code makes an assumption that the Java API doesn't: that CLUSTER_KEY and ENDPOINT_CLASSNAME are mutually exclusive. If both are specified, it throws an error. If only ENDPOINT_CLASSNAME is set, the add_peer logic derives a local dummy cluster key based on the local cluster's configuration.
CLUSTER_KEY shouldn't be required when an ENDPOINT_CLASSNAME is specified, because a custom endpoint might not need it. The dummy default logic is fine.
But if an endpoint does require a remote cluster key, it shouldn't be forbidden to provide one, especially since the Java API permits it, and even the custom replication endpoint Java tests rely on this. (See TestReplicationEndpoint#testCustomReplicationEndpoint)