[ 
https://issues.apache.org/jira/browse/HBASE-18043?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16009395#comment-16009395
 ] 

Andrew Purtell edited comment on HBASE-18043 at 5/13/17 4:16 PM:
-----------------------------------------------------------------

bq. Do we have some checks before accepting RPC requests itself on the size?

As I said the check is on the client side first, and this is best, because 
rejecting the RPC after we receive it is expensive. However we cannot fully 
trust the client so still need enforcement on the server. I have placed the 
checks on the server side at points in the code where it seems least expensive 
to make them, right where we convert the PB representation into the on heap 
object. Whether to do this before conversion from PB to object or after, I 
looked at how much code it would add. We don't have code that walks over all 
the different PBs and looks at the size of each cell (or if we do I didn't see 
it -please advise) but we do have code that can walk a Mutation and do this, 
the CellScanner and so on. The oversize cell case is expected to be the 
abnormal case because there is still a client side check in place, so it seems 
ok to do it this way for the sake of minimizing new code/complexity.


was (Author: apurtell):
bq. Do we have some checks before accepting RPC requests itself on the size?

As I said the check is on the client side first, and this is best, because 
rejecting the RPC after we receive it is expensive. However we cannot fully 
trust the client so still need enforcement on the server. I have placed the 
checks on the server side at points in the code where it seems least expensive 
to make them, right where we convert the PB representation into the on heap 
object. Whether to do this before conversion, I looked at how much code it 
would add. We don't have code that walks over all the different PBs and looks 
at the size of each cell (or if we do I didn't see it -please advise) but we do 
have code that can walk a Mutation and do this, the CellScanner and so on. The 
oversize cell case is expected to be the abnormal case because there is still a 
client side check in place, so it seems ok to do it this way for the sake of 
minimizing new code/complexity.

> Institute a hard limit for individual cell size that cannot be overridden by 
> clients
> ------------------------------------------------------------------------------------
>
>                 Key: HBASE-18043
>                 URL: https://issues.apache.org/jira/browse/HBASE-18043
>             Project: HBase
>          Issue Type: Improvement
>          Components: IPC/RPC, regionserver
>    Affects Versions: 2.0.0
>            Reporter: Andrew Purtell
>            Assignee: Andrew Purtell
>             Fix For: 2.0.0, 1.4.0
>
>         Attachments: HBASE-18043-branch-1.patch, HBASE-18043-branch-1.patch, 
> HBASE-18043.patch, HBASE-18043.patch
>
>
> For sake of service protection we should not give absolute trust to clients 
> regarding resource limits that can impact stability, like cell size limits. 
> We should add a server side configuration that sets a hard limit for 
> individual cell size that cannot be overridden by the client. We can keep the 
> client side check, because it's expensive to reject a RPC that has already 
> come in. 



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to