[ 
https://issues.apache.org/jira/browse/KAFKA-3384?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15213701#comment-15213701
 ] 

Matt McClure commented on KAFKA-3384:
-------------------------------------

I see one symptom of nonconformance to POSIX during {{vagrant provision}}.

{noformat}
...
==> broker3: Killing server
==> broker3: kill: 
==> broker3: invalid argument S
==> broker3: 
==> broker3: Usage:
==> broker3:  kill [options] <pid> [...]
==> broker3: 
==> broker3: Options:
==> broker3:  <pid> [...]            send signal to every <pid> listed
==> broker3:  -<signal>, -s, --signal <signal>
==> broker3:                         specify the <signal> to be sent
==> broker3:  -l, --list=[<signal>]  list all signal names, or convert one to a 
name
==> broker3:  -L, --table            list all signal names in a nice table
==> broker3:  -h, --help     display this help and exit
==> broker3:  -V, --version  output version information and exit
==> broker3: 
==> broker3: For more details see kill(1).
==> broker3: Starting server
...
{noformat}

I opened a pull request to address this at 
https://github.com/apache/kafka/pull/1148

> 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.1.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