[
https://issues.apache.org/jira/browse/MESOS-45?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13183500#comment-13183500
]
[email protected] commented on MESOS-45:
----------------------------------------------------
bq. On 2012-01-10 14:26:24, John Sirois wrote:
bq. > src/java/src/org/apache/mesos/Scheduler.java, line 57
bq. > <https://reviews.apache.org/r/3442/diff/1/?file=67453#file67453line57>
bq. >
bq. > There appears to be no need fo indexed access - Collection if you
want to provide size, but it seems Iterable is fine here.
bq.
bq. Matei Zaharia wrote:
bq. Going over the offers in the same order multiple times is useful in
complex schedulers -- for example, we do it in Spark. I suggest leaving it this
way, unless you want everyone to copy their Collection to a list. I can't
anticipate a scenario when it would be more efficient to use an unordered
collection here, and in other languages, such as Python, the collection will be
ordered anyway.
bq.
bq. John Sirois wrote:
bq. The comment wasn't derived from efficiency concerns - a List could
still be passed since its Iterable. I was suggesting this change as an api
maintainer - Iterable gives you more freedom going forward to change
implementation without breaking clients and your clients still get a sequence
of offers they can repeatedly iterate over. You might add extra javadoc that
says the iterators are guaranteed to be stable wrt each other, but this is
implicit for all Iterables I've encountered in java land.
bq.
bq. Matei Zaharia wrote:
bq. I realize that the comment isn't from efficiency concerns, but I'm
just saying that I can't imagine a case where the implementation would change
in a way that prevents meeting the List interface. Just to be clear, the code
I'm talking about doesn't simply want to iterate over the list multiple times
-- it wants to know the size of the list and keep some data about each machine
offered, and it does use indexes into it. For example, here's a common thing to
do: you have a list of tasks you want to launch and a list of machines offered,
and you want to spread your tasks across the machines in a round-robin manner
as long as they have enough resources. You can do something like this:
bq.
bq. memoryLeft = // int array initialized to the memory on each machine
bq. cpusLeft = // int array initialized to the CPUs on each machine
bq. while (tasksToLaunch > 0) {
bq. for (i = 0 to offers.size) {
bq. if (memoryLeft[i] >= taskMemory && cpusLeft[i] >= taskCpus) {
bq. launch a task on machine i
bq. decrease memoryLeft[i] and cpusLeft[i]
bq. }
bq. }
bq. }
bq.
bq. Basically, by not providing a List, you're losing some usability
without gaining much maintainability. I agree you shouldn't be providing an
array or something, but giving a less convenient collection type for something
that is already an ordered collection in other languages seems overly picky.
SGTM - I still don't get the need for an index since the slot an offer is in
in the List has no mesos meaning afaict, but I can buy size. And I agree with
your point that List is likely not too restrictive - I just tend to be _very_
defensive with exposed api types.
- John
-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/3442/#review4294
-----------------------------------------------------------
On 2012-01-10 06:48:03, Benjamin Hindman wrote:
bq.
bq. -----------------------------------------------------------
bq. This is an automatically generated e-mail. To reply, visit:
bq. https://reviews.apache.org/r/3442/
bq. -----------------------------------------------------------
bq.
bq. (Updated 2012-01-10 06:48:03)
bq.
bq.
bq. Review request for mesos, Andy Konwinski, Charles Reiss, Matei Zaharia,
John Sirois, and Vinod Kone.
bq.
bq.
bq. Summary
bq. -------
bq.
bq. Provides initial documentation to the public interfaces (thanks to Vinod
Kone for pairing with me on this).
bq.
bq.
bq. This addresses bug MESOS-45.
bq. https://issues.apache.org/jira/browse/MESOS-45
bq.
bq.
bq. Diffs
bq. -----
bq.
bq. include/mesos/executor.hpp d883f1a
bq. include/mesos/mesos.proto 77a9067
bq. include/mesos/scheduler.hpp 93dda98
bq. src/java/src/org/apache/mesos/Executor.java 5ad8cee
bq. src/java/src/org/apache/mesos/ExecutorDriver.java be01d21
bq. src/java/src/org/apache/mesos/MesosExecutorDriver.java 399c8b8
bq. src/java/src/org/apache/mesos/MesosSchedulerDriver.java 04809a6
bq. src/java/src/org/apache/mesos/Scheduler.java 63a06fe
bq. src/java/src/org/apache/mesos/SchedulerDriver.java 23a246c
bq. src/python/src/mesos.py 5fc60e2
bq.
bq. Diff: https://reviews.apache.org/r/3442/diff
bq.
bq.
bq. Testing
bq. -------
bq.
bq.
bq. Thanks,
bq.
bq. Benjamin
bq.
bq.
> Document semantics and state transitions in mesos user-pluggable interfaces
> ---------------------------------------------------------------------------
>
> Key: MESOS-45
> URL: https://issues.apache.org/jira/browse/MESOS-45
> Project: Mesos
> Issue Type: Improvement
> Components: c++-api, java-api, python-api
> Reporter: John Sirois
>
> In particular, scheduler and executor lifecycle and re-entrancy requirements
> should be documented well either centrally, in a HOW-TO/spec or better,
> additionally or solely in binding interfaces in the supported languages (cpp,
> java, python).
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira