Affected Version
master
Description
RoundRobinStorageLocationSelectorStrategy was introduced in #8038. In the current implementation of this strategy, the iteration state is shared by different threads. When a thread calls Iterator.next() for the iterator returned from RoundRobinStorageLocationSelectorStrategy.getLocations(), the next thread will get a next storage location in a round robin fashion. However, with this strategy, the same storage location can be potentially picked up over again for the same thread. For example, suppose we have 2 storage locations and 2 threads. After the Thread T1 can pick up the storage location L1, another thread T2 can pick up the storage location L2. This will let T1 pick up the same location L1. This might be fine in general, but it could be problematic if there is something wrong with L1. Since T1 will can pick up the problematic location L1 over again, it will never finish segment loading and fail.
FYI @sashidhar.
Affected Version
master
Description
RoundRobinStorageLocationSelectorStrategywas introduced in #8038. In the current implementation of this strategy, the iteration state is shared by different threads. When a thread callsIterator.next()for the iterator returned fromRoundRobinStorageLocationSelectorStrategy.getLocations(), the next thread will get a next storage location in a round robin fashion. However, with this strategy, the same storage location can be potentially picked up over again for the same thread. For example, suppose we have 2 storage locations and 2 threads. After the ThreadT1can pick up the storage locationL1, another threadT2can pick up the storage locationL2. This will letT1pick up the same locationL1. This might be fine in general, but it could be problematic if there is something wrong withL1. SinceT1will can pick up the problematic locationL1over again, it will never finish segment loading and fail.FYI @sashidhar.