Updated: (HADOOP-601) we need some rpc retry framework

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Updated: (HADOOP-601) we need some rpc retry framework

JIRA jira@apache.org

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

Johan Oskarson updated HADOOP-601:
----------------------------------

    Affects Version/s:     (was: 0.7.2)
                       0.11.2
               Status: Patch Available  (was: Open)

Created a draft patch to solve this issue more or less as suggested by Owen.

I left out the Try option (try once, no exception) since it's not possible to return null if the proxied method has a primitive return value.

This patch just contains the annotations and retry bits, I'm going to leave it up to someone with more intimate knowledge of hadoop to decide what retry policy goes where.

Suggestions and corrections welcome.

Example usage:
@RpcReliability(RetryPolicy.FOREVER)
public void doSomething() throws IOException;

@RpcReliability(RetryPolicy.TRY_NOTIFY)
public void doSomething() throws IOException;

@RpcReliability(value=RetryPolicy.TIMED, timedDelaySecs=5, timedTrySecs=30)
public int doSomething() throws IOException;

@RpcReliability(value=RetryPolicy.TIMED, timedDelaySecs=5, timedTrySecs=30,
        handlers={@ErrorHandler(err=SocketTimeoutException.class, response=RetryPolicy.FOREVER),
                    @ErrorHandler(err=NullPointerException.class, response=RetryPolicy.TRY_NOTIFY)})
public int doSomething() throws IOException;

> we need some rpc retry framework
> --------------------------------
>
>                 Key: HADOOP-601
>                 URL: https://issues.apache.org/jira/browse/HADOOP-601
>             Project: Hadoop
>          Issue Type: Improvement
>          Components: ipc
>    Affects Versions: 0.11.2
>            Reporter: Owen O'Malley
>         Assigned To: Owen O'Malley
>         Attachments: HADOOP-601-v1.patch, HADOOP-601-v1.patch
>
>
> We need some mechanism for RPC calls that get exceptions to automatically retry the call under certain circumstances. In particular, we often end up with calls to rpcs being wrapped with retry loops for timeouts. We should be able to make a retrying proxy that will call the rpc and retry in some circumstances.

--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.