From d419e8b12c0eb2b81b7772c9fcd1edcf14b26f60 Mon Sep 17 00:00:00 2001 From: Sotr Date: Tue, 16 Apr 2019 23:30:38 +0800 Subject: [PATCH] Actually resolve similar issues --- src/main/java/net/minecraft/server/ServerConnection.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/minecraft/server/ServerConnection.java b/src/main/java/net/minecraft/server/ServerConnection.java index 9951aad2f..40384938b 100644 --- a/src/main/java/net/minecraft/server/ServerConnection.java +++ b/src/main/java/net/minecraft/server/ServerConnection.java @@ -1,6 +1,7 @@ package net.minecraft.server; import com.google.common.collect.Lists; +import com.google.common.collect.Sets; import com.google.common.util.concurrent.ThreadFactoryBuilder; import io.netty.bootstrap.ServerBootstrap; import io.netty.channel.Channel; @@ -21,9 +22,13 @@ import io.netty.handler.timeout.ReadTimeoutHandler; import io.netty.util.concurrent.Future; import java.io.IOException; import java.net.InetAddress; +import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; +import java.util.Set; +import java.util.concurrent.CopyOnWriteArrayList; + import javax.annotation.Nullable; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -47,9 +52,9 @@ public class ServerConnection { private final List f = Collections.synchronizedList(Lists.newArrayList()); private final List g = Collections.synchronizedList(Lists.newArrayList()); public final List getNetworkManagers() { return this.g; } // Akarin // Paper start - prevent blocking on adding a new network manager while the server is ticking - private final List pending = Lists.newCopyOnWriteArrayList(); + private final Set pending = Sets.newConcurrentHashSet(); // Akarin - avoid same signature // Akarin start - private final List pendingRemoval = Lists.newArrayList(); + public final Set pendingRemoval = Sets.newHashSet(); // Akarin - avoid same signature private void addPending() { /*synchronized (this.g)*/ { // Akarin this.g.addAll(pending); // Paper - OBFHELPER - List of network managers