> On March 28, 2017, 11:06 p.m., Michael Park wrote: > > src/master/quota_handler.cpp > > Lines 469-487 (original), 605-618 (patched) > > <https://reviews.apache.org/r/57167/diff/8/?file=1672397#file1672397line605> > > > > Couldn't this be just: > > > > ```cpp > > vector<string> components = strings::split(request.url.path, "/", 3u); > > if (components.size() < 3u) { > > return BadRequest( > > "Failed to parse request path '" + request.url.path + > > "': 3 tokens ('master', 'quota', 'role') required, found " + > > stringify(tokens.size()) + " token(s)")); > > } > > > > CHECK_EQ(3u, components.size()); > > const string& role = components.back(); > > /* ... */ > > ``` > > Neil Conway wrote: > I'm not sure this is actually more readable; leaving as-is for now, will > discuss offline. > > Michael Park wrote: > A summary of our discussion yesterday: the `components.begin() + 3` part > looks wrong, but is indeed correct > because `split` returns empty tokens, and the first token will be an > empty string. > This means that my suggestion of `split(..., 3u)` actually has a bug... > subtle :(. > > We also didn't like the splitting/joining of the "rest", because it's not > obvious that we get back what we put in. > > Also, based on the code that I see in libprocess for `route`, it looks > like we would allow extraneous slashes such as `/master///quota`. > This would mean that the use of `split` actually introduces a > backwards-incompatibility here. > > I personally think it's simplest for us to do > `strings::tokenize(request.url.path, "/", 3u)`. > > What do you think?
sg! - Neil ----------------------------------------------------------- This is an automatically generated e-mail. To reply, visit: https://reviews.apache.org/r/57167/#review170328 ----------------------------------------------------------- On March 28, 2017, 11:42 p.m., Neil Conway wrote: > > ----------------------------------------------------------- > This is an automatically generated e-mail. To reply, visit: > https://reviews.apache.org/r/57167/ > ----------------------------------------------------------- > > (Updated March 28, 2017, 11:42 p.m.) > > > Review request for mesos and Michael Park. > > > Repository: mesos > > > Description > ------- > > The quota'd resources for a nested role are "included" within the > quota'd resources for that role's parent. Hence, the quota of a node > must always be greater than or equal to the sum of the quota'd resources > of that role's children. > > When creating and removing quota, we must ensure that this invariant is > not violated. > > When computing the cluster capacity heuristic, we must ensure that we do > not "double-count" quota'd resources: e.g., if the cluster has a total > capacity of 100 CPUs, role "x" has a quota guarantee of 80 CPUs, and > role "x/y" has a quota guarantee of 40 CPUs, this does NOT violate the > cluster capacity heuristic. > > > Diffs > ----- > > src/master/quota_handler.cpp 36ea1acca47014b2fb7a3b597b857c8ec9e2ab67 > src/tests/hierarchical_allocator_tests.cpp > e343dc37bd7136f0f6dd5dbc22a25cabe715038d > src/tests/master_quota_tests.cpp e418f22ea1773f4356ced44b8d57a80e826c8837 > > > Diff: https://reviews.apache.org/r/57167/diff/9/ > > > Testing > ------- > > `make check` > > > Thanks, > > Neil Conway > >