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

Jason Lowe commented on YARN-707:
---------------------------------

Thanks for the review, Daryn.

bq. Technically you should be bumping the token ident's version number and 
using that to determine if the app submitter is in the ident. Otherwise, 
decoding of prior tokens will attempt to read the missing app submitter from 
the next serialized object and eventually fail spectacularly.

Talked with [~daryn] offline, there isn't a version ID in the token to bump.  
Will file a followup JIRA.  I do not know how to avoid the issue with the 
deserialization of the old format given there is no way to detect it.

bq. Using checks on UserGroupInformation.isSecurityEnabled() here and elsewhere 
will cause future incompatibility to require tokens w/o security which is the 
direction yarn has been moving in. It would be better to check if the secret 
manager is not null.

Filed YARN-1108 to track the change where we always require client AM tokens.  
I'd rather not make that change as part of this JIRA.  Given that there is 
always a client-to-AM secret manager even when security is not enabled, I'd 
rather defer that change to YARN-1108.

bq. It's just logging if it cannot create a token? This shouldn't happen, but 
if/when it does it's going to lead to more difficult after the fact errors in 
the client. It's unfortunate you cannot throw the checked exception 
IOException, so I think you need to change the method signature or throw 
whatever you can, like a YarnException, to fail the request.

I had it log a message since that's what the existing code already does below 
in the same method when it cannot determine the current user.  There are 
already other, legitimate scenarios in which the client will not receive an AM 
token (i.e.: it does not have VIEW_JOB access), and the client will not 
necessarily want to connect to the AM even if it does have access.  It could be 
getting the report just to track the app at a high level, and I thought it was 
a bit extreme to fail the entire request just because a small part of it that 
may not even be used by the client cannot be generated. If others feel this 
should be fatal to the request, I can be convinced to change it.

bq. App attempting storing/restoring appears asymmetric. Storing saves off the 
whole credentials in the attempt, whereas restoring appears to just pluck out 
the amrm token and the new persisted secret?

The Credentials are just a bag to hold the token and key, so it fills out an 
empty one with those two items and plucks those two back out when it gets the 
bag of stuff back.  The Credentials is just a transport mechanism in the code.  
I agree it's a bit odd that the RMAppAttemptImpl does some of this work and 
RMStateStore does the other, but I'm just preserving the existing architecture. 
 Changing that is outside the scope of this JIRA, IMHO.

bq. Methods using the term "Token", ex. recoverAppAttemptTokens and 
getTokensFromAppAttempt are misleading since it's "Credentials"

Given that it used to be just tokens before this change, I'll change "Tokens" 
to "Credentials" in methods to better reflect what was going on.

bq. AM_CLIENT_TOKEN_MASTER_KEY_NAME is better defined in RMAppAttempt, rather 
than in the RMStateStore.

I put it in RMStateStore since that's where AM_RM_TOKEN_SERVICE already existed 
and it's a similar concept -- naming something that needs to be stored.  I'll 
move this to RMAppAttemptImpl if others feel that's a better place for it.
                
> Add user info in the YARN ClientToken
> -------------------------------------
>
>                 Key: YARN-707
>                 URL: https://issues.apache.org/jira/browse/YARN-707
>             Project: Hadoop YARN
>          Issue Type: Improvement
>            Reporter: Bikas Saha
>            Assignee: Jason Lowe
>            Priority: Blocker
>             Fix For: 3.0.0, 2.1.1-beta
>
>         Attachments: YARN-707-20130822.txt, YARN-707-20130827.txt
>
>
> If user info is present in the client token then it can be used to do limited 
> authz in the AM.

--
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

Reply via email to