apache/seatunnel

[Bug] [Zeta] Java process does not receive SIGTERM when running SeaTunnel inside container

Open

#9 827 ouverte le 5 sept. 2025

Voir sur GitHub
 (1 commentaire) (0 réactions) (1 assigné)Java (1 432 forks)batch import
bughelp wanted

Métriques du dépôt

Stars
 (6 897 stars)
Métriques de merge PR
 (Merge moyen 13j 21h) (143 PRs mergées en 30 j)

Description

Search before asking

  • I had searched in the issues and found no similar issues.

What happened

When running SeaTunnel inside a Docker/Kubernetes container, the Java process cannot gracefully shut down because it never receives the SIGTERM signal sent by the container runtime. Currently, the startup script (bin/seatunnel-cluster.sh) launches Java like this (when not using -d):

java ${JAVA_OPTS} -cp ${CLASS_PATH} ${APP_MAIN} ${args}

In this case: • The shell script itself becomes PID 1 in the container. • The Java process runs as a child process of the shell. • When the container is stopped, SIGTERM is only delivered to the shell script (PID 1), not to the Java process. • The script exits immediately without forwarding the signal, leaving Java as an orphan process. • Finally, the Java process is killed by SIGKILL after the grace period, preventing SeaTunnel from shutting down gracefully.

This causes issues such as: • Shutdown hooks in Java never being executed. • Potential data loss or corruption when SeaTunnel tasks are abruptly killed.

SeaTunnel Version

2.3.11

SeaTunnel Config

none

Running Command

./bin/seatunnel-cluster -r xxx

Error Exception

none

Zeta or Flink or Spark Version

No response

Java or Scala Version

No response

Screenshots

No response

Are you willing to submit PR?

  • Yes I am willing to submit a PR!

Code of Conduct

Guide contributeur