From af8a80d9da1f8053dfa4118e8ac4b4a272d4a8a4 Mon Sep 17 00:00:00 2001 From: Guanghao Zhang Date: Mon, 25 Dec 2017 14:29:39 +0800 Subject: [PATCH] HBASE-19621 Revisit the methods in ReplicationPeerConfigBuilder --- .../client/replication/ReplicationPeerConfigUtil.java | 8 ++------ .../hadoop/hbase/replication/ReplicationPeerConfig.java | 10 +++++----- .../hbase/replication/ReplicationPeerConfigBuilder.java | 14 ++++++++++++-- .../hadoop/hbase/replication/ReplicationPeersZKImpl.java | 12 +++--------- 4 files changed, 22 insertions(+), 22 deletions(-) diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/replication/ReplicationPeerConfigUtil.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/replication/ReplicationPeerConfigUtil.java index a50d48f..800b0b4 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/replication/ReplicationPeerConfigUtil.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/replication/ReplicationPeerConfigUtil.java @@ -277,17 +277,13 @@ public final class ReplicationPeerConfigUtil { builder.setReplicationEndpointImpl(peer.getReplicationEndpointImpl()); } - Map peerData = new TreeMap<>(Bytes.BYTES_COMPARATOR); for (HBaseProtos.BytesBytesPair pair : peer.getDataList()) { - peerData.put(pair.getFirst().toByteArray(), pair.getSecond().toByteArray()); + builder.addPeerData(pair.getFirst().toByteArray(), pair.getSecond().toByteArray()); } - builder.setPeerData(peerData); - Map configuration = new HashMap<>(); for (HBaseProtos.NameStringPair pair : peer.getConfigurationList()) { - configuration.put(pair.getName(), pair.getValue()); + builder.addConfiguration(pair.getName(), pair.getValue()); } - builder.setConfiguration(configuration); Map> tableCFsMap = convert2Map( peer.getTableCfsList().toArray(new ReplicationProtos.TableCF[peer.getTableCfsCount()])); diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/replication/ReplicationPeerConfig.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/replication/ReplicationPeerConfig.java index 8f6b938..2683e38 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/replication/ReplicationPeerConfig.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/replication/ReplicationPeerConfig.java @@ -219,7 +219,7 @@ public class ReplicationPeerConfig { ReplicationPeerConfigBuilderImpl builder = new ReplicationPeerConfigBuilderImpl(); builder.setClusterKey(peerConfig.getClusterKey()) .setReplicationEndpointImpl(peerConfig.getReplicationEndpointImpl()) - .setPeerData(peerConfig.getPeerData()).setConfiguration(peerConfig.getConfiguration()) + .addAllPeerData(peerConfig.getPeerData()).addAllConfiguration(peerConfig.getConfiguration()) .setTableCFsMap(peerConfig.getTableCFsMap()).setNamespaces(peerConfig.getNamespaces()) .setReplicateAllUserTables(peerConfig.replicateAllUserTables()) .setExcludeTableCFsMap(peerConfig.getExcludeTableCFsMap()) @@ -264,14 +264,14 @@ public class ReplicationPeerConfig { } @Override - public ReplicationPeerConfigBuilder setPeerData(Map peerData) { - this.peerData = peerData; + public ReplicationPeerConfigBuilder addConfiguration(String key, String value) { + this.configuration.put(key, value); return this; } @Override - public ReplicationPeerConfigBuilder setConfiguration(Map configuration) { - this.configuration = configuration; + public ReplicationPeerConfigBuilder addPeerData(byte[] key, byte[] value) { + this.peerData.put(key, value); return this; } diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/replication/ReplicationPeerConfigBuilder.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/replication/ReplicationPeerConfigBuilder.java index b642acf..1a53983 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/replication/ReplicationPeerConfigBuilder.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/replication/ReplicationPeerConfigBuilder.java @@ -43,9 +43,19 @@ public interface ReplicationPeerConfigBuilder { */ ReplicationPeerConfigBuilder setReplicationEndpointImpl(String replicationEndpointImpl); - ReplicationPeerConfigBuilder setPeerData(Map peerData); + ReplicationPeerConfigBuilder addConfiguration(String key, String value); - ReplicationPeerConfigBuilder setConfiguration(Map configuration); + default ReplicationPeerConfigBuilder addAllConfiguration(Map configuration) { + configuration.forEach(this::addConfiguration); + return this; + } + + ReplicationPeerConfigBuilder addPeerData(byte[] key, byte[] value); + + default ReplicationPeerConfigBuilder addAllPeerData(Map peerData) { + peerData.forEach(this::addPeerData); + return this; + } ReplicationPeerConfigBuilder setTableCFsMap(Map> tableCFsMap); diff --git a/hbase-replication/src/main/java/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.java b/hbase-replication/src/main/java/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.java index ff6c07b..a65f51d 100644 --- a/hbase-replication/src/main/java/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.java +++ b/hbase-replication/src/main/java/org/apache/hadoop/hbase/replication/ReplicationPeersZKImpl.java @@ -363,17 +363,11 @@ public class ReplicationPeersZKImpl extends ReplicationStateZKBase implements Re + existingConfig.getReplicationEndpointImpl() + "' does not match new class '" + newConfig.getReplicationEndpointImpl() + "'"); } - //Update existingConfig's peer config and peer data with the new values, but don't touch config + // Update existingConfig's peer config and peer data with the new values, but don't touch config // or data that weren't explicitly changed ReplicationPeerConfigBuilder builder = ReplicationPeerConfig.newBuilder(newConfig); - Map peerData = new TreeMap<>(Bytes.BYTES_COMPARATOR); - existingConfig.getPeerData().forEach(peerData::put); - newConfig.getPeerData().forEach(peerData::put); - builder.setPeerData(peerData); - Map configuration = new HashMap<>(); - existingConfig.getConfiguration().forEach(configuration::put); - newConfig.getConfiguration().forEach(configuration::put); - builder.setConfiguration(configuration); + builder.addAllConfiguration(existingConfig.getConfiguration()); + builder.addAllPeerData(existingConfig.getPeerData()); try { ZKUtil.setData(this.zookeeper, getPeerNode(id), -- 1.9.1