You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@karaf.apache.org by "Jean-Baptiste Onofré (Jira)" <ji...@apache.org> on 2021/03/06 06:00:00 UTC

[jira] [Resolved] (KARAF-6963) Stopping Karaf daemon invokes kill -9, resulting in failed systemd service

     [ https://issues.apache.org/jira/browse/KARAF-6963?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Jean-Baptiste Onofré resolved KARAF-6963.
-----------------------------------------
    Fix Version/s: 4.3.1
                   4.2.11
       Resolution: Fixed

> Stopping Karaf daemon invokes kill -9, resulting in failed systemd service
> --------------------------------------------------------------------------
>
>                 Key: KARAF-6963
>                 URL: https://issues.apache.org/jira/browse/KARAF-6963
>             Project: Karaf
>          Issue Type: Bug
>          Components: karaf
>    Affects Versions: 4.2.4
>         Environment: Linux + systemd
>            Reporter: Miel Donkers
>            Assignee: Jean-Baptiste Onofré
>            Priority: Minor
>             Fix For: 4.2.11, 4.3.1
>
>
> Karaf supplies an example systemd file: [https://github.com/apache/karaf/blob/master/assemblies/features/base/src/main/resources/resources/bin/contrib/karaf-service-template.systemd]
> For our solution we use a similar systemd service file. However we noticed that when stopping the service, it's always left in a "failed" state:
> {code:java}
> root@vagrant:/opt/instana/agent# systemctl stop instana-agent
> root@vagrant:/opt/instana/agent# systemctl status instana-agent
> ● instana-agent.service - "Instana(tm) agent."
>    Loaded: loaded (/lib/systemd/system/instana-agent.service; enabled; vendor preset: enabled)
>    Active: failed (Result: signal) since Tue 2020-12-15 20:29:44 UTC; 2s ago
>   Process: 5461 ExecStop=/opt/instana/agent/bin/karaf stop (code=exited, status=0/SUCCESS)
>   Process: 5371 ExecStart=/opt/instana/agent/bin/karaf daemon (code=killed, signal=KILL)
>  Main PID: 5371 (code=killed, signal=KILL)
> {code}
> This is not due to the way the systemd service is being stopped, but rather due to how the "stop" command is handled internally. Following the execution path from the "karaf" script, this eventually leads to [https://github.com/apache/karaf/blob/bb175f9c613921a20e017c343e6b978a3e80c80e/util/src/main/java/org/apache/karaf/jpm/impl/ProcessImpl.java#L84]
> {code:java}
> ret = ScriptUtils.executeProcess(new java.lang.ProcessBuilder("kill", "-9", Integer.toString(pid)));
> {code}
> Instead of doing a hard `kill -9`, it would be much nicer to first execute a 'kill', followed by checking if the process nicely shuts down and if not executing the 'kill -9'.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)