mesos-reviews mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Benjamin Bannier <bbann...@apache.org>
Subject Re: Review Request 71729: Added authorization handling for reservations with `source`.
Date Thu, 07 Nov 2019 11:00:49 GMT


> On Nov. 6, 2019, 5:11 p.m., Benno Evers wrote:
> > src/master/master.cpp
> > Lines 3810 (patched)
> > <https://reviews.apache.org/r/71729/diff/1/?file=2171587#file2171587line3810>
> >
> >     It doesn't seem ideal to have recursively nested calls to `collectauthorizations()`,
even if the logic is sound it seems hard to reason about.
> >     
> >     Would it be possible to eliminate the branching by setting `source` to be `resources.popReservation()`
if `source` is empty?

> Would it be possible to eliminate the branching by setting source to be resources.popReservation()
if source is empty?

This would only work if we know that all resources passed to `RESERVE` are indeed reserved.
Unfortunately that is not the case in the current implementation (e.g., `cpus(A):1;mem:256`
would reserve only `cpus`). We need to keep support for that behavior as it is part of the
APII.

In the patch I put up we go from the narrower extended API (e.g., all resources passed to
`RESERVE` must have identical reservations) to the wider existing API so we are good. Going
from wider to narrower doesn't work, though.

What I could do for the sake of readibility would be to introduce a dedicated function for
the legacy behavior to avoid the self-recursion. I am not sure that would help (and might
it even make harder to follow the code).

WDYT?


> On Nov. 6, 2019, 5:11 p.m., Benno Evers wrote:
> > src/master/master.cpp
> > Lines 3820 (patched)
> > <https://reviews.apache.org/r/71729/diff/1/?file=2171587#file2171587line3820>
> >
> >     Shouldn't the first `Unreserve` operation contain the original `source`?

Of course.


> On Nov. 6, 2019, 5:11 p.m., Benno Evers wrote:
> > src/master/master.cpp
> > Lines 3828 (patched)
> > <https://reviews.apache.org/r/71729/diff/1/?file=2171587#file2171587line3828>
> >
> >     Is this the same as `reserve.resources().reservations()`?

Good point, this is indeed the same as `reserve.resources(0).reservations`. Using that seems
to be a better idea than going strictly with symmetric approaches for `targetReservations`
and `ancestorReservations` as it can help avoid a number of temporaries.


> On Nov. 6, 2019, 5:11 p.m., Benno Evers wrote:
> > src/master/master.cpp
> > Lines 3834 (patched)
> > <https://reviews.apache.org/r/71729/diff/1/?file=2171587#file2171587line3834>
> >
> >     That look more like debug-statements rather than `INFO`-level logging?

Indeed, even explicitly marked up as such with my magic string, yet still missed.


- Benjamin


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


On Nov. 7, 2019, noon, Benjamin Bannier wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/71729/
> -----------------------------------------------------------
> 
> (Updated Nov. 7, 2019, noon)
> 
> 
> Review request for mesos and Benno Evers.
> 
> 
> Bugs: MESOS-9991
>     https://issues.apache.org/jira/browse/MESOS-9991
> 
> 
> Repository: mesos
> 
> 
> Description
> -------
> 
> This patch adds authorization handling for `RESERVE` operations
> containing `source` fields. In order to stay backwards-compatible we add
> a dedicated authorization branch for such operations which under the
> hood translates each removed reservation to an `UNRESERVE` operation and
> every added reservation as a `RESERVE` operation where we fall back to
> existing authorization code for authorization.
> 
> 
> Diffs
> -----
> 
>   src/master/master.cpp e7609f361b58f9b1f0d2d5eb6037f98edcb41a56 
>   src/tests/master_authorization_tests.cpp 06471aa7779d399f4474ed40db3fbcc60b8298b2 
> 
> 
> Diff: https://reviews.apache.org/r/71729/diff/2/
> 
> 
> Testing
> -------
> 
> `make check`
> 
> 
> Thanks,
> 
> Benjamin Bannier
> 
>


Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message