From 4c8de44bf9afd707d5586ef157343c8a25109665 Mon Sep 17 00:00:00 2001 From: Duo Zhang Date: Mon, 15 Mar 2021 23:13:23 +0800 Subject: [PATCH] HBASE-25662 Fix spotbugs warning in RoundRobinTableInputFormat (#3050) --- .../mapreduce/RoundRobinTableInputFormat.java | 23 +++++++++--------- .../hbase/mapreduce/TestTableSplit.java | 24 +++++++++---------- 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/RoundRobinTableInputFormat.java b/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/RoundRobinTableInputFormat.java index 2b15e004b9a..2427e909ff2 100644 --- a/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/RoundRobinTableInputFormat.java +++ b/hbase-mapreduce/src/main/java/org/apache/hadoop/hbase/mapreduce/RoundRobinTableInputFormat.java @@ -19,11 +19,11 @@ package org.apache.hadoop.hbase.mapreduce; import java.io.IOException; import java.util.ArrayList; -import java.util.Iterator; -import java.util.LinkedList; -import java.util.Map; import java.util.HashMap; +import java.util.Iterator; import java.util.List; +import java.util.Map; +import org.apache.commons.lang3.StringUtils; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.HConstants; @@ -88,11 +88,11 @@ public class RoundRobinTableInputFormat extends TableInputFormat { List result = new ArrayList<>(inputs.size()); // Prepare a hashmap with each region server as key and list of Input Splits as value Map> regionServerSplits = new HashMap<>(); - for (InputSplit is: inputs) { + for (InputSplit is : inputs) { if (is instanceof TableSplit) { - String regionServer = ((TableSplit)is).getRegionLocation(); - if (regionServer != null && !regionServer.isEmpty()) { - regionServerSplits.computeIfAbsent(regionServer, k -> new LinkedList<>()).add(is); + String regionServer = ((TableSplit) is).getRegionLocation(); + if (regionServer != null && !StringUtils.isBlank(regionServer)) { + regionServerSplits.computeIfAbsent(regionServer, k -> new ArrayList<>()).add(is); continue; } } @@ -101,15 +101,14 @@ public class RoundRobinTableInputFormat extends TableInputFormat { } // Write out splits in a manner that spreads splits for a RegionServer to avoid 'clumping'. while (!regionServerSplits.isEmpty()) { - Iterator iterator = regionServerSplits.keySet().iterator(); - while (iterator.hasNext()) { - String regionServer = iterator.next(); - List inputSplitListForRegion = regionServerSplits.get(regionServer); + Iterator> iter = regionServerSplits.values().iterator(); + while (iter.hasNext()) { + List inputSplitListForRegion = iter.next(); if (!inputSplitListForRegion.isEmpty()) { result.add(inputSplitListForRegion.remove(0)); } if (inputSplitListForRegion.isEmpty()) { - iterator.remove(); + iter.remove(); } } } diff --git a/hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableSplit.java b/hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableSplit.java index aa0d7d1ed3b..efa0a1b7e69 100644 --- a/hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableSplit.java +++ b/hbase-mapreduce/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableSplit.java @@ -102,32 +102,32 @@ public class TestTableSplit { new TableSplit(TableName.valueOf(name.getMethodName()), "row-start".getBytes(), "row-end".getBytes(), "location"); String str = - "HBase table split(table name: " + name.getMethodName() + ", scan: , start row: row-start, " - + "end row: row-end, region location: location, " - + "encoded region name: )"; + "Split(tablename=" + name.getMethodName() + ", startrow=row-start, " + + "endrow=row-end, regionLocation=location, " + + "regionname=)"; Assert.assertEquals(str, split.toString()); split = new TableSplit(TableName.valueOf(name.getMethodName()), null, "row-start".getBytes(), "row-end".getBytes(), "location", "encoded-region-name", 1000L); str = - "HBase table split(table name: " + name.getMethodName() + ", scan: , start row: row-start, " - + "end row: row-end, region location: location, " - + "encoded region name: encoded-region-name)"; + "Split(tablename=" + name.getMethodName() + ", startrow=row-start, " + + "endrow=row-end, regionLocation=location, " + + "regionname=encoded-region-name)"; Assert.assertEquals(str, split.toString()); split = new TableSplit(null, null, null, null); str = - "HBase table split(table name: null, scan: , start row: null, " - + "end row: null, region location: null, " - + "encoded region name: )"; + "Split(tablename=null, startrow=null, " + + "endrow=null, regionLocation=null, " + + "regionname=)"; Assert.assertEquals(str, split.toString()); split = new TableSplit(null, null, null, null, null, null, 1000L); str = - "HBase table split(table name: null, scan: , start row: null, " - + "end row: null, region location: null, " - + "encoded region name: null)"; + "Split(tablename=null, startrow=null, " + + "endrow=null, regionLocation=null, " + + "regionname=null)"; Assert.assertEquals(str, split.toString()); } }