Apache9 commented on a change in pull request #1737:
URL: https://github.com/apache/hbase/pull/1737#discussion_r430390208
##########
File path:
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/SequenceIdAccounting.java
##########
@@ -440,27 +434,27 @@ boolean areAllLower(Map<byte[], Long> sequenceids,
Collection<byte[]> keysBlocki
* {@link #lowestUnflushedSequenceIds} has a sequence id less than that
passed in
* <code>sequenceids</code> then return it.
* @param sequenceids Sequenceids keyed by encoded region name.
- * @return regions found in this instance with sequence ids less than those
passed in.
+ * @return stores of regions found in this instance with sequence ids less
than those passed in.
*/
- byte[][] findLower(Map<byte[], Long> sequenceids) {
- List<byte[]> toFlush = null;
+ Map<byte[], List<byte[]>> findLower(Map<byte[], Long> sequenceids) {
+ Map<byte[], List<byte[]>> toFlush = null;
// Keeping the old behavior of iterating unflushedSeqNums under
oldestSeqNumsLock.
synchronized (tieLock) {
for (Map.Entry<byte[], Long> e : sequenceids.entrySet()) {
Map<ImmutableByteArray, Long> m =
this.lowestUnflushedSequenceIds.get(e.getKey());
if (m == null) {
continue;
}
- // The lowest sequence id outstanding for this region.
- long lowest = getLowestSequenceId(m);
- if (lowest != HConstants.NO_SEQNUM && lowest <= e.getValue()) {
- if (toFlush == null) {
- toFlush = new ArrayList<>();
+ for (Map.Entry<ImmutableByteArray, Long> me : m.entrySet()) {
+ if (me.getValue() <= e.getValue()) {
+ if (toFlush == null) {
+ toFlush = new TreeMap(Bytes.BYTES_COMPARATOR);
+ }
+ toFlush.computeIfAbsent(e.getKey(), k -> new
ArrayList<>()).add(Bytes.toBytes(me.getKey().toString()));
}
- toFlush.add(e.getKey());
}
}
}
- return toFlush == null ? null : toFlush.toArray(new byte[0][]);
+ return toFlush == null ? null : toFlush;
Review comment:
Just return toFlush?
##########
File path:
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/AbstractFSWAL.java
##########
@@ -639,26 +641,30 @@ public int getNumLogFiles() {
* If the number of un-archived WAL files ('live' WALs) is greater than
maximum allowed,
* check the first (oldest) WAL, and return those regions which should be
flushed so that
* it can be let-go/'archived'.
- * @return regions (encodedRegionNames) to flush in order to archive oldest
WAL file.
+ * @return stores of regions (encodedRegionNames) to flush in order to
archive oldest WAL file.
*/
- byte[][] findRegionsToForceFlush() throws IOException {
- byte[][] regions = null;
+ Map<byte[], List<byte[]>> findRegionsToForceFlush() throws IOException {
+ Map<byte[], List<byte[]>> regions = null;
int logCount = getNumRolledLogFiles();
if (logCount > this.maxLogs && logCount > 0) {
Map.Entry<Path, WalProps> firstWALEntry =
this.walFile2Props.firstEntry();
regions =
this.sequenceIdAccounting.findLower(firstWALEntry.getValue().encodedName2HighestSequenceId);
}
if (regions != null) {
- StringBuilder sb = new StringBuilder();
- for (int i = 0; i < regions.length; i++) {
- if (i > 0) {
- sb.append(", ");
+ List<String> listForPrint = new ArrayList();
+ for (Map.Entry<byte[], List<byte[]>> r : regions.entrySet()) {
+ StringBuffer families = new StringBuffer();
Review comment:
StringBuilder
##########
File path:
hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/wal/SequenceIdAccounting.java
##########
@@ -19,13 +19,7 @@
import static org.apache.hadoop.hbase.util.ConcurrentMapUtils.computeIfAbsent;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
+import java.util.*;
Review comment:
Avoid star imports.
##########
File path:
hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/wal/AbstractTestWALReplay.java
##########
@@ -9,7 +9,7 @@
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *TestFlusher
Review comment:
What's this?
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]