[
https://issues.apache.org/jira/browse/ZOOKEEPER-1061?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13031401#comment-13031401
]
Ted Dunning commented on ZOOKEEPER-1061:
----------------------------------------
No unit tests are reasonably for these script-only changes. Here is a manual
test. Without the fix, we see this mal-behavior:
{code}
tdunning@ted-desk:~/Apache/zookeeper$ sudo bin/zkServer.sh start
JMX enabled by default
Using config: /etc/zookeeper/zoo.cfg
Starting zookeeper ...
STARTED
tdunning@ted-desk:~/Apache/zookeeper$ sudo jps
17610 QuorumPeerMain
17646 Jps
tdunning@ted-desk:~/Apache/zookeeper$ sudo bin/zkServer.sh start
JMX enabled by default
Using config: /etc/zookeeper/zoo.cfg
Starting zookeeper ...
STARTED
tdunning@ted-desk:~/Apache/zookeeper$ sudo jps
17685 Jps
17610 QuorumPeerMain
tdunning@ted-desk:~/Apache/zookeeper$ sudo bin/zkServer.sh stop
JMX enabled by default
Using config: /etc/zookeeper/zoo.cfg
Stopping zookeeper ...
kill: 160: No such process
STOPPED
tdunning@ted-desk:~/Apache/zookeeper$ sudo jps
17730 Jps
17610 QuorumPeerMain
{code}
With the fix, I get this.
{code}
tdunning@ted-desk:~/Apache/zookeeper$ patch < ZOOKEEPER-1061.patch
patching file zkServer.sh
# first start works
tdunning@ted-desk:~/Apache/zookeeper$ sudo bin/zkServer.sh start
JMX enabled by default
Using config: /etc/zookeeper/zoo.cfg
Starting zookeeper ... STARTED
# second start fails with good message
tdunning@ted-desk:~/Apache/zookeeper$ sudo bin/zkServer.sh start
JMX enabled by default
Using config: /etc/zookeeper/zoo.cfg
Starting zookeeper ... already running as process 17928.
# and this is persistent behavior
tdunning@ted-desk:~/Apache/zookeeper$ sudo bin/zkServer.sh start
JMX enabled by default
Using config: /etc/zookeeper/zoo.cfg
Starting zookeeper ... already running as process 17928.
# stop now works
tdunning@ted-desk:~/Apache/zookeeper$ sudo bin/zkServer.sh stop
JMX enabled by default
Using config: /etc/zookeeper/zoo.cfg
Stopping zookeeper ... STOPPED
# repeated stop works correctly
tdunning@ted-desk:~/Apache/zookeeper$ sudo bin/zkServer.sh stop
JMX enabled by default
Using config: /etc/zookeeper/zoo.cfg
Stopping zookeeper ... error: could not find file
/var/zookeeper/zookeeper_server.pid
# and start works again
tdunning@ted-desk:~/Apache/zookeeper$ sudo bin/zkServer.sh start
JMX enabled by default
Using config: /etc/zookeeper/zoo.cfg
Starting zookeeper ... STARTED
# but can't be repeated
tdunning@ted-desk:~/Apache/zookeeper$ sudo bin/zkServer.sh start
JMX enabled by default
Using config: /etc/zookeeper/zoo.cfg
Starting zookeeper ... already running as process 18155.
# running without proper permissions gives a different error
tdunning@ted-desk:~/Apache/zookeeper$ bin/zkServer.sh start
JMX enabled by default
Using config: /etc/zookeeper/zoo.cfg
Starting zookeeper ... bin/zkServer.sh: 169: cannot create
/var/zookeeper/zookeeper_server.pid: Permission denied
FAILED TO WRITE PID
tdunning@ted-desk:~/Apache/zookeeper$ sudo bin/zkServer.sh stop
JMX enabled by default
Using config: /etc/zookeeper/zoo.cfg
Stopping zookeeper ... STOPPED
{code}
> Zookeeper stop fails if start called twice
> ------------------------------------------
>
> Key: ZOOKEEPER-1061
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1061
> Project: ZooKeeper
> Issue Type: Bug
> Components: scripts
> Affects Versions: 3.3.2
> Reporter: Ted Dunning
> Assignee: Ted Dunning
> Fix For: 3.3.3, 3.4.0
>
> Attachments: ZOOKEEPER-1061.patch
>
>
> The zkServer.sh script doesn't check properly to see if a previously started
> server is still running. If you call start twice, the second invocation
> will over-write the PID file with a process that then fails due to port
> occupancy.
> This means that stop will subsequently fail.
> Here is a reference that describes how init scripts should normally work:
> http://refspecs.freestandards.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira