From dbafe84fa5741cfeae29ee03e76289aba04d0d0f Mon Sep 17 00:00:00 2001 From: Julian Krings Date: Fri, 2 Jan 2026 14:12:44 +0100 Subject: [PATCH] make context dereference method fail-safe --- core/build.gradle.kts | 8 ++++++-- .../com/volmit/iris/core/loader/IrisData.java | 2 +- .../volmit/iris/util/context/IrisContext.java | 20 ++++++++++++------- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 1dc87c748..a16ee0d33 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -182,10 +182,14 @@ tasks { } val templateSource = file("src/main/templates") -val templateDest = layout.buildDirectory.dir("generated/sources/templates") +val templateDest = layout.buildDirectory.dir("generated/sources/templates")!! val generateTemplates = tasks.register("generateTemplates") { inputs.properties( - "environment" to if (project.hasProperty("release")) "production" else "development", + "environment" to when { + project.hasProperty("release") -> "producction" + project.hasProperty("argghh") -> "Argghh!" + else -> "development" + }, "commit" to provider { val res = runCatching { project.extensions.getByType().head().id } res.getOrDefault("") diff --git a/core/src/main/java/com/volmit/iris/core/loader/IrisData.java b/core/src/main/java/com/volmit/iris/core/loader/IrisData.java index 97215ef20..b43f3d639 100644 --- a/core/src/main/java/com/volmit/iris/core/loader/IrisData.java +++ b/core/src/main/java/com/volmit/iris/core/loader/IrisData.java @@ -103,7 +103,7 @@ public class IrisData implements ExclusionStrategy, TypeAdapterFactory { } public static void dereference() { - dataLoaders.v().forEach(IrisData::cleanupEngine); + dataLoaders.values().forEach(IrisData::cleanupEngine); } public static int cacheSize() { diff --git a/core/src/main/java/com/volmit/iris/util/context/IrisContext.java b/core/src/main/java/com/volmit/iris/util/context/IrisContext.java index a6b72cf9f..43423e3be 100644 --- a/core/src/main/java/com/volmit/iris/util/context/IrisContext.java +++ b/core/src/main/java/com/volmit/iris/util/context/IrisContext.java @@ -63,14 +63,20 @@ public class IrisContext { } } - public static void dereference() { - for (Thread i : context.k()) { - if (!i.isAlive() || context.get(i).engine.isClosed()) { - if (context.get(i).engine.isClosed()) { - Iris.debug("Dereferenced Context " + i.getName() + " " + i.threadId()); - } + public static synchronized void dereference() { + var it = context.entrySet().iterator(); + while (it.hasNext()) { + var entry = it.next(); + var thread = entry.getKey(); + var context = entry.getValue(); + if (thread == null || context == null) { + it.remove(); + continue; + } - context.remove(i); + if (!thread.isAlive() || context.engine.isClosed()) { + Iris.debug("Dereferenced Context " + thread.getName() + " " + thread.threadId()); + it.remove(); } } }