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

Sunil G commented on YARN-6599:
-------------------------------

Thanks [~leftnoteasy] for working on this.

Some comments/doubts from myside:

# I think {{PlacementTags}} could be part of a util class. We are trying to 
fetch app id from tags hence may be it could be renamed are placement util 
class or similar.
# {{AYS#normalizeSchedulingRequests}} could be moved to CS for now as we are 
supporting this only in CS currently.
# {{AppSchedulingInfo#addSchedulingRequests}} could avoid second for loop. I 
think {{Map<SchedulerRequestKey, SchedulingRequest> schedulingRequestMap}} is 
not needed. If we iterate on {{List<SchedulingRequest> schedulingRequests}}, 
*SchedulerRequestKey* could created for each iteration and use it internally.
# Why are we throwing exception in SingleConstraintAppPlacementAllocator 
#updatePendingAsk when requests are not NULL.
# Also i really didnt understand why we need {{private SchedulingRequest 
schedulingRequest = null;}} in SingleConstraintAppPlacementAllocator. This 
should be for all type of allocators, correct?. So do we need an abstract class 
to hold such common functionalities.
# In {{internalUpdatePendingAsk}}, could we check {{if 
(!schedulingRequest.equals(newSchedulingRequest))}} earlier in method.
# Is this correct? we set sizing multiple times here.
{code}
151           sizing.setNumAllocations(existingNumAllocations);
152     
153           // Compare two objects
154           if (!schedulingRequest.equals(newSchedulingRequest)) {
155             // Rollback #numAllocations
156             sizing.setNumAllocations(newNumAllocations);
.....
166           }
167     
168           // Rollback #numAllocations
169           sizing.setNumAllocations(newNumAllocations);
{code}
# *validateAndSetSchedulingRequest*  for loop has a continue statement. May not 
be needed.
# I think we can try to have a common evaluator to process 
PlacementConstraint.TargetExpression based on each TargetType. For any target 
type, we are trying to get *nodePartition* and *targetAllocationTags*. A typed 
evaluator could process and evaluate it based on TargetType.
# Are we supporting a case where app is changing partition for a given resource 
request? Or will be considered as a new requests and old one ll be cleared.
# For TargetType.ALLOCATION_TAG processing in validateAndSetSchedulingRequest, 
I think we can directly reject if any tag is not starting with 
{{tag.startsWith(APP_ID_TAG_PREFIX)}} ?
# Could we get appId from appInfo itself? 
{code}
379           ApplicationId appId = PlacementTags.extractApplicationIdFromTag(
380               targetTag);
{code}
# 



> Support rich placement constraints in scheduler
> -----------------------------------------------
>
>                 Key: YARN-6599
>                 URL: https://issues.apache.org/jira/browse/YARN-6599
>             Project: Hadoop YARN
>          Issue Type: Sub-task
>            Reporter: Wangda Tan
>            Assignee: Wangda Tan
>         Attachments: YARN-6599-YARN-6592.003.patch, 
> YARN-6599-YARN-6592.004.patch, YARN-6599-YARN-6592.005.patch, 
> YARN-6599-YARN-6592.006.patch, YARN-6599-YARN-6592.wip.002.patch, 
> YARN-6599.poc.001.patch
>
>




--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

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

Reply via email to