[master] Let HConnectionManager regard non-IOException as not retriable exceptions and bail out internal retry loop

Author: fan

Summary: Per request by @jiqingt

Test Plan: doitlive

Reviewers: jiqingt, liyintang

Reviewed By: liyintang

CC: HBase Eng@

Differential Revision: https://phabricator.fb.com/D1141003

Task ID: 3574332

git-svn-id: https://svn.apache.org/repos/asf/hbase/branches/0.89-fb@1567260 13f79535-47bb-0310-9956-ffa450edef68
[HBASE-10342] RowKey Prefix Bloom Filter

Author: liyintang

Summary:
When designing HBase schema for some use cases, it is quite common to combine multiple information within a RowKey. For instance, assuming that RowKey is defined as md5(id1) + id1 + id2, and user wants to scan all the RowKeys which starting by id1. In such case, the RowKey Prefix Bloom Filter is able to cut more unnecessary seeks during the scan.

This diff is to implement the RowKey Prefix Bloom Filter in HBase. And the user could define the length of the RowKey prefix through the HTable schema.

Test Plan: Run through all the unit tests

Reviewers: manukranthk, adela

Reviewed By: manukranthk

CC: hbase-dev@, hbase-eng@, arice, daviddeng

Differential Revision: https://phabricator.fb.com/D1141078

Task ID: 3548019

git-svn-id: https://svn.apache.org/repos/asf/hbase/branches/0.89-fb@1567261 13f79535-47bb-0310-9956-ffa450edef68
[HBASE-10027] Removing serde of derivable variables in CompoundRowPrefixFilter.

Author: manukranthk

Summary: Removes serde of currentRowPrefix, done, and currentPrefixIndex since they are derrivable variables.

Test Plan: Run TestCompoundRowPrefixFilter.

Reviewers: liyintang, adela

Reviewed By: liyintang

CC: hbase-eng@

Differential Revision: https://phabricator.fb.com/D1147032

Task ID: 3548003

git-svn-id: https://svn.apache.org/repos/asf/hbase/branches/0.89-fb@1567263 13f79535-47bb-0310-9956-ffa450edef68
[HBASE-10437] Adding interface change to Filter to incorporate Bloom filter optimizations via the filter.

Author: manukranthk

Summary: Adding the changes to Filter which can be used to incorporate the bloom filter optimizations into the CompoundRowPrefixFilter.

Test Plan: Interface addition.

Reviewers: liyintang

Reviewed By: liyintang

CC: hbase-eng@, adela

Differential Revision: https://phabricator.fb.com/D1140460

Task ID: 3548003

git-svn-id: https://svn.apache.org/repos/asf/hbase/branches/0.89-fb@1567264 13f79535-47bb-0310-9956-ffa450edef68
[HBASE-10450] Java change for "Add Scanner::setMinTimestamp"

Author: daviddeng

Summary:
Add TScan.minTimestamp in thrift file
Recompile the thrift
Change calling to Scan.setTimeRange in HBaseHandler.scannerOpenWithScan

Test Plan:
TestThriftServer

Reviewers: gauravm, manukranthk, liyintang, aaiyer, adela

Reviewed By: liyintang

CC: hbase-eng@, khadkevich

Differential Revision: https://phabricator.fb.com/D1152248

Task ID: 3609535

git-svn-id: https://svn.apache.org/repos/asf/hbase/branches/0.89-fb@1567265 13f79535-47bb-0310-9956-ffa450edef68
[HBASE-10360] Auto initialized all the HRegionLocations even though the forceFetch is false.

Author: liyintang

Summary:
The HTable.getCachedHRegionLocations(false) only returns all the cached HRegionLocations based on the original design. Per discussions with Calypso team, we decided to enhance the API so that even though the forceFetch is set as false, if the HRegionLocations for that table has not been initialized yet, it will fetch all the HRegionLocations from the META table.

This enhancement has been implemented in HConnectionManager instead of HTable layer. Therefore, multiple HTable instances for the same table could share this "initialized" state.

Test Plan: TestHTable

Reviewers: manukranthk

Reviewed By: manukranthk

CC: hbase-dev@

Differential Revision: https://phabricator.fb.com/D1157181

git-svn-id: https://svn.apache.org/repos/asf/hbase/branches/0.89-fb@1567266 13f79535-47bb-0310-9956-ffa450edef68
[0.89-fb][HBASE-10425] Hacky way to create a table on specified subset of machines

Author: adela

Summary: should not affect existing code

Test Plan: added unit test: TestHackyCreateTable; ran TestAdmin too - nothing is ruined

Reviewers: liyintang, manukranthk, aaiyer, gauravm

Reviewed By: liyintang

CC: hbase-eng@

Differential Revision: https://phabricator.fb.com/D1151470

Task ID: 3610285

git-svn-id: https://svn.apache.org/repos/asf/hbase/branches/0.89-fb@1567267 13f79535-47bb-0310-9956-ffa450edef68
[HBASE-10027] Bug Fix : The CompoundRowPrefixFilter needs to sort the prefixes before we initialize the state.

Author: manukranthk

Summary: The filter state needs to be set after the list of prefixes are sorted. This avoids any possible errors.

Test Plan: Run TestCompoundRowPrefixFilter.

Reviewers: adela, liyintang

Reviewed By: liyintang

CC: hbase-eng@

Differential Revision: https://phabricator.fb.com/D1158146

git-svn-id: https://svn.apache.org/repos/asf/hbase/branches/0.89-fb@1567268 13f79535-47bb-0310-9956-ffa450edef68
[master] Let HRegion get correct flushable size from each Store

Author: fan

Summary:
Current calculation of flushable size in HRegion is wrong when previous flush attempt fails. The bug messes up HRegion's total memstore size, which leads to a very serious data loss for all data in memstore(s) when region is closing.
This fix corrects the size change after flush succeeds.

Test Plan: TBD

Reviewers: aaiyer, liyintang, jiqingt

Reviewed By: jiqingt

CC: HBase Eng@, hbase-dev@, manukranthk

Differential Revision: https://phabricator.fb.com/D1158429

Task ID: 3621385

git-svn-id: https://svn.apache.org/repos/asf/hbase/branches/0.89-fb@1567269 13f79535-47bb-0310-9956-ffa450edef68
[HBASE-10502] ParallelScanner: a client utility to perform multiple scan request in parallel.

Author: liyintang

Summary:
ParallelScanner is a utility class for the HBase client to perform multiple scan requests in parallel. It requires all the scan requests having the same caching size for the simplicity purpose.

This class provides 3 very basic functionalities: {@link #initialize()}, {@link #next()},  {@link #close()}.
* The initialize function will Initialize all the ResultScanners by calling {@link HTable#getScanner(Scan)} in parallel for each scan request.
* The next function will call the corresponding {@link ResultScanner#next(int numRows)} from each scan request in parallel, and then return all the results together as a list.  Also, if result list is empty, it indicates there is no data left for all the scanners and the user can call {@link #close()} afterwards.
* The close function will close all the scanners and shutdown the thread pool.

Also, this diff includes a unit test, TestParallelScanner, to cover the functionalities of ParallelScanner.

Test Plan: Run through all the scan related unit tests and TestParallelScanner

Reviewers: manukranthk

Reviewed By: manukranthk

CC: hbase-dev@, daviddeng

Differential Revision: https://phabricator.fb.com/D1167268

git-svn-id: https://svn.apache.org/repos/asf/hbase/branches/0.89-fb@1567270 13f79535-47bb-0310-9956-ffa450edef68