[ https://issues.apache.org/jira/browse/YARN-3318?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14486312#comment-14486312 ]
Craig Welch commented on YARN-3318: ----------------------------------- bq. 1) Regarding OrderingPolicy and SchedulingOrder responsibilities: Scheduling order has multiple purposes, including: 1. Housing supporting code for using policies common across schedulers, e.g. a common implementation of behavior 2. Allowing for the composition of multiple policies together to accomplish desired queue behavior - it is awkward to factor the functionality in SchedulingOrder down into the policies, as multiple policies are in play for one instance of the logic in SchedulingOrder Although I mentioned that it could be made abstract some day if needed, that's not it's current purpose, the above are. bq. ...Looking at methods of OrderingPolicy, most of them are just pass through parameters to OrderingPolicy, and rest of them are instantiation OrderingPolicies... Well, no, it has quite a lot of implementation logic around managing the SchedulerProcess collection and the interactions between it and multiple policies, it is certainly not limited to Factory operations bq. OrderingPolicy should be a per-queue instance or global library OrderingPolicies are per-queue and stateful in terms of configuration specific to that queue configuration. For the reasons mentioned above regarding the composition of policies, they do not (and should not) maintain queue state (scheduler processes, etc). bq. Suggestion about OrderingPolicy interface design (if you agree with 1/2): I don't agree, so skipping the section. The essential thing that I think is being missed here is that there is an intentional desire to compose ordering policies for a queue to achieve behavior - so priority + fifo, or fair + fifo, etc, and for that reason it is not appropriate to place the management of the collection of processes shared amongst policies into the policy implementation - it belongs outside, as it is today, in SchedulingOrder. Mixing these together defeats composition and also mixes concerns, making the code more (not less) complex and certainly less clean in terms of separation of concern and overall design and flow. bq. ...CompoundOrderingPolicy is implemenation detail for FairOrderingPolicy, don't need put in the patch... Not is isn't, it's a feature of the generalized framework to support multiple policies being composed for a queue, it's not specific to fairness at all (fairness may be the first user, but so might priority - in any case, any set of policies may use it, it's not specific to any one of them, and therefore is framework...) bq. ...About spliting SchedulableProcess to App and Queue... I stand by my earlier explanation (and don't see anything here which alters it...), I anticipate that with the current factoring of SchedulerProcess we won't have to subtype it to support Queues. That said, the right time to do that is when we are adding such support, "anticipatory complexity" is the worst kind. It is factored such that adding the subtyping should be additive if it needs to happen, so there is no need to anticipate it now (the room is there to add it, which is all we need. We should wait to add it until we know we need it). bq. ...As I mentioned before, use ResourceUsage is much better... As I mentioned before, it doesn't presently supply the needed functionality, when it does we can convert to it. > Create Initial OrderingPolicy Framework and FifoOrderingPolicy > -------------------------------------------------------------- > > Key: YARN-3318 > URL: https://issues.apache.org/jira/browse/YARN-3318 > Project: Hadoop YARN > Issue Type: Sub-task > Components: scheduler > Reporter: Craig Welch > Assignee: Craig Welch > Attachments: YARN-3318.13.patch, YARN-3318.14.patch, > YARN-3318.17.patch, YARN-3318.34.patch, YARN-3318.35.patch, > YARN-3318.36.patch, YARN-3318.39.patch, YARN-3318.45.patch, > YARN-3318.47.patch, YARN-3318.48.patch > > > Create the initial framework required for using OrderingPolicies and an > initial FifoOrderingPolicy -- This message was sent by Atlassian JIRA (v6.3.4#6332)