HBASE-17871 scan#setBatch(int) call leads wrong result of VerifyReplication

Signed-off-by: tedyu <yuzhihong@gmail.com>
This commit is contained in:
Tomu Tsuruhara 2017-04-05 21:42:28 +09:00 committed by tedyu
parent d7e3116a17
commit ec5188df30
1 changed files with 15 additions and 4 deletions

View File

@ -77,7 +77,7 @@ public class VerifyReplication extends Configured implements Tool {
private final static String PEER_CONFIG_PREFIX = NAME + ".peer."; private final static String PEER_CONFIG_PREFIX = NAME + ".peer.";
static long startTime = 0; static long startTime = 0;
static long endTime = Long.MAX_VALUE; static long endTime = Long.MAX_VALUE;
static int batch = Integer.MAX_VALUE; static int batch = -1;
static int versions = -1; static int versions = -1;
static String tableName = null; static String tableName = null;
static String families = null; static String families = null;
@ -110,6 +110,7 @@ public class VerifyReplication extends Configured implements Tool {
private int sleepMsBeforeReCompare; private int sleepMsBeforeReCompare;
private String delimiter = ""; private String delimiter = "";
private boolean verbose = false; private boolean verbose = false;
private int batch = -1;
/** /**
* Map method that compares every scanned row with the equivalent from * Map method that compares every scanned row with the equivalent from
@ -128,8 +129,11 @@ public class VerifyReplication extends Configured implements Tool {
sleepMsBeforeReCompare = conf.getInt(NAME +".sleepMsBeforeReCompare", 0); sleepMsBeforeReCompare = conf.getInt(NAME +".sleepMsBeforeReCompare", 0);
delimiter = conf.get(NAME + ".delimiter", ""); delimiter = conf.get(NAME + ".delimiter", "");
verbose = conf.getBoolean(NAME +".verbose", false); verbose = conf.getBoolean(NAME +".verbose", false);
batch = conf.getInt(NAME + ".batch", -1);
final Scan scan = new Scan(); final Scan scan = new Scan();
scan.setBatch(batch); if (batch > 0) {
scan.setBatch(batch);
}
scan.setCacheBlocks(false); scan.setCacheBlocks(false);
scan.setCaching(conf.getInt(TableInputFormat.SCAN_CACHEDROWS, 1)); scan.setCaching(conf.getInt(TableInputFormat.SCAN_CACHEDROWS, 1));
long startTime = conf.getLong(NAME + ".startTime", 0); long startTime = conf.getLong(NAME + ".startTime", 0);
@ -329,6 +333,7 @@ public class VerifyReplication extends Configured implements Tool {
conf.setLong(NAME+".endTime", endTime); conf.setLong(NAME+".endTime", endTime);
conf.setInt(NAME +".sleepMsBeforeReCompare", sleepMsBeforeReCompare); conf.setInt(NAME +".sleepMsBeforeReCompare", sleepMsBeforeReCompare);
conf.set(NAME + ".delimiter", delimiter); conf.set(NAME + ".delimiter", delimiter);
conf.setInt(NAME + ".batch", batch);
conf.setBoolean(NAME +".verbose", verbose); conf.setBoolean(NAME +".verbose", verbose);
conf.setBoolean(NAME +".includeDeletedCells", includeDeletedCells); conf.setBoolean(NAME +".includeDeletedCells", includeDeletedCells);
if (families != null) { if (families != null) {
@ -356,6 +361,10 @@ public class VerifyReplication extends Configured implements Tool {
Scan scan = new Scan(); Scan scan = new Scan();
scan.setTimeRange(startTime, endTime); scan.setTimeRange(startTime, endTime);
scan.setRaw(includeDeletedCells); scan.setRaw(includeDeletedCells);
scan.setCacheBlocks(false);
if (batch > 0) {
scan.setBatch(batch);
}
if (versions >= 0) { if (versions >= 0) {
scan.setMaxVersions(versions); scan.setMaxVersions(versions);
LOG.info("Number of versions set to " + versions); LOG.info("Number of versions set to " + versions);
@ -503,7 +512,7 @@ public class VerifyReplication extends Configured implements Tool {
private static void restoreDefaults() { private static void restoreDefaults() {
startTime = 0; startTime = 0;
endTime = Long.MAX_VALUE; endTime = Long.MAX_VALUE;
batch = Integer.MAX_VALUE; batch = -1;
versions = -1; versions = -1;
tableName = null; tableName = null;
families = null; families = null;
@ -521,13 +530,15 @@ public class VerifyReplication extends Configured implements Tool {
} }
System.err.println("Usage: verifyrep [--starttime=X]" + System.err.println("Usage: verifyrep [--starttime=X]" +
" [--endtime=Y] [--families=A] [--row-prefixes=B] [--delimiter=] [--recomparesleep=] " + " [--endtime=Y] [--families=A] [--row-prefixes=B] [--delimiter=] [--recomparesleep=] " +
"[--verbose] <peerid> <tablename>"); "[--batch=] [--verbose] <peerid> <tablename>");
System.err.println(); System.err.println();
System.err.println("Options:"); System.err.println("Options:");
System.err.println(" starttime beginning of the time range"); System.err.println(" starttime beginning of the time range");
System.err.println(" without endtime means from starttime to forever"); System.err.println(" without endtime means from starttime to forever");
System.err.println(" endtime end of the time range"); System.err.println(" endtime end of the time range");
System.err.println(" versions number of cell versions to verify"); System.err.println(" versions number of cell versions to verify");
System.err.println(" batch batch count for scan, " +
"note that result row counts will no longer be actual number of rows when you use this option");
System.err.println(" raw includes raw scan if given in options"); System.err.println(" raw includes raw scan if given in options");
System.err.println(" families comma-separated list of families to copy"); System.err.println(" families comma-separated list of families to copy");
System.err.println(" row-prefixes comma-separated list of row key prefixes to filter on "); System.err.println(" row-prefixes comma-separated list of row key prefixes to filter on ");