libp2p / jvm-libp2p

a libp2p implementation for the JVM, written in Kotlin 🔥
https://libp2p.io
Apache License 2.0
260 stars 74 forks source link

AbstractRouter.getPeerTopics() may throw ConcurrentModificationException #362

Closed Nashatyrev closed 4 months ago

Nashatyrev commented 4 months ago

Fix returning internal mutable set to avoid ConcurrentModificationException

Might result in the following exception:

java.util.concurrent.CompletionException: java.util.ConcurrentModificationException
at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:315)
at java.base/java.util.concurrent.CompletableFuture.uniApplyNow(CompletableFuture.java:687)
at java.base/java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:662)
at java.base/java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:2200)
at io.libp2p.pubsub.PubsubApiImpl.getPeerTopics(PubsubApiImpl.kt:114)
at io.libp2p.pubsub.gossip.Gossip.getPeerTopics(Gossip.kt)