[
https://issues.apache.org/jira/browse/HBASE-22274?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16836777#comment-16836777
]
Xu Cang edited comment on HBASE-22274 at 5/9/19 11:30 PM:
----------------------------------------------------------
When cell size exceeds the limit, we always throw exception like this
{code:java}
throw new DoNotRetryIOException(msg);{code}
And this will be highly likely end up in client's log.
Reading code in this class "RSRpcServices", I can see the pattern people
followed before was : we do not log client originated error or informational
messages by default. Such as this one
{code:java}
if (LOG.isDebugEnabled()) {
LOG.debug(
"Server shutting down and client tried to access missing scanner " +
scannerName);
}{code}
So, I am OK with keeping the current logging strategy for cell limit one. As
long as server rejects it, client will handle this case from his end. Open to
discuss more about this if you think otherwise, [~apurtell]
was (Author: xucang):
When cell size exceeds the limit, we always throw exception like this
{code:java}
throw new DoNotRetryIOException(msg);{code}
And this will be highly likely end up in client's log.
Reading doe in this class "RSRpcServices", I can see the pattern people
followed before was : we do not log client originated error or informational
messages by default. Such as this one
{code:java}
if (LOG.isDebugEnabled()) {
LOG.debug(
"Server shutting down and client tried to access missing scanner " +
scannerName);
}{code}
So, I am OK with keeping the current logging strategy for cell limit one. As
long as server rejects it, client will handle this case from his end. Open to
discuss more about this if you think otherwise, [~apurtell]
> Cell size limit check on append should consider cell's previous size.
> ---------------------------------------------------------------------
>
> Key: HBASE-22274
> URL: https://issues.apache.org/jira/browse/HBASE-22274
> Project: HBase
> Issue Type: Bug
> Affects Versions: 3.0.0, 2.0.0, 1.3.5
> Reporter: Xu Cang
> Assignee: Xu Cang
> Priority: Minor
> Attachments: HBASE-22274-branch-1.001.patch,
> HBASE-22274-branch-1.002.patch, HBASE-22274-branch-1.003.patch,
> HBASE-22274-branch-1.003.patch, HBASE-22274-branch-1.004.patch,
> HBASE-22274-master.001.patch, HBASE-22274-master.002.patch,
> HBASE-22274-master.002.patch, HBASE-22274-master.003.patch
>
>
> Now we have cell size limit check based on this parameter
> *hbase.server.keyvalue.maxsize*
> One case was missing: appending to a cell only take append op's cell size
> into account against this limit check. we should check against the potential
> final cell size after the append.'
> It's easy to reproduce this :
>
> Apply this diff
>
> {code:java}
> diff --git
> a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
>
> b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
> index 5a285ef6ba..8633177ebe 100644 ---
> a/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
> +++
> b/hbase-server/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
> @@ -6455,7 +6455,7
> - t.append(new Append(ROW).addColumn(FAMILY, QUALIFIER, new byte[10 *
> 1024]));
> + t.append(new Append(ROW).addColumn(FAMILY, QUALIFIER, new byte[2 * 1024]));
> {code}
>
> Fix is to add this check in #reckonDeltas in HRegion class, where we have
> already got the appended cell's size.
> Will throw DoNotRetryIOException if checks is failed.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)