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

Daniel Roudnitsky updated HBASE-29672:
--------------------------------------
    Description: 
There is a large class of filters: 

{code:java}
RowFilter
ValueFilter
QualifierFilter
FamilyFilter
DependentColumnFilter
ColumnValueFilter
SingleColumnValueFilter
SingleColumnValueExcludeFilter
{code}

Which take a ByteArrayComparable comparator as an argument (e.g 
BinaryComparator, RegexStringComparator, BinaryComponentComparator) and apply 
the given comparator at query runtime on the server. Due to filter 
misconfiguration/data shape/comparator bugs, a comparator may throw a runtime 
exception which filters are not currently handling. In this case the runtime 
exception gets propagated all the way up the call stack, leading to an 
unexpected throwable at the RpcServer layer and a very unclear remote exception 
on the client with a very long server exception trace.   

We should handle comparison runtime exceptions and treat them as 
HBaseIOException, and propagate a clear exception message to the client. This 
will also lets us handle cases where we know that a client retry is guaranteed 
to fail and let us prevent bad requests from being excessively retried (such as 
HBASE-29654). 

  was:
There is a large class of filters: 

{code:java}
RowFilter
ValueFilter
QualifierFilter
FamilyFilter
DependentColumnFilter
ColumnValueFilter
SingleColumnValueFilter
SingleColumnValueExcludeFilter
{code}

Which take a ByteArrayComparable comparator as an argument (e.g 
BinaryComparator, RegexStringComparator, BinaryComponentComparator) and apply 
the given comparator at query runtime on the server. Due to filter 
misconfiguration/data shape/comparator bugs, a comparator may throw a runtime 
exception which filters are not currently handling which results in scan RPCs 
failing with a mysterious remote exception with a long server stack trace, with 
the client continuing to retry the failed RPC excessively until exhausting all 
retries (see HBASE-29654 for example). 

We should handle comparison runtime exceptions as non retryable , and propagate 
a clear exception message to the client. 



> Handle comparison failures during filtering gracefully
> ------------------------------------------------------
>
>                 Key: HBASE-29672
>                 URL: https://issues.apache.org/jira/browse/HBASE-29672
>             Project: HBase
>          Issue Type: Improvement
>          Components: Filters
>            Reporter: Daniel Roudnitsky
>            Assignee: Daniel Roudnitsky
>            Priority: Major
>              Labels: pull-request-available
>
> There is a large class of filters: 
> {code:java}
> RowFilter
> ValueFilter
> QualifierFilter
> FamilyFilter
> DependentColumnFilter
> ColumnValueFilter
> SingleColumnValueFilter
> SingleColumnValueExcludeFilter
> {code}
> Which take a ByteArrayComparable comparator as an argument (e.g 
> BinaryComparator, RegexStringComparator, BinaryComponentComparator) and apply 
> the given comparator at query runtime on the server. Due to filter 
> misconfiguration/data shape/comparator bugs, a comparator may throw a runtime 
> exception which filters are not currently handling. In this case the runtime 
> exception gets propagated all the way up the call stack, leading to an 
> unexpected throwable at the RpcServer layer and a very unclear remote 
> exception on the client with a very long server exception trace.   
> We should handle comparison runtime exceptions and treat them as 
> HBaseIOException, and propagate a clear exception message to the client. This 
> will also lets us handle cases where we know that a client retry is 
> guaranteed to fail and let us prevent bad requests from being excessively 
> retried (such as HBASE-29654). 



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to