> On Aug. 28, 2017, 11:08 p.m., Santhosh Kumar Shanmugham wrote:
> > src/main/java/org/apache/aurora/scheduler/offers/OfferManager.java
> > Line 361 (original), 367 (patched)
> > <https://reviews.apache.org/r/61918/diff/1/?file=1804129#file1804129line367>
> >
> >     How about this method?

I only copy on the getOffers call for performance. I believe that the callers 
of getOffers do not expect the iterator to change.

For `getWeaklyConsistentOffers`, we expect the caller to know that offers may 
be removed while iterating -- see the comment in launchTask:

```
      // Guard against an offer being removed after we grabbed it from the 
iterator.
      // If that happens, the offer will not exist in hostOffers, and we can 
immediately
      // send it back to LOST for quick reschedule.
      // Removing while iterating counts on the use of a weakly-consistent 
iterator being used,
      // which is a feature of ConcurrentSkipListSet.
```


- Jordan


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


On Aug. 25, 2017, 8:31 p.m., Jordan Ly wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/61918/
> -----------------------------------------------------------
> 
> (Updated Aug. 25, 2017, 8:31 p.m.)
> 
> 
> Review request for Aurora, David McLaughlin, Dmitry Zhuk, Santhosh Kumar 
> Shanmugham, and Stephan Erb.
> 
> 
> Repository: aurora
> 
> 
> Description
> -------
> 
> Currently, `getOffers` and `getWeaklyConsistentOffers` provide iterables that 
> use lambdas (in filter) not backed by concurrent data structures 
> (`globallyBannedOffers` and `staticallyBannedOffers`). This can lead to a 
> race condition where we have unknown behavior if reading and modification 
> happens at the same time.
> 
> To fix this, in `getOffers` we will revert to the previous behavior (before 
> patch https://reviews.apache.org/r/61804/) where we create a copy of the 
> current offers as well as a copy of the banned offers for consistency.
> 
> For `getWeaklyConsistentOffers`, we will use concurrent data structures for 
> `globallyBannedOffers` and `staticallyBannedOffers` so we don't have a race 
> that may produce unknown side effects.
> 
> 
> Diffs
> -----
> 
>   src/main/java/org/apache/aurora/scheduler/offers/OfferManager.java 
> 5697d2e2eb001042511924442ff2dbe358451642 
> 
> 
> Diff: https://reviews.apache.org/r/61918/diff/2/
> 
> 
> Testing
> -------
> 
> Unit tests pass.
> 
> Currently running end to end test and testing on a live cluster.
> 
> 
> Thanks,
> 
> Jordan Ly
> 
>

Reply via email to