You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by la...@apache.org on 2015/05/03 02:47:49 UTC
hbase git commit: HBASE-13333 Renew Scanner Lease without advancing
the RegionScanner.
Repository: hbase
Updated Branches:
refs/heads/master 807eba3e1 -> a4799acd6
HBASE-13333 Renew Scanner Lease without advancing the RegionScanner.
Project: http://git-wip-us.apache.org/repos/asf/hbase/repo
Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/a4799acd
Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/a4799acd
Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/a4799acd
Branch: refs/heads/master
Commit: a4799acd6bc6385d91709aa16fe3a1cbba9b6320
Parents: 807eba3
Author: Lars Hofhansl <la...@apache.org>
Authored: Sat May 2 17:48:32 2015 -0700
Committer: Lars Hofhansl <la...@apache.org>
Committed: Sat May 2 17:48:32 2015 -0700
----------------------------------------------------------------------
.../hadoop/hbase/client/ClientScanner.java | 17 +++++++++++++
.../hadoop/hbase/client/ResultScanner.java | 6 +++++
.../hadoop/hbase/rest/client/RemoteHTable.java | 5 ++++
.../hbase/client/ClientSideRegionScanner.java | 5 ++++
.../hbase/client/TableSnapshotScanner.java | 5 ++++
.../hbase/client/TestFromClientSide3.java | 26 ++++++++++++++++++++
6 files changed, 64 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/hbase/blob/a4799acd/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ClientScanner.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ClientScanner.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ClientScanner.java
index 01ce47f..48bb2f0 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ClientScanner.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ClientScanner.java
@@ -754,4 +754,21 @@ public class ClientScanner extends AbstractClientScanner {
return closestFrontRow;
}
}
+
+ @Override
+ public boolean renewLease() {
+ if (callable != null) {
+ // do not return any rows, do not advance the scanner
+ callable.setCaching(0);
+ try {
+ this.caller.callWithoutRetries(callable, this.scannerTimeout);
+ } catch (Exception e) {
+ return false;
+ } finally {
+ callable.setCaching(this.caching);
+ }
+ return true;
+ }
+ return false;
+ }
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/a4799acd/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ResultScanner.java
----------------------------------------------------------------------
diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ResultScanner.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ResultScanner.java
index 381505c..6b7f1dd 100644
--- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ResultScanner.java
+++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ResultScanner.java
@@ -52,4 +52,10 @@ public interface ResultScanner extends Closeable, Iterable<Result> {
*/
@Override
void close();
+
+ /**
+ * Allow the client to renew the scanner's lease on the server.
+ * @return true if the lease was successfully renewed, false otherwise.
+ */
+ boolean renewLease();
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/a4799acd/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/client/RemoteHTable.java
----------------------------------------------------------------------
diff --git a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/client/RemoteHTable.java b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/client/RemoteHTable.java
index 0300ea2..2d122df 100644
--- a/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/client/RemoteHTable.java
+++ b/hbase-rest/src/main/java/org/apache/hadoop/hbase/rest/client/RemoteHTable.java
@@ -643,6 +643,11 @@ public class RemoteHTable implements Table {
LOG.warn(StringUtils.stringifyException(e));
}
}
+
+ @Override
+ public boolean renewLease() {
+ throw new RuntimeException("renewLease() not supported");
+ }
}
@Override
http://git-wip-us.apache.org/repos/asf/hbase/blob/a4799acd/hbase-server/src/main/java/org/apache/hadoop/hbase/client/ClientSideRegionScanner.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/client/ClientSideRegionScanner.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/client/ClientSideRegionScanner.java
index 9d7bcc0..1ec085f 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/client/ClientSideRegionScanner.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/client/ClientSideRegionScanner.java
@@ -109,4 +109,9 @@ public class ClientSideRegionScanner extends AbstractClientScanner {
}
}
}
+
+ @Override
+ public boolean renewLease() {
+ throw new UnsupportedOperationException();
+ }
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/a4799acd/hbase-server/src/main/java/org/apache/hadoop/hbase/client/TableSnapshotScanner.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/client/TableSnapshotScanner.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/client/TableSnapshotScanner.java
index a371e3e..f817e70 100644
--- a/hbase-server/src/main/java/org/apache/hadoop/hbase/client/TableSnapshotScanner.java
+++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/client/TableSnapshotScanner.java
@@ -201,4 +201,9 @@ public class TableSnapshotScanner extends AbstractClientScanner {
}
}
+ @Override
+ public boolean renewLease() {
+ throw new UnsupportedOperationException();
+ }
+
}
http://git-wip-us.apache.org/repos/asf/hbase/blob/a4799acd/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide3.java
----------------------------------------------------------------------
diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide3.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide3.java
index c69017b..52f4c89 100644
--- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide3.java
+++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide3.java
@@ -22,6 +22,7 @@ package org.apache.hadoop.hbase.client;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
import static org.junit.Assert.fail;
import java.util.ArrayList;
@@ -429,4 +430,29 @@ public class TestFromClientSide3 {
assertTrue(Arrays.equals(res.getValue(FAMILY, COL_QUAL), VAL_BYTES));
table.close();
}
+
+ @Test
+ public void testLeaseRenewal() throws Exception {
+ HTable table = TEST_UTIL.createTable(
+ Bytes.toBytes("testLeaseRenewal"), FAMILY);
+ Put p = new Put(ROW_BYTES);
+ p.addColumn(FAMILY, COL_QUAL, VAL_BYTES);
+ table.put(p);
+ p = new Put(ANOTHERROW);
+ p.addColumn(FAMILY, COL_QUAL, VAL_BYTES);
+ table.put(p);
+ Scan s = new Scan();
+ s.setCaching(1);
+ ResultScanner rs = table.getScanner(s);
+ // make sure that calling renewLease does not impact the scan results
+ assertTrue(rs.renewLease());
+ assertTrue(Arrays.equals(rs.next().getRow(), ANOTHERROW));
+ assertTrue(rs.renewLease());
+ assertTrue(Arrays.equals(rs.next().getRow(), ROW_BYTES));
+ assertTrue(rs.renewLease());
+ assertNull(rs.next());
+ assertFalse(rs.renewLease());
+ rs.close();
+ table.close();
+ }
}