You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mesos.apache.org by Bernd Mathiske <be...@mesosphere.io> on 2014/06/05 17:17:22 UTC

Re: Review Request 21316: Preview of MESOS-336


> On May 29, 2014, 3:05 p.m., Tom Arnfeld wrote:
> > include/mesos/mesos.proto, line 198
> > <https://reviews.apache.org/r/21316/diff/6/?file=594885#file594885line198>
> >
> >     What's the reason you're only caching on a per-framework basis? Surely if the URI is identical the content would be... If I have multiple Hadoop or Spark clients running but using the same executor, it's a shame they wouldn't share a cache entry.
> 
> Bernd Mathiske wrote:
>     Security concerns. I don't know to what extent what users trust the code behind a URI to remain the same. I can change it to per slave if there is consensus. Or we could have a flag that decides between the two options.

After some thought, I have come to the conclusion that I should extend the enum type that indicates how to cache NOW, not later. Here is what I have in mind in mesos.proto:

enum FetcherCache {
  CACHE_NONE = 0;
  CACHE_EXTERNAL = 1;
  CACHE_PER_SLAVE = 2;
  CACHE_PER_FRAMEWORK = 3;
}

I'll implement this before the next patch update.


- Bernd


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/21316/#review44301
-----------------------------------------------------------


On May 31, 2014, 8:04 a.m., Bernd Mathiske wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/21316/
> -----------------------------------------------------------
> 
> (Updated May 31, 2014, 8:04 a.m.)
> 
> 
> Review request for mesos and Benjamin Hindman.
> 
> 
> Bugs: MESOS-336
>     https://issues.apache.org/jira/browse/MESOS-336
> 
> 
> Repository: mesos-git
> 
> 
> Description
> -------
> 
> The first cut at fetcher caching. See MESOS-336 JIRA for explanation for this approach: keep the cache info in the MesosContainerizerProcess in the save, leverage actor single-threadedness to deal with concurrency issues without head ache. 
> 
> Features so far:
> - If URI flag "fetched_externally" (default: false) is set,  the fetcher does what it did in Mesos 0.18 and before.
> - If URI flag "cached" (default: false) is not set, the fetcher also fetches every time as in Mesos 0.18 and before.
> - If URI flag "cached" is set, the UIR is only fetched once and all subsequent fetch attempts copy from the cache file.
> - URIs are cached separately per framework (ID).
> - Recovery is implemented by simply wiping the entire cache.
> - GC for cache files. Global flag sets lifetime after last use. Default is 1 hour.
> 
> Potential future features:
> - symlinks instead of copying
> - extraction directly from URI, without cache file
> - combine that with symlinks
> - Refreshing, explicit cache invalidation
> - ...
> 
> 
> Diffs
> -----
> 
>   include/mesos/mesos.proto ce780ca 
>   src/Makefile.am ae576c5 
>   src/launcher/fetcher.cpp c4425eb 
>   src/local/local.cpp 5d26aff 
>   src/slave/constants.hpp ace4590 
>   src/slave/constants.cpp 51f65bb 
>   src/slave/containerizer/mesos_containerizer.hpp 1f5908a 
>   src/slave/containerizer/mesos_containerizer.cpp d01d443 
>   src/slave/containerizer/mesos_fetcher.hpp PRE-CREATION 
>   src/slave/containerizer/mesos_fetcher.cpp PRE-CREATION 
>   src/slave/flags.hpp 15e5b64 
>   src/slave/slave.hpp 769bd00 
>   src/slave/slave.cpp a4b9570 
>   src/tests/containerizer_tests.cpp 2f4888d 
>   src/tests/fetcher_tests.cpp PRE-CREATION 
>   src/tests/slave_tests.cpp 85ca5c4 
> 
> Diff: https://reviews.apache.org/r/21316/diff/
> 
> 
> Testing
> -------
> 
> Tests have been written, have been run successfully, and are included in the patch. 
> 
> 
> Thanks,
> 
> Bernd Mathiske
> 
>