Skip to content

Commit

Permalink
[fix][broker] Avoid ConcurrentModificationException for ModularLoadMa…
Browse files Browse the repository at this point in the history
…nagerImpl.cleanupDeadBrokersData() (apache#16690)
  • Loading branch information
codelipenghui authored Jul 20, 2022
1 parent 9077a73 commit 21a25bf
Showing 1 changed file with 5 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -485,10 +485,11 @@ public void updateAll() {

private void cleanupDeadBrokersData() {
final Set<String> activeBrokers = getAvailableBrokers();
Collection<String> newBrokers = CollectionUtils.subtract(activeBrokers, knownBrokers);
knownBrokers.addAll(newBrokers);
Collection<String> deadBrokers = CollectionUtils.subtract(knownBrokers, activeBrokers);
knownBrokers.removeAll(deadBrokers);
final Set<String> knownBrokersCopy = new HashSet<>(this.knownBrokers);
Collection<String> newBrokers = CollectionUtils.subtract(activeBrokers, knownBrokersCopy);
this.knownBrokers.addAll(newBrokers);
Collection<String> deadBrokers = CollectionUtils.subtract(knownBrokersCopy, activeBrokers);
this.knownBrokers.removeAll(deadBrokers);
if (pulsar.getLeaderElectionService() != null
&& pulsar.getLeaderElectionService().isLeader()) {
deadBrokers.forEach(this::deleteTimeAverageDataFromMetadataStoreAsync);
Expand Down

0 comments on commit 21a25bf

Please sign in to comment.