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 ab75dff..826af4f 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 @@ -28,6 +28,8 @@ import java.util.TreeMap; import org.apache.hadoop.hbase.TableName; import org.apache.yetus.audience.InterfaceAudience; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import org.apache.hadoop.hbase.util.Bytes; /** @@ -35,7 +37,7 @@ import org.apache.hadoop.hbase.util.Bytes; */ @InterfaceAudience.Public public class ReplicationPeerConfig { - + private static final Logger LOG = LoggerFactory.getLogger(ReplicationPeerConfig.class); private String clusterKey; private String replicationEndpointImpl; private final Map peerData; @@ -266,6 +268,7 @@ public class ReplicationPeerConfig { @Override public ReplicationPeerConfigBuilder putConfiguration(String key, String value) { this.configuration.put(key, value); + LOG.debug("putting " +value + " for " + key); return this; } diff --git a/hbase-shell/src/main/ruby/hbase/replication_admin.rb b/hbase-shell/src/main/ruby/hbase/replication_admin.rb index f80c547..0922d48 100644 --- a/hbase-shell/src/main/ruby/hbase/replication_admin.rb +++ b/hbase-shell/src/main/ruby/hbase/replication_admin.rb @@ -221,12 +221,18 @@ module Hbase rpc = get_peer_config(id) unless rpc.nil? ns_set = rpc.getNamespaces - ns_set = java.util.HashSet.new if ns_set.nil? + ns_set2 = java.util.HashSet.new + unless ns_set.nil? + ns_set.each do |n| + ns_set2.add(n) + end + end namespaces.each do |n| - ns_set.add(n) + ns_set2.add(n) end - rpc.setNamespaces(ns_set) - @admin.updateReplicationPeerConfig(id, rpc) + builder = org.apache.hadoop.hbase.replication.ReplicationPeerConfig.newBuilder(rpc) + builder.setNamespaces(ns_set2) + @admin.updateReplicationPeerConfig(id, builder.build) end end end @@ -237,13 +243,15 @@ module Hbase rpc = get_peer_config(id) unless rpc.nil? ns_set = rpc.getNamespaces + ns_set2 = java.util.HashSet.new unless ns_set.nil? - namespaces.each do |n| - ns_set.remove(n) + ns_set.each do |n| + ns_set2.add(n) if !namespaces.include? n end end - rpc.setNamespaces(ns_set) - @admin.updateReplicationPeerConfig(id, rpc) + builder = org.apache.hadoop.hbase.replication.ReplicationPeerConfig.newBuilder(rpc) + builder.setNamespaces(ns_set2) + @admin.updateReplicationPeerConfig(id, builder.build) end end end @@ -353,19 +361,28 @@ module Hbase # Create and populate a ReplicationPeerConfig replication_peer_config = get_peer_config(id) + builder = org.apache.hadoop.hbase.replication.ReplicationPeerConfig.newBuilder(replication_peer_config) + print "updating new config\n" unless config.nil? - replication_peer_config.get_configuration.put_all(config) + new_conf = java.util.HashMap.new(config) + builder.putAllConfiguration(new_conf) end + print "done updating new config\n" unless data.nil? # Convert Strings to Bytes for peer_data peer_data = replication_peer_config.get_peer_data + data2 = java.util.TreeMap.new(Bytes::BYTES_COMPARATOR) + data2.putAll(peer_data) data.each do |key, val| - peer_data.put(Bytes.to_bytes(key), Bytes.to_bytes(val)) + data2.put(Bytes.to_bytes(key), Bytes.to_bytes(val)) end + builder.putAllPeerData(data2); end - @admin.updateReplicationPeerConfig(id, replication_peer_config) + print "building config\n" + @admin.updateReplicationPeerConfig(id, builder.build) + print "done building config\n" end end end