hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sergey Shelukhin (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-8036) ProtobufUtil.multi behavior is inconsistent in case of errors
Date Tue, 12 Mar 2013 17:55:19 GMT

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

Sergey Shelukhin commented on HBASE-8036:
-----------------------------------------

bq. +                hci.updateCachedLocations(tableName, row, null, currentTask.getSecond());
I am not sure updateCachedLocations expects null now.

{code}
           for (int i = 0, n = results.size(); i < n; i++) {
             int originalIndex = actions.get(i).getOriginalIndex();
             response.add(regionName, originalIndex, results.get(i));
           }
+        } catch (ServiceException se) {
+          for (int i = 0, n = actions.size(); i < n; i++) {
+           response.add(regionName, actions.get(i).getOriginalIndex(), getRemoteException(se));
+          }
{code}
Loop could be moved to one place.

bq. +    Assert.assertFalse(curServer.getServerName().equals(destServer.getServerName()));
bq. +    Assert.assertFalse( toMove.getPort() == destServerName.getPort());
assertEquals could be used.

Much simpler test is possible by supplying mock client to multi, although I guess that wouldn't
test serialization of RME.

                
> ProtobufUtil.multi behavior is inconsistent in case of errors
> -------------------------------------------------------------
>
>                 Key: HBASE-8036
>                 URL: https://issues.apache.org/jira/browse/HBASE-8036
>             Project: HBase
>          Issue Type: Bug
>    Affects Versions: 0.95.0
>            Reporter: Sergey Shelukhin
>            Assignee: Enis Soztutar
>            Priority: Blocker
>             Fix For: 0.95.0
>
>         Attachments: hbase-8036_v1.patch, hbase-8036_v2.patch
>
>
> ProtobufUtil splits operations by regions and performs multiple client.multi calls. In
case if there are certain errors inside RS, HRegionServer adds the corresponding exceptions
to MultiResponse, PU continues the multi request for other regions, and returns partial failure.

> In case of other errors (for example, region not served exception), the entire multi
operation stops executing, and previous successes and partial results are disregarded.
> ProtobufUtil should probably catch ServiceException separately for each client.multi
call, make it a partial-failure exception for all actions for this region, and also continue
the batch, to make the behavior consistent.
> Alternatively, if we want to avoid continuing the batch in case of some server-wide errors/connection
problems/etc., server should do that for region-specific errors (add exception to results
for each action).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message