You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by mb...@apache.org on 2012/09/19 03:52:58 UTC
svn commit: r1387433 [1/3] - in /hbase/branches/0.89-fb/src/main:
java/org/apache/hadoop/hbase/ipc/ java/org/apache/hadoop/hbase/regionserver/
java/org/apache/hadoop/hbase/thrift/
java/org/apache/hadoop/hbase/thrift/generated/ resources/org/apache/hado...
Author: mbautin
Date: Wed Sep 19 01:52:58 2012
New Revision: 1387433
URL: http://svn.apache.org/viewvc?rev=1387433&view=rev
Log:
[jira] [HBASE-6808] [89-fb] Add the ability to query region flush time and current time to regionserver Thrift API
Author: mbautin
Summary: In order to do reliable bulk load with WAL turned off through the C++ API we need to be able to query last flush times for all regions on a regionserver as well as the current time on the server. By only comparing timestamps that come from the same regionserver we avoid being affected by clock skew.
Test Plan:
Unit tests.
Test through the C++ HBase client.
Reviewers: aaiyer, kranganathan
Reviewed By: aaiyer
Differential Revision: https://reviews.facebook.net/D5517
Modified:
hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/ipc/HRegionInterface.java
hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionThriftServer.java
hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServerRunner.java
hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/thrift/generated/Hbase.java
hbase/branches/0.89-fb/src/main/resources/org/apache/hadoop/hbase/thrift/Hbase.thrift
Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/ipc/HRegionInterface.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/ipc/HRegionInterface.java?rev=1387433&r1=1387432&r2=1387433&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/ipc/HRegionInterface.java (original)
+++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/ipc/HRegionInterface.java Wed Sep 19 01:52:58 2012
@@ -27,17 +27,15 @@ import org.apache.hadoop.hbase.HRegionIn
import org.apache.hadoop.hbase.HServerInfo;
import org.apache.hadoop.hbase.NotServingRegionException;
import org.apache.hadoop.hbase.Restartable;
-import org.apache.hadoop.hbase.client.Mutation;
-import org.apache.hadoop.hbase.client.Row;
-import org.apache.hadoop.hbase.client.RowMutations;
import org.apache.hadoop.hbase.client.Delete;
import org.apache.hadoop.hbase.client.Get;
+import org.apache.hadoop.hbase.client.MultiAction;
import org.apache.hadoop.hbase.client.MultiPut;
import org.apache.hadoop.hbase.client.MultiPutResponse;
-import org.apache.hadoop.hbase.client.MultiAction;
import org.apache.hadoop.hbase.client.MultiResponse;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
+import org.apache.hadoop.hbase.client.RowMutations;
import org.apache.hadoop.hbase.client.Scan;
import org.apache.hadoop.hbase.master.AssignmentPlan;
import org.apache.hadoop.hbase.regionserver.HRegion;
Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionThriftServer.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionThriftServer.java?rev=1387433&r1=1387432&r2=1387433&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionThriftServer.java (original)
+++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/regionserver/HRegionThriftServer.java Wed Sep 19 01:52:58 2012
@@ -21,7 +21,9 @@ package org.apache.hadoop.hbase.regionse
import java.io.IOException;
import java.nio.ByteBuffer;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -40,6 +42,9 @@ import org.apache.hadoop.hbase.thrift.ge
import org.apache.hadoop.hbase.thrift.generated.IllegalArgument;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.HasThread;
+
+import static org.apache.hadoop.hbase.thrift.ThriftServerRunner.convertIOException;
+
import org.apache.thrift.TException;
/**
@@ -212,5 +217,29 @@ public class HRegionThriftServer extends
super.processMultiPut(tableName, regionName, puts);
}
}
+
+ @Override
+ public Map<ByteBuffer, Long> getLastFlushTimes() throws TException {
+ Map<ByteBuffer, Long> regionToFlushTime = new HashMap<ByteBuffer, Long>();
+ for (HRegion region: rs.getOnlineRegions()) {
+ regionToFlushTime.put(ByteBuffer.wrap(region.getRegionName()), region.getLastFlushTime());
+ }
+ return regionToFlushTime;
+ }
+
+ @Override
+ public long getCurrentTimeMillis() throws TException {
+ return rs.getCurrentTimeMillis();
+ }
+
+ @Override
+ public void flushRegion(ByteBuffer regionName, long ifOlderThanTS)
+ throws TException, IOError {
+ try {
+ rs.flushRegion(Bytes.getBytes(regionName), ifOlderThanTS);
+ } catch (IOException ex) {
+ throw convertIOException(ex);
+ }
+ }
}
}
Modified: hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServerRunner.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServerRunner.java?rev=1387433&r1=1387432&r2=1387433&view=diff
==============================================================================
--- hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServerRunner.java (original)
+++ hbase/branches/0.89-fb/src/main/java/org/apache/hadoop/hbase/thrift/ThriftServerRunner.java Wed Sep 19 01:52:58 2012
@@ -115,6 +115,8 @@ public class ThriftServerRunner implemen
private static ImplType DEFAULT_SERVER_TYPE = ImplType.THREADED_SELECTOR;
+ private static String NOT_SUPPORTED_BY_PROXY_MSG = "Not supported by Thrift proxy";
+
/** An enum of server implementation selections */
enum ImplType {
HS_HA("hsha", true, THsHaServer.class, false),
@@ -479,7 +481,7 @@ public class ThriftServerRunner implemen
* hash-map.
*
* @param scanner
- * @return integer scanner id
+ * @return integer scanner id
*/
protected synchronized int addScanner(ResultScanner scanner) {
int id = nextScannerId++;
@@ -1528,6 +1530,22 @@ public class ThriftServerRunner implemen
HTable table = getTable(tableName);
table.put(puts);
}
+
+ @Override
+ public Map<ByteBuffer, Long> getLastFlushTimes() throws TException {
+ throw new TException(NOT_SUPPORTED_BY_PROXY_MSG);
+ }
+
+ @Override
+ public long getCurrentTimeMillis() throws TException {
+ throw new TException(NOT_SUPPORTED_BY_PROXY_MSG);
+ }
+
+ @Override
+ public void flushRegion(ByteBuffer regionName, long ifOlderThanTS) throws TException, IOError {
+ throw new TException(NOT_SUPPORTED_BY_PROXY_MSG);
+ }
+
}
public static void registerFilters(Configuration conf) {
@@ -1544,7 +1562,7 @@ public class ThriftServerRunner implemen
}
}
- private static IOError convertIOException(IOException e) {
+ public static IOError convertIOException(IOException e) {
if (e instanceof IOError) {
return (IOError) e;
}