diff options
author | Luck <git@lucko.me> | 2023-08-28 17:39:21 +0100 |
---|---|---|
committer | Luck <git@lucko.me> | 2023-08-28 17:39:21 +0100 |
commit | 8c253aec4db3450dc640c4b66f74f9c8908514fa (patch) | |
tree | 63fff0283964616957eabc1aa2bd9c6809b1c07b | |
parent | 4729100d4993294bcecbd6b0b4b509ff9a9513e7 (diff) | |
download | spark-8c253aec4db3450dc640c4b66f74f9c8908514fa.tar.gz spark-8c253aec4db3450dc640c4b66f74f9c8908514fa.tar.bz2 spark-8c253aec4db3450dc640c4b66f74f9c8908514fa.zip |
Don't try to send statistics to a closed socket (#357)
-rw-r--r-- | spark-common/src/main/java/me/lucko/spark/common/sampler/AbstractSampler.java | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/spark-common/src/main/java/me/lucko/spark/common/sampler/AbstractSampler.java b/spark-common/src/main/java/me/lucko/spark/common/sampler/AbstractSampler.java index d814002..445702e 100644 --- a/spark-common/src/main/java/me/lucko/spark/common/sampler/AbstractSampler.java +++ b/spark-common/src/main/java/me/lucko/spark/common/sampler/AbstractSampler.java @@ -37,13 +37,13 @@ import me.lucko.spark.proto.SparkProtos; import me.lucko.spark.proto.SparkSamplerProtos.SamplerData; import me.lucko.spark.proto.SparkSamplerProtos.SamplerMetadata; -import java.util.ArrayList; import java.util.Collection; import java.util.Comparator; import java.util.List; import java.util.Locale; import java.util.Map; import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CopyOnWriteArrayList; /** * Base implementation class for {@link Sampler}s. @@ -78,7 +78,7 @@ public abstract class AbstractSampler implements Sampler { protected Map<String, GarbageCollectorStatistics> initialGcStats; /** A set of viewer sockets linked to the sampler */ - protected List<ViewerSocket> viewerSockets = new ArrayList<>(); + protected List<ViewerSocket> viewerSockets = new CopyOnWriteArrayList<>(); protected AbstractSampler(SparkPlatform platform, SamplerSettings settings) { this.platform = platform; @@ -156,6 +156,7 @@ public abstract class AbstractSampler implements Sampler { protected void sendStatisticsToSocket() { try { + this.viewerSockets.removeIf(socket -> !socket.isOpen()); if (this.viewerSockets.isEmpty()) { return; } |