Fixed concurrent exception when shutting down the extension manager

This commit is contained in:
Felix Cravic 2020-12-03 17:54:23 +01:00
parent 6f8cbeb73b
commit ddf8cc383d

View File

@ -19,6 +19,7 @@ import java.lang.reflect.InvocationTargetException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.*;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.stream.Collectors;
import java.util.zip.ZipFile;
@ -36,7 +37,7 @@ public class ExtensionManager {
private final File dependenciesFolder = new File(extensionFolder, ".libs");
private boolean loaded;
private final List<Extension> extensionList = new ArrayList<>();
private final List<Extension> extensionList = new CopyOnWriteArrayList<>();
private final List<Extension> immutableExtensionListView = Collections.unmodifiableList(extensionList);
public ExtensionManager() {
@ -627,10 +628,6 @@ public class ExtensionManager {
* Shutdowns all the extensions by unloading them.
*/
public void shutdown() {
Iterator<Extension> extensionIterator = extensionList.iterator();
while (extensionIterator.hasNext()) {
final Extension extension = extensionIterator.next();
unload(extension);
}
this.extensionList.forEach(extension -> unload(extension));
}
}