diff --git a/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/TaskExecutionService.java b/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/TaskExecutionService.java index 0b95baded64..72059619bca 100644 --- a/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/TaskExecutionService.java +++ b/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/TaskExecutionService.java @@ -775,6 +775,8 @@ void taskDone(Task task) { task.getTaskID(), taskGroupLocation)); Throwable ex = executionException.get(); if (completionLatch.decrementAndGet() == 0) { + // recycle classloader + executionContexts.get(taskGroupLocation).setClassLoader(null); finishedExecutionContexts.put( taskGroupLocation, executionContexts.remove(taskGroupLocation)); cancellationFutures.remove(taskGroupLocation); diff --git a/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/execution/TaskGroupContext.java b/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/execution/TaskGroupContext.java index 563d736ddf1..0b1de39f2ff 100644 --- a/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/execution/TaskGroupContext.java +++ b/seatunnel-engine/seatunnel-engine-server/src/main/java/org/apache/seatunnel/engine/server/execution/TaskGroupContext.java @@ -17,11 +17,13 @@ package org.apache.seatunnel.engine.server.execution; +import lombok.AllArgsConstructor; import lombok.Data; @Data +@AllArgsConstructor public class TaskGroupContext { - final TaskGroup taskGroup; + private TaskGroup taskGroup; - final ClassLoader classLoader; + private ClassLoader classLoader; }