apache / apache/maven-mvnd

Cancel job on client TERM signal

Open
#1,112 3 comments 1 reaction 0 assignees View on GitHub
Dominant language
Java
Stars
3.5k
Forks
250
Avg merge
16h 22m
Merged PRs (30d)
36

Description

Hello!

the client is cancelling jobs on `ctrl+c` which makes sense. However, it seems like it won't do anything on TERM signal.

This makes it difficult for tools which treat mvn and mvnd the same to stop jobs, e.g (https://github.com/apache/netbeans/issues/7676).

This would be trivial to solve with a shutdown hook, but while playing with this, some problems occurred:

>[here](https://github.com/mbien/maven-mvnd/commit/82336c25bbd8d09b2cd39011101d700e4329bafe) is a prototype which:
>
> - adds a JVM shutdown hook which sends the cancel msg on irregular shutdown (SIGTERM)
> - this requires to build the native image with `--install-exit-handlers`, since without it, GraalVM would not trigger shutdown hooks on irregular shutdowns
>
>The problem however is that the build is also setting `-H:-ParseRuntimeOptions` for the purpose of delegating -D params instead of parsing them as args. This seems to mess with the signal chaining and prevents the shutdown hook from running again.

This almost looks like a graalvm bug to me - but I am not sure. Maybe someone here has more experience with this scenario. (I tried graalvm 22.0.2 and also some older releases).

If the mvnd team thinks this is the right direction I would try to investigate a bit further if this is a graalvm bug or not.

(There are also many ways how to solve this from the side of NetBeans, it could send "ctrl+c" first, however there is probably no way to know how long to wait before sending TERM if nothing happens. Or it could talk to the daemon itself. I think it would be more elegant if both mvn and mvnd would be treated the same though in terms of shutdown.)

Contributor guide

No contributing guide indexed for this repository

Research direction

Start with the prototype commit 82336c25bbd8d09b2cd39011101d700e4329bafe and the native-image options discussed in the issue, especially --install-exit-handlers and -H:-ParseRuntimeOptions. Reproduce client behavior under Ctrl+C and SIGTERM, then investigate whether the shutdown hook sends the cancel message and whether signal chaining is preserved.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
build-system, cli
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.