You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@hbase.apache.org by "Duo Zhang (Jira)" <ji...@apache.org> on 2020/07/27 01:03:00 UTC

[jira] [Resolved] (HBASE-23620) KeyPrefixRegionSplitPolicy may cause split to fail when specified prefix length is short enough that resulting split point ends up with same value of the parent start key.

     [ https://issues.apache.org/jira/browse/HBASE-23620?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Duo Zhang resolved HBASE-23620.
-------------------------------
    Resolution: Won't Fix

As discussed on the PR, the reason why we can not split a region with KeyPrefixRegionSplitPolicy is becase of an assumption in KeyPrefixRegionSplitPolicy. User should use other split policy if the assumption is not important but we can not remove the assumption from KeyPrefixRegionSplitPolicy.

> KeyPrefixRegionSplitPolicy may cause split to fail when specified prefix length is short enough that resulting split point ends up with same value of the parent start key.
> ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HBASE-23620
>                 URL: https://issues.apache.org/jira/browse/HBASE-23620
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Wellington Chevreuil
>            Assignee: Wellington Chevreuil
>            Priority: Major
>
> This was found by [~rmaruthiyodan] while analysing a problem reported by one of our customers. In this specific case, customer application was defined a prefix length of four, and row key value range was such that the four bytes prefix was too short to fit in one single region, causing splits to fail. Quoting [~rmaruthiyodan] findings:
> {noformat}
> 2019-12-18 00:25:38,469 INFO [regionserver/regionserver1:17020-splits-1576627813051] regionserver.HRegionServer: TRANSITION FAILED server {
> host_name: "regionserver1.customer.com"
> port: 17020
> start_code: 1576627748865
> }
> transition {
> transition_code: READY_TO_SPLIT
> region_info {
> region_id: 1560309299563
> table_name
> { namespace: "default" qualifier: "mycustomertable" }
> start_key: "abcd"
> end_key: "i"
> offline: false
> split: false
> replica_id: 0
> }
> region_info {
> region_id: 1576628738437
> table_name
> { namespace: "default" qualifier: "mycustomertable" }
> start_key: "abcd"
> end_key: "abcd"
> offline: false
> split: false
> replica_id: 0
> }
> region_info {
> region_id: 1576628738437
> table_name
> { namespace: "default" qualifier: "mycustomertable" }
> start_key: "abcd"
> end_key: "i"
> offline: false
> split: false
> replica_id: 0
> }
> }
> : Failed transition Split row is equal to startkey: abcd
> 2019-12-18 00:25:38,469 ERROR [regionserver/regionserver1:17020-splits-1576627813051] regionserver.SplitRequest: Unable to ask master to split mycustomertable,abcd,1560309299563.ff6bd99e3a9a6927c6858e3c520b0367.
> {noformat}
> I'm proposing an initial PR that double checks if the resulting split point sub array is same as the start key, then increment the length of the sub array.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)