Committed by
Gerrit Code Review
Fix logic that checks if the request tracking ConsistentMap was updated
Change-Id: I0f7c6e8b9ee89ab8209e36b6933345375dabf477
Showing
1 changed file
with
6 additions
and
0 deletions
| ... | @@ -213,6 +213,9 @@ public class DistributedPacketStore | ... | @@ -213,6 +213,9 @@ public class DistributedPacketStore |
| 213 | private AtomicBoolean addInternal(PacketRequest request) { | 213 | private AtomicBoolean addInternal(PacketRequest request) { |
| 214 | AtomicBoolean firstRequest = new AtomicBoolean(false); | 214 | AtomicBoolean firstRequest = new AtomicBoolean(false); |
| 215 | requests.compute(request.selector(), (s, existingRequests) -> { | 215 | requests.compute(request.selector(), (s, existingRequests) -> { |
| 216 | + // Reset to false just in case this is a retry due to | ||
| 217 | + // ConcurrentModificationException | ||
| 218 | + firstRequest.set(false); | ||
| 216 | if (existingRequests == null) { | 219 | if (existingRequests == null) { |
| 217 | firstRequest.set(true); | 220 | firstRequest.set(true); |
| 218 | return ImmutableSet.of(request); | 221 | return ImmutableSet.of(request); |
| ... | @@ -239,6 +242,9 @@ public class DistributedPacketStore | ... | @@ -239,6 +242,9 @@ public class DistributedPacketStore |
| 239 | private AtomicBoolean removeInternal(PacketRequest request) { | 242 | private AtomicBoolean removeInternal(PacketRequest request) { |
| 240 | AtomicBoolean removedLast = new AtomicBoolean(false); | 243 | AtomicBoolean removedLast = new AtomicBoolean(false); |
| 241 | requests.computeIfPresent(request.selector(), (s, existingRequests) -> { | 244 | requests.computeIfPresent(request.selector(), (s, existingRequests) -> { |
| 245 | + // Reset to false just in case this is a retry due to | ||
| 246 | + // ConcurrentModificationException | ||
| 247 | + removedLast.set(false); | ||
| 242 | if (existingRequests.contains(request)) { | 248 | if (existingRequests.contains(request)) { |
| 243 | Set<PacketRequest> newRequests = Sets.newHashSet(existingRequests); | 249 | Set<PacketRequest> newRequests = Sets.newHashSet(existingRequests); |
| 244 | newRequests.remove(request); | 250 | newRequests.remove(request); | ... | ... |
-
Please register or login to post a comment