HBASE-4696 HRegionThriftServer' might have to indefinitely do redirtects (jgray)
git-svn-id: https://svn.apache.org/repos/asf/hbase/trunk@1196254 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
d8516489ff
commit
8e2dea1eb4
|
@ -29,6 +29,7 @@ Release 0.93.0 - Unreleased
|
||||||
HBASE-4691 Remove more unnecessary byte[] copies from KeyValues (Lars H)
|
HBASE-4691 Remove more unnecessary byte[] copies from KeyValues (Lars H)
|
||||||
HBASE-4669 Add an option of using round-robin assignment for enabling table
|
HBASE-4669 Add an option of using round-robin assignment for enabling table
|
||||||
(Jieshan Bean)
|
(Jieshan Bean)
|
||||||
|
HBASE-4696 HRegionThriftServer' might have to indefinitely do redirtects (jgray)
|
||||||
|
|
||||||
BUG FIXES
|
BUG FIXES
|
||||||
HBASE-4488 Store could miss rows during flush (Lars H via jgray)
|
HBASE-4488 Store could miss rows during flush (Lars H via jgray)
|
||||||
|
|
|
@ -77,6 +77,12 @@ public class HRegionThriftServer extends Thread {
|
||||||
private String protocol;
|
private String protocol;
|
||||||
volatile private TServer tserver;
|
volatile private TServer tserver;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether requests should be redirected to other RegionServers if the
|
||||||
|
* specified region is not hosted by this RegionServer.
|
||||||
|
*/
|
||||||
|
private boolean redirect;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create an instance of the glue object that connects the
|
* Create an instance of the glue object that connects the
|
||||||
* RegionServer with the standard ThriftServer implementation
|
* RegionServer with the standard ThriftServer implementation
|
||||||
|
@ -113,7 +119,7 @@ public class HRegionThriftServer extends Thread {
|
||||||
byte [] row = rowb.array();
|
byte [] row = rowb.array();
|
||||||
HTable table = getTable(tableName.array());
|
HTable table = getTable(tableName.array());
|
||||||
HRegionLocation location = table.getRegionLocation(row);
|
HRegionLocation location = table.getRegionLocation(row);
|
||||||
byte[] regionName = location.getRegionInfo().getEncodedNameAsBytes();
|
byte[] regionName = location.getRegionInfo().getRegionName();
|
||||||
|
|
||||||
if (columns == null) {
|
if (columns == null) {
|
||||||
Get get = new Get(row);
|
Get get = new Get(row);
|
||||||
|
@ -136,7 +142,10 @@ public class HRegionThriftServer extends Thread {
|
||||||
Result result = rs.get(regionName, get);
|
Result result = rs.get(regionName, get);
|
||||||
return ThriftUtilities.rowResultFromHBase(result);
|
return ThriftUtilities.rowResultFromHBase(result);
|
||||||
} catch (NotServingRegionException e) {
|
} catch (NotServingRegionException e) {
|
||||||
LOG.info("ThriftServer redirecting getRowWithColumnsTs");
|
if (!redirect) {
|
||||||
|
throw new IOError(e.getMessage());
|
||||||
|
}
|
||||||
|
LOG.debug("ThriftServer redirecting getRowWithColumnsTs");
|
||||||
return super.getRowWithColumnsTs(tableName, rowb, columns, timestamp);
|
return super.getRowWithColumnsTs(tableName, rowb, columns, timestamp);
|
||||||
} catch (IOException e) {
|
} catch (IOException e) {
|
||||||
throw new IOError(e.getMessage());
|
throw new IOError(e.getMessage());
|
||||||
|
@ -155,6 +164,8 @@ public class HRegionThriftServer extends Thread {
|
||||||
this.transport = conf.get("hbase.regionserver.thrift.transport");
|
this.transport = conf.get("hbase.regionserver.thrift.transport");
|
||||||
this.nonblocking = conf.getBoolean("hbase.regionserver.thrift.nonblocking",
|
this.nonblocking = conf.getBoolean("hbase.regionserver.thrift.nonblocking",
|
||||||
false);
|
false);
|
||||||
|
this.redirect = conf.getBoolean("hbase.regionserver.thrift.redirect",
|
||||||
|
false);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -171,7 +182,8 @@ public class HRegionThriftServer extends Thread {
|
||||||
public void run() {
|
public void run() {
|
||||||
try {
|
try {
|
||||||
HBaseHandlerRegion handler = new HBaseHandlerRegion(this.conf);
|
HBaseHandlerRegion handler = new HBaseHandlerRegion(this.conf);
|
||||||
Hbase.Processor processor = new Hbase.Processor(handler);
|
Hbase.Processor<HBaseHandlerRegion> processor =
|
||||||
|
new Hbase.Processor<HBaseHandlerRegion>(handler);
|
||||||
|
|
||||||
TProtocolFactory protocolFactory;
|
TProtocolFactory protocolFactory;
|
||||||
if (this.protocol != null && this.protocol.equals("compact")) {
|
if (this.protocol != null && this.protocol.equals("compact")) {
|
||||||
|
|
Loading…
Reference in New Issue