[
https://issues.apache.org/jira/browse/YARN-9610?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Morty Zhong updated YARN-9610:
------------------------------
Attachment: YARN-9610.patch.2
> HeartbeatCallBack int FederationInterceptor clear AMRMToken in response from
> UAM should before add to aysncResponseSink
> ------------------------------------------------------------------------------------------------------------------------
>
> Key: YARN-9610
> URL: https://issues.apache.org/jira/browse/YARN-9610
> Project: Hadoop YARN
> Issue Type: Bug
> Components: amrmproxy, federation
> Affects Versions: 3.2.0
> Reporter: Morty Zhong
> Priority: Major
> Attachments: YARN-9610.patch.1, YARN-9610.patch.2
>
>
> in federation, `allocate` is async. the response from RM is cached in
> `asyncResponseSink`.
> the final allocate response is merged from all RMs allocate response. merge
> will throw exception when AMRMToken from UAM response is not null.
> But set AMRMToken from UAM response to null is not in the scope of lock. so
> there will be a change merge see that AMRMToken from UAM response is not
> null.
> so we should clear the token before add response to asyncResponseSink
>
>
> {code:java}
> synchronized (asyncResponseSink) {
> List<AllocateResponse> responses = null;
> if (asyncResponseSink.containsKey(subClusterId)) {
> responses = asyncResponseSink.get(subClusterId);
> } else {
> responses = new ArrayList<>();
> asyncResponseSink.put(subClusterId, responses);
> }
> responses.add(response);
> // Notify main thread about the response arrival
> asyncResponseSink.notifyAll();
> }
> ...
> if (this.isUAM && response.getAMRMToken() != null) {
> Token<AMRMTokenIdentifier> newToken = ConverterUtils
> .convertFromYarn(response.getAMRMToken(), (Text) null);
> // Do not further propagate the new amrmToken for UAM
> response.setAMRMToken(null);
> ...{code}
--
This message was sent by Atlassian JIRA
(v7.6.14#76016)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]