diff --git a/app/build.gradle b/app/build.gradle
index 42fadbd..93819ce 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -19,6 +19,7 @@
     
     // Enable parallel test execution for faster builds
     maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1
+    systemProperty 'korapxmltool.test', 'true'
 }
 
 dependencies {
diff --git a/app/src/main/kotlin/de/ids_mannheim/korapxmltools/KorapXmlTool.kt b/app/src/main/kotlin/de/ids_mannheim/korapxmltools/KorapXmlTool.kt
index 85255d4..a2ee6a2 100644
--- a/app/src/main/kotlin/de/ids_mannheim/korapxmltools/KorapXmlTool.kt
+++ b/app/src/main/kotlin/de/ids_mannheim/korapxmltools/KorapXmlTool.kt
@@ -659,6 +659,10 @@
         LogManager.getLogManager().reset()
         handler.formatter = ColoredFormatter()
 
+        if (System.getProperty("korapxmltool.test") == "true") {
+            quiet = true
+        }
+
         for (handler in LOGGER.handlers) {
             LOGGER.removeHandler(handler)
         }
@@ -1155,6 +1159,7 @@
             }
         )
         // For Krill output, use work-stealing scheduler for optimal core utilization
+        try {
         if (outputFormat == OutputFormat.KRILL) {
             workStealingSchedulerActive = true
             allFoundriesSubmitted = false
@@ -1394,6 +1399,7 @@
             }
         }
 
+        } finally {
         // Signal work-stealing scheduler that all foundries have been submitted
         if (workStealingSchedulerActive) {
             allFoundriesSubmitted = true
@@ -1402,6 +1408,7 @@
 
         // Shutdown entry executor BEFORE closing worker pool to ensure no more tasks enqueue output after EOF
         entryExecutor?.shutdown()
+        compressionExecutor?.shutdownNow()
         try {
             if (entryExecutor != null) {
                 val terminated = entryExecutor!!.awaitTermination(7, java.util.concurrent.TimeUnit.DAYS)
@@ -1602,6 +1609,7 @@
             }
         }
     }
+    }
 
     private fun processZipsWithQueue(zips: Array<String>, foundry: String, parallelism: Int) {
         // For Krill output with work-stealing, use interleaved submission by text ID
diff --git a/app/src/test/kotlin/de/ids_mannheim/korapxmltools/FoundryOverrideTest.kt b/app/src/test/kotlin/de/ids_mannheim/korapxmltools/FoundryOverrideTest.kt
index 8e1f1d9..65efc10 100644
--- a/app/src/test/kotlin/de/ids_mannheim/korapxmltools/FoundryOverrideTest.kt
+++ b/app/src/test/kotlin/de/ids_mannheim/korapxmltools/FoundryOverrideTest.kt
@@ -38,6 +38,10 @@
 
     @Test
     fun testFoundryOverrideWithTagger() {
+        val isRunningInDocker = File("/.dockerenv").exists() || 
+            (File("/proc/1/cgroup").exists() && File("/proc/1/cgroup").readText().contains("docker"))
+        org.junit.Assume.assumeFalse("Skipping Docker test inside Docker container", isRunningInDocker)
+
         val outputDir = File.createTempFile("foundry_override_test", "").apply {
             delete()
             mkdirs()
