Package org.apache.hadoop.hbase.client
Class TestClientScannerTimeouts
java.lang.Object
org.apache.hadoop.hbase.client.TestClientScannerTimeouts
@Tag("org.apache.hadoop.hbase.testclassification.ClientTests") @Tag("org.apache.hadoop.hbase.testclassification.LargeTests")
public class TestClientScannerTimeouts
extends Object
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionprivate static classprivate static class -
Field Summary
FieldsModifier and TypeFieldDescriptionprivate static org.apache.hadoop.hbase.client.AsyncConnectionprivate static org.apache.hadoop.hbase.client.AsyncTable<org.apache.hadoop.hbase.client.AdvancedScanResultConsumer>private static final intprivate static org.apache.hadoop.hbase.client.Connectionprivate static final byte[]private static final org.slf4j.Loggerprivate static final intprivate static final byte[]private static final byte[]private static final byte[]private static final byte[]private static final byte[]private static final intprivate static final intprivate static org.apache.hadoop.hbase.client.Tableprivate static final HBaseTestingUtilprivate static final byte[] -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprivate voidexpectNumTries(int expected) private voidexpectRetryOutOfOrderScannerNext(Supplier<org.apache.hadoop.hbase.client.ResultScanner> scannerSupplier, org.junit.jupiter.api.TestInfo testInfo) private voidexpectRow(byte[] expected, org.apache.hadoop.hbase.client.Result result) private voidexpectTimeout(long start, int timeout) private voidexpectTimeoutOnNext(int timeout, Supplier<org.apache.hadoop.hbase.client.ResultScanner> scannerSupplier) private voidexpectTimeoutOnOpenScanner(int timeout, Supplier<org.apache.hadoop.hbase.client.ResultScanner> scannerSupplier) private org.apache.hadoop.hbase.client.ResultScannerprivate org.apache.hadoop.hbase.client.ResultScannerprivate voidputToTable(org.apache.hadoop.hbase.client.Table ht, byte[] rowkey) voidsetup(boolean isSystemTable, org.junit.jupiter.api.TestInfo testInfo) static voidstatic voidvoidtestMetaScanTimeoutOnNext(org.junit.jupiter.api.TestInfo testInfo) verify that we honorConnectionConfiguration.HBASE_CLIENT_META_SCANNER_TIMEOUTfor next() calls in meta scansvoidtestMetaScanTimeoutOnNextAsync(org.junit.jupiter.api.TestInfo testInfo) AsyncTable version of abovevoidtestMetaScanTimeoutOnOpenScanner(org.junit.jupiter.api.TestInfo testInfo) verify that we honorConnectionConfiguration.HBASE_CLIENT_META_READ_RPC_TIMEOUT_KEYfor openScanner() calls for meta scansvoidtestMetaScanTimeoutOnOpenScannerAsync(org.junit.jupiter.api.TestInfo testInfo) AsyncTable version of abovevoidtestNormalScanTimeoutOnNext(org.junit.jupiter.api.TestInfo testInfo) verify that we honor theHConstants.HBASE_CLIENT_SCANNER_TIMEOUT_PERIODfor normal scans.voidtestNormalScanTimeoutOnNextAsync(org.junit.jupiter.api.TestInfo testInfo) AsyncTable version of abovevoidtestNormalScanTimeoutOnOpenScanner(org.junit.jupiter.api.TestInfo testInfo) verify that we honorHConstants.HBASE_RPC_READ_TIMEOUT_KEYfor openScanner() calls for meta scansvoidtestNormalScanTimeoutOnOpenScannerAsync(org.junit.jupiter.api.TestInfo testInfo) AsyncTable version of abovevoidtestRetryOutOfOrderScannerNextException(org.junit.jupiter.api.TestInfo testInfo) verify that we don't miss any data when encountering an OutOfOrderScannerNextException.voidtestRetryOutOfOrderScannerNextExceptionAsync(org.junit.jupiter.api.TestInfo testInfo) AsyncTable version of above
-
Field Details
-
LOG
-
TEST_UTIL
-
ASYNC_CONN
-
CONN
-
FAMILY
-
QUALIFIER
-
VALUE
-
ROW0
-
ROW1
-
ROW2
-
ROW3
-
rpcTimeout
- See Also:
-
scanTimeout
- See Also:
-
metaScanTimeout
- See Also:
-
CLIENT_RETRIES_NUMBER
- See Also:
-
table
-
asyncTable
private static org.apache.hadoop.hbase.client.AsyncTable<org.apache.hadoop.hbase.client.AdvancedScanResultConsumer> asyncTable
-
-
Constructor Details
-
TestClientScannerTimeouts
public TestClientScannerTimeouts()
-
-
Method Details
-
setUpBeforeClass
- Throws:
Exception
-
tearDownAfterClass
- Throws:
Exception
-
setup
public void setup(boolean isSystemTable, org.junit.jupiter.api.TestInfo testInfo) throws IOException - Throws:
IOException
-
expectRow
-
expectNumTries
-
testRetryOutOfOrderScannerNextException
@Test public void testRetryOutOfOrderScannerNextException(org.junit.jupiter.api.TestInfo testInfo) throws IOException verify that we don't miss any data when encountering an OutOfOrderScannerNextException. Typically, the only way to naturally trigger this is if a client-side timeout causes an erroneous next() call. This is relatively hard to do these days because the server attempts to always return before the timeout. In this test we force the server to throw this exception, so that we can test the retry logic appropriately.- Throws:
IOException
-
testRetryOutOfOrderScannerNextExceptionAsync
@Test public void testRetryOutOfOrderScannerNextExceptionAsync(org.junit.jupiter.api.TestInfo testInfo) throws IOException AsyncTable version of above- Throws:
IOException
-
testNormalScanTimeoutOnNext
@Test public void testNormalScanTimeoutOnNext(org.junit.jupiter.api.TestInfo testInfo) throws IOException verify that we honor theHConstants.HBASE_CLIENT_SCANNER_TIMEOUT_PERIODfor normal scans.- Throws:
IOException
-
testNormalScanTimeoutOnNextAsync
@Test public void testNormalScanTimeoutOnNextAsync(org.junit.jupiter.api.TestInfo testInfo) throws IOException AsyncTable version of above- Throws:
IOException
-
testNormalScanTimeoutOnOpenScanner
@Test public void testNormalScanTimeoutOnOpenScanner(org.junit.jupiter.api.TestInfo testInfo) throws IOException verify that we honorHConstants.HBASE_RPC_READ_TIMEOUT_KEYfor openScanner() calls for meta scans- Throws:
IOException
-
testNormalScanTimeoutOnOpenScannerAsync
@Test public void testNormalScanTimeoutOnOpenScannerAsync(org.junit.jupiter.api.TestInfo testInfo) throws IOException AsyncTable version of above- Throws:
IOException
-
testMetaScanTimeoutOnNext
@Test public void testMetaScanTimeoutOnNext(org.junit.jupiter.api.TestInfo testInfo) throws IOException verify that we honorConnectionConfiguration.HBASE_CLIENT_META_SCANNER_TIMEOUTfor next() calls in meta scans- Throws:
IOException
-
testMetaScanTimeoutOnNextAsync
@Test public void testMetaScanTimeoutOnNextAsync(org.junit.jupiter.api.TestInfo testInfo) throws IOException AsyncTable version of above- Throws:
IOException
-
testMetaScanTimeoutOnOpenScanner
@Test public void testMetaScanTimeoutOnOpenScanner(org.junit.jupiter.api.TestInfo testInfo) throws IOException verify that we honorConnectionConfiguration.HBASE_CLIENT_META_READ_RPC_TIMEOUT_KEYfor openScanner() calls for meta scans- Throws:
IOException
-
testMetaScanTimeoutOnOpenScannerAsync
@Test public void testMetaScanTimeoutOnOpenScannerAsync(org.junit.jupiter.api.TestInfo testInfo) throws IOException AsyncTable version of above- Throws:
IOException
-
expectRetryOutOfOrderScannerNext
private void expectRetryOutOfOrderScannerNext(Supplier<org.apache.hadoop.hbase.client.ResultScanner> scannerSupplier, org.junit.jupiter.api.TestInfo testInfo) throws IOException - Throws:
IOException
-
expectTimeoutOnNext
private void expectTimeoutOnNext(int timeout, Supplier<org.apache.hadoop.hbase.client.ResultScanner> scannerSupplier) throws IOException - Throws:
IOException
-
expectTimeoutOnOpenScanner
private void expectTimeoutOnOpenScanner(int timeout, Supplier<org.apache.hadoop.hbase.client.ResultScanner> scannerSupplier) throws IOException - Throws:
IOException
-
expectTimeout
-
getScanner
-
getAsyncScanner
-
putToTable
- Throws:
IOException
-