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

Omkar Vinit Joshi updated YARN-547:
-----------------------------------

    Description: 
At present when multiple containers try to request a localized resource 
* If the resource is not present then first it is created and Resource 
Localization starts ( LocalizedResource is in DOWNLOADING state)
* Now if in this state multiple ResourceRequestEvents come in then 
ResourceLocalizationEvents are fired for all of them.

Most of the times it is not resulting into a duplicate resource download but 
there is a race condition present there. Inside ResourceLocalization (for 
public download) all the requests are added to local attempts map. If a new 
request comes in then first it is checked in this map before a new download 
starts for the same. For the current download the request will be there in the 
map. Now if a same resource request comes in then it will rejected (i.e. 
resource is getting downloaded already). However if the current download 
completes then the request will be removed from this local map. Now after this 
removal if the LocalizerRequestEvent comes in then as it is not present in 

The root cause for this is the presence of FetchResourceTransition on receiving 
ResourceRequestEvent in DOWNLOADING state.

  was:
At present when multiple containers try to request a localized resource 
1) If the resource is not present then first it is created and Resource 
Localization starts ( LocalizedResource is in DOWNLOADING state)
2) Now if in this state multiple ResourceRequestEvents come in then 
ResourceLocalizationEvents are fired for all of them.

Most of the times it is not resulting into a duplicate resource download but 
there is a race condition present there. 
Location : ResourceLocalizationService.addResource .. addition of the request 
into "attempts" in case of an event already exists.

The root cause for this is the presence of FetchResourceTransition on receiving 
ResourceRequestEvent in DOWNLOADING state.

    
> Race condition in Public Localizer may result into resource getting 
> downloaded again
> ------------------------------------------------------------------------------------
>
>                 Key: YARN-547
>                 URL: https://issues.apache.org/jira/browse/YARN-547
>             Project: Hadoop YARN
>          Issue Type: Sub-task
>            Reporter: Omkar Vinit Joshi
>            Assignee: Omkar Vinit Joshi
>         Attachments: yarn-547-20130411.1.patch, yarn-547-20130411.patch, 
> yarn-547-20130412.patch, yarn-547-20130415.patch
>
>
> At present when multiple containers try to request a localized resource 
> * If the resource is not present then first it is created and Resource 
> Localization starts ( LocalizedResource is in DOWNLOADING state)
> * Now if in this state multiple ResourceRequestEvents come in then 
> ResourceLocalizationEvents are fired for all of them.
> Most of the times it is not resulting into a duplicate resource download but 
> there is a race condition present there. Inside ResourceLocalization (for 
> public download) all the requests are added to local attempts map. If a new 
> request comes in then first it is checked in this map before a new download 
> starts for the same. For the current download the request will be there in 
> the map. Now if a same resource request comes in then it will rejected (i.e. 
> resource is getting downloaded already). However if the current download 
> completes then the request will be removed from this local map. Now after 
> this removal if the LocalizerRequestEvent comes in then as it is not present 
> in 
> The root cause for this is the presence of FetchResourceTransition on 
> receiving ResourceRequestEvent in DOWNLOADING state.

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