Revert "HBASE-16604 Scanner retries on IOException can cause the scans to miss data"
This reverts commit 83cf44cd3f19c841ac53889d09454ed5247ce591. Reverting because accidental files are committed with this. Project: http://git-wip-us.apache.org/repos/asf/hbase/repo Commit: http://git-wip-us.apache.org/repos/asf/hbase/commit/39db0cac Tree: http://git-wip-us.apache.org/repos/asf/hbase/tree/39db0cac Diff: http://git-wip-us.apache.org/repos/asf/hbase/diff/39db0cac Branch: refs/heads/hbase-14439 Commit: 39db0cac78e44a92f7e730244f0e1ea02e81a4c5 Parents: 50b051a Author: Enis Soztutar <[email protected]> Authored: Fri Sep 23 11:25:23 2016 -0700 Committer: Enis Soztutar <[email protected]> Committed: Fri Sep 23 11:25:23 2016 -0700 ---------------------------------------------------------------------- .../hadoop/hbase/UnknownScannerException.java | 4 - .../hadoop/hbase/client/ClientScanner.java | 4 +- .../hadoop/hbase/client/ScannerCallable.java | 26 +- .../hbase/exceptions/ScannerResetException.java | 50 - .../hbase/ipc/MetricsHBaseServerSource.java | 2 - .../hbase/ipc/MetricsHBaseServerSourceImpl.java | 8 - .../hadoop/hbase/ipc/MetricsHBaseServer.java | 3 - .../hbase/regionserver/RSRpcServices.java | 76 +- .../hadoop/hbase/HBaseTestingUtility.java | 27 +- .../hadoop/hbase/client/TestFromClientSide.java | 75 +- .../hbase/client/TestTableSnapshotScanner.java | 2 +- .../TableSnapshotInputFormatTestBase.java | 2 +- .../mapreduce/TestMultithreadedTableMapper.java | 3 +- .../hbase/mapreduce/TestTableMapReduce.java | 5 +- .../hbase/mapreduce/TestTableMapReduceBase.java | 2 +- .../regionserver/DelegatingKeyValueScanner.java | 114 - .../thrift/HThreadedSelectorServerArgs.java" | 97 - .../hbase/thrift/HbaseHandlerMetricsProxy.java" | 82 - .../thrift/HttpAuthenticationException.java" | 42 - .../hbase/thrift/IncrementCoalescer.java" | 372 - .../hbase/thrift/IncrementCoalescerMBean.java" | 49 - .../hbase/thrift/TBoundedThreadPoolServer.java" | 311 - .../hadoop/hbase/thrift/ThriftHttpServlet.java" | 226 - .../hadoop/hbase/thrift/ThriftMetrics.java" | 90 - .../hadoop/hbase/thrift/ThriftServer.java" | 245 - .../hbase/thrift/ThriftServerRunner.java" | 1887 - .../hadoop/hbase/thrift/ThriftUtilities.java" | 235 - .../hbase/thrift/generated/AlreadyExists.java" | 402 - .../hbase/thrift/generated/BatchMutation.java" | 570 - .../thrift/generated/ColumnDescriptor.java" | 1239 - .../hadoop/hbase/thrift/generated/Hbase.java" | 58585 ----------------- .../hadoop/hbase/thrift/generated/IOError.java" | 403 - .../thrift/generated/IllegalArgument.java" | 402 - .../hbase/thrift/generated/Mutation.java" | 732 - .../hadoop/hbase/thrift/generated/TAppend.java" | 840 - .../hadoop/hbase/thrift/generated/TCell.java" | 517 - .../hadoop/hbase/thrift/generated/TColumn.java" | 521 - .../hbase/thrift/generated/TIncrement.java" | 745 - .../hbase/thrift/generated/TRegionInfo.java" | 1057 - .../hbase/thrift/generated/TRowResult.java" | 745 - .../hadoop/hbase/thrift/generated/TScan.java" | 1406 - .../thrift2/ThriftHBaseServiceHandler.java" | 487 - .../hadoop/hbase/thrift2/ThriftServer.java" | 555 - .../hadoop/hbase/thrift2/ThriftUtilities.java" | 552 - .../hbase/thrift2/generated/TAppend.java" | 954 - .../thrift2/generated/TAuthorization.java" | 445 - .../thrift2/generated/TCellVisibility.java" | 396 - .../hbase/thrift2/generated/TColumn.java" | 631 - .../thrift2/generated/TColumnIncrement.java" | 625 - .../hbase/thrift2/generated/TColumnValue.java" | 851 - .../hbase/thrift2/generated/TCompareOp.java" | 64 - .../hbase/thrift2/generated/TDelete.java" | 1104 - .../hbase/thrift2/generated/TDeleteType.java" | 50 - .../hbase/thrift2/generated/TDurability.java" | 58 - .../hadoop/hbase/thrift2/generated/TGet.java" | 1283 - .../hbase/thrift2/generated/THBaseService.java" | 23215 ------- .../hbase/thrift2/generated/THRegionInfo.java" | 1039 - .../thrift2/generated/THRegionLocation.java" | 502 - .../hbase/thrift2/generated/TIOError.java" | 401 - .../thrift2/generated/TIllegalArgument.java" | 400 - .../hbase/thrift2/generated/TIncrement.java" | 961 - .../hbase/thrift2/generated/TMutation.java" | 373 - .../hadoop/hbase/thrift2/generated/TPut.java" | 1070 - .../hbase/thrift2/generated/TResult.java" | 569 - .../hbase/thrift2/generated/TRowMutations.java" | 559 - .../hadoop/hbase/thrift2/generated/TScan.java" | 1694 - .../hbase/thrift2/generated/TServerName.java" | 599 - .../hbase/thrift2/generated/TTimeRange.java" | 486 - .../apache/hadoop/hbase/thrift2/package.html" | 103 - 69 files changed, 53 insertions(+), 112176 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/hbase-client/src/main/java/org/apache/hadoop/hbase/UnknownScannerException.java ---------------------------------------------------------------------- diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/UnknownScannerException.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/UnknownScannerException.java index 3e7b22d..b951221 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/UnknownScannerException.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/UnknownScannerException.java @@ -45,8 +45,4 @@ public class UnknownScannerException extends DoNotRetryIOException { public UnknownScannerException(String s) { super(s); } - - public UnknownScannerException(String s, Exception e) { - super(s, e); - } } http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/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 de8bfcc..3e676c7 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 @@ -33,7 +33,6 @@ import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.UnknownScannerException; import org.apache.hadoop.hbase.classification.InterfaceAudience; import org.apache.hadoop.hbase.exceptions.OutOfOrderScannerNextException; -import org.apache.hadoop.hbase.exceptions.ScannerResetException; import org.apache.hadoop.hbase.ipc.RpcControllerFactory; import org.apache.hadoop.hbase.protobuf.ProtobufUtil; import org.apache.hadoop.hbase.protobuf.generated.MapReduceProtos; @@ -429,8 +428,7 @@ public abstract class ClientScanner extends AbstractClientScanner { if ((cause != null && cause instanceof NotServingRegionException) || (cause != null && cause instanceof RegionServerStoppedException) || e instanceof OutOfOrderScannerNextException || - e instanceof UnknownScannerException || - e instanceof ScannerResetException) { + e instanceof UnknownScannerException ) { // Pass. It is easier writing the if loop test as list of what is allowed rather than // as a list of what is not allowed... so if in here, it means we do not throw. } else { http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ScannerCallable.java ---------------------------------------------------------------------- diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ScannerCallable.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ScannerCallable.java index 8345aa1..adf1153 100644 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ScannerCallable.java +++ b/hbase-client/src/main/java/org/apache/hadoop/hbase/client/ScannerCallable.java @@ -40,7 +40,7 @@ import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.UnknownScannerException; import org.apache.hadoop.hbase.classification.InterfaceAudience; import org.apache.hadoop.hbase.client.metrics.ScanMetrics; -import org.apache.hadoop.hbase.exceptions.ScannerResetException; +import org.apache.hadoop.hbase.ipc.HBaseRpcController; import org.apache.hadoop.hbase.ipc.RpcControllerFactory; import org.apache.hadoop.hbase.protobuf.ProtobufUtil; import org.apache.hadoop.hbase.protobuf.RequestConverter; @@ -102,7 +102,7 @@ public class ScannerCallable extends RegionServerCallable<Result[]> { * @param scan the scan to execute * @param scanMetrics the ScanMetrics to used, if it is null, ScannerCallable won't collect * metrics - * @param rpcControllerFactory factory to use when creating + * @param rpcControllerFactory factory to use when creating * {@link com.google.protobuf.RpcController} */ public ScannerCallable(ClusterConnection connection, TableName tableName, Scan scan, @@ -174,7 +174,6 @@ public class ScannerCallable extends RegionServerCallable<Result[]> { } } - @Override protected Result [] rpcCall() throws Exception { if (Thread.interrupted()) { throw new InterruptedIOException(); @@ -246,19 +245,14 @@ public class ScannerCallable extends RegionServerCallable<Result[]> { if (e instanceof RemoteException) { ioe = ((RemoteException) e).unwrapRemoteException(); } - if (logScannerActivity) { - if (ioe instanceof UnknownScannerException) { - try { - HRegionLocation location = - getConnection().relocateRegion(getTableName(), scan.getStartRow()); - LOG.info("Scanner=" + scannerId + " expired, current region location is " + - location.toString()); - } catch (Throwable t) { - LOG.info("Failed to relocate region", t); - } - } else if (ioe instanceof ScannerResetException) { - LOG.info("Scanner=" + scannerId + " has received an exception, and the server " - + "asked us to reset the scanner state.", ioe); + if (logScannerActivity && (ioe instanceof UnknownScannerException)) { + try { + HRegionLocation location = + getConnection().relocateRegion(getTableName(), scan.getStartRow()); + LOG.info("Scanner=" + scannerId + " expired, current region location is " + + location.toString()); + } catch (Throwable t) { + LOG.info("Failed to relocate region", t); } } // The below convertion of exceptions into DoNotRetryExceptions is a little strange. http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/hbase-client/src/main/java/org/apache/hadoop/hbase/exceptions/ScannerResetException.java ---------------------------------------------------------------------- diff --git a/hbase-client/src/main/java/org/apache/hadoop/hbase/exceptions/ScannerResetException.java b/hbase-client/src/main/java/org/apache/hadoop/hbase/exceptions/ScannerResetException.java deleted file mode 100644 index 7689eb1..0000000 --- a/hbase-client/src/main/java/org/apache/hadoop/hbase/exceptions/ScannerResetException.java +++ /dev/null @@ -1,50 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.hadoop.hbase.exceptions; - -import org.apache.hadoop.hbase.DoNotRetryIOException; -import org.apache.hadoop.hbase.classification.InterfaceAudience; -import org.apache.hadoop.hbase.classification.InterfaceStability; - -/** - * Thrown when the server side has received an Exception, and asks the Client to reset the scanner - * state by closing the current region scanner, and reopening from the start of last seen row. - */ [email protected] [email protected] -public class ScannerResetException extends DoNotRetryIOException { - private static final long serialVersionUID = -5649728171144849619L; - - /** constructor */ - public ScannerResetException() { - super(); - } - - /** - * Constructor - * @param s message - */ - public ScannerResetException(String s) { - super(s); - } - - public ScannerResetException(String s, Exception e) { - super(s, e); - } -} http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.java ---------------------------------------------------------------------- diff --git a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.java b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.java index cf9c6c7..ffbe6fe 100644 --- a/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.java +++ b/hbase-hadoop-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSource.java @@ -79,7 +79,6 @@ public interface MetricsHBaseServerSource extends BaseSource { String EXCEPTIONS_OOO_NAME="exceptions.OutOfOrderScannerNextException"; String EXCEPTIONS_BUSY_NAME="exceptions.RegionTooBusyException"; String EXCEPTIONS_UNKNOWN_NAME="exceptions.UnknownScannerException"; - String EXCEPTIONS_SCANNER_RESET_NAME="exceptions.ScannerResetException"; String EXCEPTIONS_SANITY_NAME="exceptions.FailedSanityCheckException"; String EXCEPTIONS_MOVED_NAME="exceptions.RegionMovedException"; String EXCEPTIONS_NSRE_NAME="exceptions.NotServingRegionException"; @@ -109,7 +108,6 @@ public interface MetricsHBaseServerSource extends BaseSource { void movedRegionException(); void notServingRegionException(); void unknownScannerException(); - void scannerResetException(); void tooBusyException(); void multiActionTooLargeException(); void callQueueTooBigException(); http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceImpl.java ---------------------------------------------------------------------- diff --git a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceImpl.java b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceImpl.java index d372b1b..fafa9d0 100644 --- a/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceImpl.java +++ b/hbase-hadoop2-compat/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServerSourceImpl.java @@ -45,7 +45,6 @@ public class MetricsHBaseServerSourceImpl extends BaseSourceImpl private final MutableFastCounter exceptionsOOO; private final MutableFastCounter exceptionsBusy; private final MutableFastCounter exceptionsUnknown; - private final MutableFastCounter exceptionsScannerReset; private final MutableFastCounter exceptionsSanity; private final MutableFastCounter exceptionsNSRE; private final MutableFastCounter exceptionsMoved; @@ -79,8 +78,6 @@ public class MetricsHBaseServerSourceImpl extends BaseSourceImpl .newCounter(EXCEPTIONS_BUSY_NAME, EXCEPTIONS_TYPE_DESC, 0L); this.exceptionsUnknown = this.getMetricsRegistry() .newCounter(EXCEPTIONS_UNKNOWN_NAME, EXCEPTIONS_TYPE_DESC, 0L); - this.exceptionsScannerReset = this.getMetricsRegistry() - .newCounter(EXCEPTIONS_SCANNER_RESET_NAME, EXCEPTIONS_TYPE_DESC, 0L); this.exceptionsSanity = this.getMetricsRegistry() .newCounter(EXCEPTIONS_SANITY_NAME, EXCEPTIONS_TYPE_DESC, 0L); this.exceptionsMoved = this.getMetricsRegistry() @@ -165,11 +162,6 @@ public class MetricsHBaseServerSourceImpl extends BaseSourceImpl } @Override - public void scannerResetException() { - exceptionsScannerReset.incr(); - } - - @Override public void tooBusyException() { exceptionsBusy.incr(); } http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServer.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServer.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServer.java index fe03d4f..838bdf6 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServer.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/ipc/MetricsHBaseServer.java @@ -29,7 +29,6 @@ import org.apache.hadoop.hbase.CompatibilitySingletonFactory; import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException; import org.apache.hadoop.hbase.exceptions.OutOfOrderScannerNextException; import org.apache.hadoop.hbase.exceptions.RegionMovedException; -import org.apache.hadoop.hbase.exceptions.ScannerResetException; @InterfaceAudience.Private public class MetricsHBaseServer { @@ -104,8 +103,6 @@ public class MetricsHBaseServer { source.tooBusyException(); } else if (throwable instanceof UnknownScannerException) { source.unknownScannerException(); - } else if (throwable instanceof ScannerResetException) { - source.scannerResetException(); } else if (throwable instanceof RegionMovedException) { source.movedRegionException(); } else if (throwable instanceof NotServingRegionException) { http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java index 5ba8afd..6f92f9d 100644 --- a/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java +++ b/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/RSRpcServices.java @@ -82,7 +82,6 @@ import org.apache.hadoop.hbase.conf.ConfigurationObserver; import org.apache.hadoop.hbase.exceptions.FailedSanityCheckException; import org.apache.hadoop.hbase.exceptions.MergeRegionException; import org.apache.hadoop.hbase.exceptions.OutOfOrderScannerNextException; -import org.apache.hadoop.hbase.exceptions.ScannerResetException; import org.apache.hadoop.hbase.filter.ByteArrayComparable; import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp; import org.apache.hadoop.hbase.ipc.HBaseRPCErrorHandler; @@ -2902,22 +2901,13 @@ public class RSRpcServices implements HBaseRPCErrorHandler, isClientCellBlockSupport(context)); } } catch (IOException e) { - // The scanner state might be left in a dirty state, so we will tell the Client to - // fail this RPC and close the scanner while opening up another one from the start of - // row that the client has last seen. - closeScanner(region, scanner, scannerName, context); - - // We closed the scanner already. Instead of throwing the IOException, and client - // retrying with the same scannerId only to get USE on the next RPC, we directly throw - // a special exception to save an RPC. - if (VersionInfoUtil.hasMinimumVersion(context.getClientVersionInfo(), 1, 4)) { - // 1.4.0+ clients know how to handle - throw new ScannerResetException("Scanner is closed on the server-side", e); - } else { - // older clients do not know about SRE. Just throw USE, which they will handle - throw new UnknownScannerException("Throwing UnknownScannerException to reset the client" - + " scanner state for clients older than 1.3.", e); + // if we have an exception on scanner next and we are using the callSeq + // we should rollback because the client will retry with the same callSeq + // and get an OutOfOrderScannerNextException if we don't do so. + if (rsh != null && request.hasNextCallSeq()) { + rsh.rollbackNextCallSeq(); } + throw e; } finally { if (context != null) { context.setCallBack(rsh.shippedCallback); @@ -2936,8 +2926,29 @@ public class RSRpcServices implements HBaseRPCErrorHandler, if (!moreResults || closeScanner) { ttl = 0; moreResults = false; - if (closeScanner(region, scanner, scannerName, context)) { - return builder.build(); // bypass + if (region != null && region.getCoprocessorHost() != null) { + if (region.getCoprocessorHost().preScannerClose(scanner)) { + return builder.build(); // bypass + } + } + rsh = scanners.remove(scannerName); + if (rsh != null) { + if (context != null) { + context.setCallBack(rsh.closeCallBack); + } else { + rsh.s.close(); + } + try { + regionServer.leases.cancelLease(scannerName); + } catch (LeaseException le) { + // No problem, ignore + if (LOG.isTraceEnabled()) { + LOG.trace("Un-able to cancel lease of scanner. It could already be closed."); + } + } + if (region != null && region.getCoprocessorHost() != null) { + region.getCoprocessorHost().postScannerClose(scanner); + } } } @@ -2969,35 +2980,6 @@ public class RSRpcServices implements HBaseRPCErrorHandler, } } - private boolean closeScanner(Region region, RegionScanner scanner, String scannerName, - RpcCallContext context) throws IOException { - if (region != null && region.getCoprocessorHost() != null) { - if (region.getCoprocessorHost().preScannerClose(scanner)) { - return true; // bypass - } - } - RegionScannerHolder rsh = scanners.remove(scannerName); - if (rsh != null) { - if (context != null) { - context.setCallBack(rsh.closeCallBack); - } else { - rsh.s.close(); - } - try { - regionServer.leases.cancelLease(scannerName); - } catch (LeaseException le) { - // No problem, ignore - if (LOG.isTraceEnabled()) { - LOG.trace("Un-able to cancel lease of scanner. It could already be closed."); - } - } - if (region != null && region.getCoprocessorHost() != null) { - region.getCoprocessorHost().postScannerClose(scanner); - } - } - return false; - } - @Override public CoprocessorServiceResponse execRegionServerService(RpcController controller, CoprocessorServiceRequest request) throws ServiceException { http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java index 829661c..5a4da45 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/HBaseTestingUtility.java @@ -1413,8 +1413,12 @@ public class HBaseTestingUtility extends HBaseCommonTestingUtility { public Table createTable(TableName tableName, byte[][] families, int numVersions, byte[] startKey, byte[] endKey, int numRegions) throws IOException{ - HTableDescriptor desc = createTableDescriptor(tableName, families, numVersions); - + HTableDescriptor desc = new HTableDescriptor(tableName); + for (byte[] family : families) { + HColumnDescriptor hcd = new HColumnDescriptor(family) + .setMaxVersions(numVersions); + desc.addFamily(hcd); + } getAdmin().createTable(desc, startKey, endKey, numRegions); // HBaseAdmin only waits for regions to appear in hbase:meta we // should wait until they are assigned @@ -1777,22 +1781,6 @@ public class HBaseTestingUtility extends HBaseCommonTestingUtility { MAXVERSIONS, HConstants.FOREVER, HColumnDescriptor.DEFAULT_KEEP_DELETED); } - public HTableDescriptor createTableDescriptor(final TableName tableName, - byte[] family) { - return createTableDescriptor(tableName, new byte[][] {family}, 1); - } - - public HTableDescriptor createTableDescriptor(final TableName tableName, - byte[][] families, int maxVersions) { - HTableDescriptor desc = new HTableDescriptor(tableName); - for (byte[] family : families) { - HColumnDescriptor hcd = new HColumnDescriptor(family) - .setMaxVersions(maxVersions); - desc.addFamily(hcd); - } - return desc; - } - /** * Create an HRegion that writes to the local tmp dirs * @param desc @@ -2010,7 +1998,7 @@ public class HBaseTestingUtility extends HBaseCommonTestingUtility { put.setDurability(writeToWAL ? Durability.USE_DEFAULT : Durability.SKIP_WAL); for (int i = 0; i < f.length; i++) { byte[] value1 = value != null ? value : row; - put.addColumn(f[i], f[i], value1); + put.addColumn(f[i], null, value1); } puts.add(put); } @@ -3552,7 +3540,6 @@ public class HBaseTestingUtility extends HBaseCommonTestingUtility { public PortAllocator(Random random) { this.random = random; this.portChecker = new AvailablePortChecker() { - @Override public boolean available(int port) { try { ServerSocket sock = new ServerSocket(port); http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java index 33a5315..f465625 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java @@ -26,6 +26,7 @@ import static org.junit.Assert.assertNull; import static org.junit.Assert.assertSame; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; + import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; @@ -36,12 +37,10 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.NavigableMap; -import java.util.NavigableSet; import java.util.UUID; import java.util.concurrent.Callable; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; -import java.util.concurrent.atomic.AtomicLong; import java.util.concurrent.atomic.AtomicReference; import org.apache.commons.lang.ArrayUtils; @@ -64,11 +63,8 @@ import org.apache.hadoop.hbase.ServerName; import org.apache.hadoop.hbase.TableName; import org.apache.hadoop.hbase.Waiter; import org.apache.hadoop.hbase.client.metrics.ScanMetrics; -import org.apache.hadoop.hbase.coprocessor.BaseRegionObserver; import org.apache.hadoop.hbase.coprocessor.CoprocessorHost; import org.apache.hadoop.hbase.coprocessor.MultiRowMutationEndpoint; -import org.apache.hadoop.hbase.coprocessor.ObserverContext; -import org.apache.hadoop.hbase.coprocessor.RegionCoprocessorEnvironment; import org.apache.hadoop.hbase.filter.BinaryComparator; import org.apache.hadoop.hbase.filter.CompareFilter; import org.apache.hadoop.hbase.filter.CompareFilter.CompareOp; @@ -95,14 +91,10 @@ import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.MutationProto; import org.apache.hadoop.hbase.protobuf.generated.ClientProtos.MutationProto.MutationType; import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MultiRowMutationService; import org.apache.hadoop.hbase.protobuf.generated.MultiRowMutationProtos.MutateRowsRequest; -import org.apache.hadoop.hbase.regionserver.DelegatingKeyValueScanner; import org.apache.hadoop.hbase.regionserver.HRegionServer; -import org.apache.hadoop.hbase.regionserver.KeyValueScanner; import org.apache.hadoop.hbase.regionserver.NoSuchColumnFamilyException; import org.apache.hadoop.hbase.regionserver.Region; -import org.apache.hadoop.hbase.regionserver.ScanInfo; import org.apache.hadoop.hbase.regionserver.Store; -import org.apache.hadoop.hbase.regionserver.StoreScanner; import org.apache.hadoop.hbase.testclassification.ClientTests; import org.apache.hadoop.hbase.testclassification.LargeTests; import org.apache.hadoop.hbase.util.Bytes; @@ -544,71 +536,6 @@ public class TestFromClientSide { assertEquals(rowCount - endKeyCount, countGreater); } - /** - * This is a coprocessor to inject a test failure so that a store scanner.reseek() call will - * fail with an IOException() on the first call. - */ - public static class ExceptionInReseekRegionObserver extends BaseRegionObserver { - static AtomicLong reqCount = new AtomicLong(0); - class MyStoreScanner extends StoreScanner { - public MyStoreScanner(Store store, ScanInfo scanInfo, Scan scan, NavigableSet<byte[]> columns, - long readPt) throws IOException { - super(store, scanInfo, scan, columns, readPt); - } - - @Override - protected List<KeyValueScanner> selectScannersFrom( - List<? extends KeyValueScanner> allScanners) { - List<KeyValueScanner> scanners = super.selectScannersFrom(allScanners); - List<KeyValueScanner> newScanners = new ArrayList<>(scanners.size()); - for (KeyValueScanner scanner : scanners) { - newScanners.add(new DelegatingKeyValueScanner(scanner) { - @Override - public boolean reseek(Cell key) throws IOException { - if (reqCount.incrementAndGet() == 1) { - throw new IOException("Injected exception"); - } - return super.reseek(key); - } - }); - } - return newScanners; - } - } - - @Override - public KeyValueScanner preStoreScannerOpen(ObserverContext<RegionCoprocessorEnvironment> c, - Store store, Scan scan, NavigableSet<byte[]> targetCols, KeyValueScanner s, - final long readPt) throws IOException { - return new MyStoreScanner(store, store.getScanInfo(), scan, targetCols, readPt); - } - } - - /** - * Tests the case where a Scan can throw an IOException in the middle of the seek / reseek - * leaving the server side RegionScanner to be in dirty state. The client has to ensure that the - * ClientScanner does not get an exception and also sees all the data. - * @throws IOException - * @throws InterruptedException - */ - @Test - public void testClientScannerIsResetWhenScanThrowsIOException() - throws IOException, InterruptedException { - TEST_UTIL.getConfiguration().setBoolean("hbase.client.log.scanner.activity", true); - TableName name = TableName.valueOf("testClientScannerIsResetWhenScanThrowsIOException"); - - HTableDescriptor htd = TEST_UTIL.createTableDescriptor(name, FAMILY); - htd.addCoprocessor(ExceptionInReseekRegionObserver.class.getName()); - TEST_UTIL.getAdmin().createTable(htd); - try (Table t = TEST_UTIL.getConnection().getTable(name)) { - int rowCount = TEST_UTIL.loadTable(t, FAMILY, false); - TEST_UTIL.getAdmin().flush(name); - int actualRowCount = countRows(t, new Scan().addColumn(FAMILY, FAMILY)); - assertEquals(rowCount, actualRowCount); - } - assertTrue(ExceptionInReseekRegionObserver.reqCount.get() > 0); - } - /* * @param key * @return Scan with RowFilter that does LESS than passed key. http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestTableSnapshotScanner.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestTableSnapshotScanner.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestTableSnapshotScanner.java index 8b9428f..0f0baff 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestTableSnapshotScanner.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestTableSnapshotScanner.java @@ -184,7 +184,7 @@ public class TestTableSnapshotScanner { } for (int j = 0; j < FAMILIES.length; j++) { - byte[] actual = result.getValue(FAMILIES[j], FAMILIES[j]); + byte[] actual = result.getValue(FAMILIES[j], null); Assert.assertArrayEquals("Row in snapshot does not match, expected:" + Bytes.toString(row) + " ,actual:" + Bytes.toString(actual), row, actual); } http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatTestBase.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatTestBase.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatTestBase.java index 66d290a..26e5897 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatTestBase.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatTestBase.java @@ -181,7 +181,7 @@ public abstract class TableSnapshotInputFormatTestBase { } for (int j = 0; j < FAMILIES.length; j++) { - byte[] actual = result.getValue(FAMILIES[j], FAMILIES[j]); + byte[] actual = result.getValue(FAMILIES[j], null); Assert.assertArrayEquals("Row in snapshot does not match, expected:" + Bytes.toString(row) + " ,actual:" + Bytes.toString(actual), row, actual); } http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestMultithreadedTableMapper.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestMultithreadedTableMapper.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestMultithreadedTableMapper.java index 694a359..5110ef7 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestMultithreadedTableMapper.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestMultithreadedTableMapper.java @@ -97,7 +97,6 @@ public class TestMultithreadedTableMapper { * @param context * @throws IOException */ - @Override public void map(ImmutableBytesWritable key, Result value, Context context) throws IOException, InterruptedException { @@ -111,7 +110,7 @@ public class TestMultithreadedTableMapper { Bytes.toString(INPUT_FAMILY) + "'."); } // Get the original value and reverse it - String originalValue = Bytes.toString(value.getValue(INPUT_FAMILY, INPUT_FAMILY)); + String originalValue = Bytes.toString(value.getValue(INPUT_FAMILY, null)); StringBuilder newValue = new StringBuilder(originalValue); newValue.reverse(); // Now set the value to be collected http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.java index 690e776..fa5b9a4 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableMapReduce.java @@ -57,7 +57,6 @@ import org.junit.experimental.categories.Category; public class TestTableMapReduce extends TestTableMapReduceBase { private static final Log LOG = LogFactory.getLog(TestTableMapReduce.class); - @Override protected Log getLog() { return LOG; } /** @@ -73,7 +72,6 @@ public class TestTableMapReduce extends TestTableMapReduceBase { * @param context * @throws IOException */ - @Override public void map(ImmutableBytesWritable key, Result value, Context context) throws IOException, InterruptedException { @@ -88,7 +86,7 @@ public class TestTableMapReduce extends TestTableMapReduceBase { } // Get the original value and reverse it - String originalValue = Bytes.toString(value.getValue(INPUT_FAMILY, INPUT_FAMILY)); + String originalValue = Bytes.toString(value.getValue(INPUT_FAMILY, null)); StringBuilder newValue = new StringBuilder(originalValue); newValue.reverse(); // Now set the value to be collected @@ -98,7 +96,6 @@ public class TestTableMapReduce extends TestTableMapReduceBase { } } - @Override protected void runTestOnTable(Table table) throws IOException { Job job = null; try { http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableMapReduceBase.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableMapReduceBase.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableMapReduceBase.java index 27bf063..e78bf4f 100644 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableMapReduceBase.java +++ b/hbase-server/src/test/java/org/apache/hadoop/hbase/mapreduce/TestTableMapReduceBase.java @@ -126,7 +126,7 @@ public abstract class TestTableMapReduceBase { // Get the original value and reverse it - String originalValue = Bytes.toString(value.getValue(INPUT_FAMILY, INPUT_FAMILY)); + String originalValue = Bytes.toString(value.getValue(INPUT_FAMILY, null)); StringBuilder newValue = new StringBuilder(originalValue); newValue.reverse(); http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/DelegatingKeyValueScanner.java ---------------------------------------------------------------------- diff --git a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/DelegatingKeyValueScanner.java b/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/DelegatingKeyValueScanner.java deleted file mode 100644 index 51a2a97..0000000 --- a/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/DelegatingKeyValueScanner.java +++ /dev/null @@ -1,114 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.apache.hadoop.hbase.regionserver; - -import java.io.IOException; - -import org.apache.hadoop.hbase.Cell; -import org.apache.hadoop.hbase.client.Scan; -import org.apache.hadoop.hbase.regionserver.KeyValueScanner; -import org.apache.hadoop.hbase.regionserver.Store; - -public class DelegatingKeyValueScanner implements KeyValueScanner { - protected KeyValueScanner delegate; - - public DelegatingKeyValueScanner(KeyValueScanner delegate) { - this.delegate = delegate; - } - - @Override - public void shipped() throws IOException { - delegate.shipped(); - } - - @Override - public Cell peek() { - return delegate.peek(); - } - - @Override - public Cell next() throws IOException { - return delegate.next(); - } - - @Override - public boolean seek(Cell key) throws IOException { - return delegate.seek(key); - } - - @Override - public boolean reseek(Cell key) throws IOException { - return delegate.reseek(key); - } - - @Override - public long getScannerOrder() { - return delegate.getScannerOrder(); - } - - @Override - public void close() { - delegate.close(); - } - - @Override - public boolean shouldUseScanner(Scan scan, Store store, long oldestUnexpiredTS) { - return delegate.shouldUseScanner(scan, store, oldestUnexpiredTS); - } - - @Override - public boolean requestSeek(Cell kv, boolean forward, boolean useBloom) throws IOException { - return delegate.requestSeek(kv, forward, useBloom); - } - - @Override - public boolean realSeekDone() { - return delegate.realSeekDone(); - } - - @Override - public void enforceSeek() throws IOException { - delegate.enforceSeek(); - } - - @Override - public boolean isFileScanner() { - return delegate.isFileScanner(); - } - - @Override - public boolean backwardSeek(Cell key) throws IOException { - return delegate.backwardSeek(key); - } - - @Override - public boolean seekToPreviousRow(Cell key) throws IOException { - return delegate.seekToPreviousRow(key); - } - - @Override - public boolean seekToLastRow() throws IOException { - return delegate.seekToLastRow(); - } - - @Override - public Cell getNextIndexedKey() { - return delegate.getNextIndexedKey(); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift/HThreadedSelectorServerArgs.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift/HbaseHandlerMetricsProxy.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift/HttpAuthenticationException.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift/IncrementCoalescer.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift/IncrementCoalescerMBean.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift/TBoundedThreadPoolServer.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift/ThriftHttpServlet.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift/ThriftMetrics.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift/ThriftServer.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift/ThriftServerRunner.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift/ThriftUtilities.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift/generated/AlreadyExists.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift/generated/BatchMutation.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift/generated/ColumnDescriptor.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift/generated/Hbase.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift/generated/IOError.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift/generated/IllegalArgument.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift/generated/Mutation.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift/generated/TAppend.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift/generated/TCell.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift/generated/TColumn.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift/generated/TIncrement.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift/generated/TRegionInfo.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift/generated/TRowResult.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift/generated/TScan.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift2/ThriftHBaseServiceHandler.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift2/ThriftServer.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift2/ThriftUtilities.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift2/generated/TAppend.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift2/generated/TAuthorization.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift2/generated/TCellVisibility.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift2/generated/TColumn.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift2/generated/TColumnIncrement.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift2/generated/TColumnValue.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift2/generated/TCompareOp.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift2/generated/TDelete.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift2/generated/TDeleteType.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift2/generated/TDurability.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift2/generated/TGet.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift2/generated/THBaseService.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift2/generated/THRegionInfo.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift2/generated/THRegionLocation.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift2/generated/TIOError.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift2/generated/TIllegalArgument.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift2/generated/TIncrement.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift2/generated/TMutation.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift2/generated/TPut.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift2/generated/TResult.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift2/generated/TRowMutations.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift2/generated/TScan.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift2/generated/TServerName.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift2/generated/TTimeRange.java" ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/hbase/blob/39db0cac/"hbase-thrift\036src/main/java/org/apache/hadoop/hbase/thrift2/package.html" ----------------------------------------------------------------------
