Ewen Cheslack-Postava created KAFKA-3384:
--------------------------------------------

             Summary: bin scripts may not be portable/POSIX compliant
                 Key: KAFKA-3384
                 URL: https://issues.apache.org/jira/browse/KAFKA-3384
             Project: Kafka
          Issue Type: Bug
    Affects Versions: 0.9.0.1
            Reporter: Ewen Cheslack-Postava
            Assignee: Ewen Cheslack-Postava
             Fix For: 0.10.0.0


We may be using some important tools in a non-POSIX compliant and non-portable 
way. In particular, we've discovered that we can sometimes trigger this error:

/usr/bin/kafka-server-stop: line 22: kill: SIGTERM: invalid signal specification

which looks like it is caused by invoking a command like {{kill -SIGTERM 
<pid>}}. (This is a lightly modified version of {{kafka-server-stop.sh}}, but 
nothing of relevance has been affected.)

Googling seems to suggest that passing the signal in that way is not compliant 
-- it's a shell extensions. We're using {{/bin/sh}}, but that may be aliased to 
other more liberal shells on some platforms. To be honest, I'm not sure exactly 
the requirements for triggering this since running the command directly on the 
same host via an interactive shell still works, but we are definitely limiting 
portability using the current approach.

There are a couple of possible solutions:

1. Standardize on bash. This lets us make more permissive wrt shell features 
that we use. We're already using /bin/bash in the majority of scripts anyway. 
Might help us avoid a bunch of assumptions people make when bash is aliased to 
sh: https://wiki.ubuntu.com/DashAsBinSh
2. Try to clean up scripts as we discover incompatibilities. The immediate fix 
for this issue seems to be to use {{kill -s TERM}} instead of {{kill -SIGTERM}}.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to