[ https://issues.apache.org/jira/browse/KAFKA-10272?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Mickael Maison resolved KAFKA-10272. ------------------------------------ Fix Version/s: 2.7.0 Resolution: Fixed > kafka-server-stop.sh fails on IBM i > ----------------------------------- > > Key: KAFKA-10272 > URL: https://issues.apache.org/jira/browse/KAFKA-10272 > Project: Kafka > Issue Type: Bug > Components: core > Affects Versions: 2.5.0 > Environment: IBM i 7.2 > Reporter: Jesse Gorzinski > Assignee: Jesse Gorzinski > Priority: Minor > Labels: easyfix > Fix For: 2.7.0 > > Original Estimate: 1h > Remaining Estimate: 1h > > On the IBM i platform, the `kafka-server-stop.sh` script always fails with an > error message "No kafka server to stop" > > The underlying cause is because the script relies on the output of `ps ax` to > determine the pid. More specifically: > {code:java} > PIDS=$(ps ax | grep -i 'kafka\.Kafka' | grep java | grep -v grep | awk > '{print $1}') > {code} > On IBM i, the ps utility is unconventional and truncates the output with > these arguments. For instance, here is part of the ps output > {code:java} > 584329 - A 0:00 /QOpenSys/QIBM/ProdData/SC1/OpenSSH/sbin/sshd -R > 584331 - A 0:00 > /QOpenSys/QIBM/ProdData/SC1/OpenSSH/libexec/sftp-serv > 584332 - A 0:00 /QOpenSys/QIBM/ProdData/SC1/OpenSSH/sbin/sshd -R > 584334 pts/5 A 0:00 -bash > 584365 pts/7 A 0:08 java -Xmx512M -Xms512M -server -XX:+UseG1GC > -XX:MaxGC > 585353 pts/8 A 0:12 java -Xmx1G -Xms1G -server -XX:+UseG1GC > -XX:MaxGCPaus > 585690 pts/9 A 0:00 ps ax > {code} > > Therefore, the resultant grep always comes up empty. When invoked with `ps > -af`, it gives the whole command (when piped) but sticks in the UID by > default > {code:java} > ps -af > UID PID PPID C STIME TTY TIME CMD > jgorzins 585353 583321 0 12:41:07 pts/8 0:41 java -Xmx1G -Xms1G -server > -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 > -XX:+ExplicitGCInvokesConcurr > jgorzins 585817 585794 0 14:44:25 pts/4 0:00 ps -af > {code} > So.... the following PID check works for IBM i: > > {code:java} > PIDS=$(ps -af | grep -i 'kafka\.Kafka' | grep java | grep -v grep | awk > '{print $2}') > {code} > so, a fix would be (I have verified this): > {code:java} > if [[ "OS400" == $(uname -s) ]]; then > PIDS=$(ps -af | grep -i 'kafka\.Kafka' | grep java | grep -v grep | awk > '{print $2}') > else > PIDS=$(ps ax | grep -i 'kafka\.Kafka' | grep java | grep -v grep | awk > '{print $1}') > fi > {code} > This all also applies to `zookeeper-server-stop.sh` -- This message was sent by Atlassian Jira (v8.3.4#803005)