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

Mingliang Liu commented on HADOOP-14443:
----------------------------------------

I will review this one shortly.

Early minor comments:
# Can you make the @Override annotation in a separate line?
# The URI build code like following, can we make sure the parameters such as 
{{op}}, {{renewer}} and {{service}} constant?
{code}
106       @Override public Token<DelegationTokenIdentifier> getDelegationToken(
107           String renewer) throws IOException {
108         URIBuilder uriBuilder =
109             new 
URIBuilder().setPath(DEFAULT_DELEGATION_TOKEN_MANAGER_ENDPOINT)
110                 .addParameter("op", GET_DELEGATION_TOKEN_OP)
111                 .addParameter("renewer", renewer)
112                 .addParameter("service", WASB_DT_SERVICE_NAME.toString());
113         String responseBody = remoteCallHelper
114             .makeRemoteRequest(dtServiceUrls, uriBuilder.getPath(),
115                 uriBuilder.getQueryParams(), HttpGet.METHOD_NAME);
116         return TokenUtils.toDelegationToken(JsonUtils.parse(responseBody));
117       }
{code}
# Do we need configurable retry policy? I'm not sure about this.
# In {{WasbRemoteCallHelper::shouldRetry()}}, I think we may need to 
self-interrupt and return in case of InterruptedException for the 
{{Thread.sleep(a.delayMillis)}}. Currently we throw {{WasbRemoteCallException}} 
which may be too strict.
# This is a large patch. I'd appreciate if you can separate the code 
refactoring work for tokens from the retry logic. That will speed up the review 
and commit progress.

Thanks,

> Azure: Add retry and client side failover for authorization, SASKey 
> generation and delegation token generation requests to remote service
> -----------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HADOOP-14443
>                 URL: https://issues.apache.org/jira/browse/HADOOP-14443
>             Project: Hadoop Common
>          Issue Type: Improvement
>          Components: fs/azure
>    Affects Versions: 2.9.0
>            Reporter: Santhosh G Nayak
>            Assignee: Santhosh G Nayak
>             Fix For: 2.9.0, 3.0.0-alpha4
>
>         Attachments: HADOOP-14443.1.patch, HADOOP-14443.2.patch
>
>
> Currently, {{WasRemoteCallHelper}} can be configured to talk to only one URL 
> for authorization, SASKey generation and delegation token generation. If for 
> some reason the service is down, all the requests will fail.
> So proposal is to,
> - Add support to configure multiple URLs, so that if communication to one URL 
> fails, client can retry on another instance of the service running on 
> different node for authorization, SASKey generation and delegation token 
> generation. 
> - Rename the configurations {{fs.azure.authorization.remote.service.url}} to 
> {{fs.azure.authorization.remote.service.urls}} and 
> {{fs.azure.cred.service.url}} to {{fs.azure.cred.service.urls}} to support 
> the comma separated list of URLs.
> Introduce a new configuration {{fs.azure.delegation.token.service.urls}} to 
> configure the comma separated list of service URLs to get the delegation 
> token.



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

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to