You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Jim Blye (Jira)" <ji...@apache.org> on 2022/09/28 22:20:00 UTC

[jira] [Created] (DAEMON-449) Prunsrv fails to stop OpenLiberty Windows service

Jim Blye created DAEMON-449:
-------------------------------

             Summary: Prunsrv fails to stop OpenLiberty Windows service
                 Key: DAEMON-449
                 URL: https://issues.apache.org/jira/browse/DAEMON-449
             Project: Commons Daemon
          Issue Type: Bug
          Components: prunsrv
    Affects Versions: 1.2.2
         Environment: I don't think the Windows version matters, but I am using:
Microsoft Windows [Version 10.0.19044.2006]
            Reporter: Jim Blye
         Attachments: commons-daemon.2022-09-28.log, commons-daemon.2022-09-28_afterKillingServer.log, server.bat

When Prunsrv is used to register Open Liberty ([https://openliberty.io|https://openliberty.io/]) as a Windows Service, stopping the service hangs randomly.

*To recreate the problem:*

  1) Download open liberty  ~300MB

           [https://public.dhe.ibm.com/ibmdl/export/pub/software/openliberty/runtime/release/22.0.0.10/openliberty-22.0.0.10.zip]
      Alternatively, you could use just the liberty kernel ~10MB

          [https://public.dhe.ibm.com/ibmdl/export/pub/software/openliberty/runtime/release/22.0.0.10/openliberty-kernel-22.0.0.10.zip]

  2) md C:\temp\openliberty

       unzip openliberty-22.0.0.10.zip into C:\temp\openliberty

  3) cd C:\temp\openliberty\wlp\bin

  4) Run these two commands to make sure the server runs and to initialize the environment:
       server start
       server stop

   5) Register liberty as a service (parameter is case sensitive).  The following command is used to invoke prunsrv to register the service using the default name of defaultServer

        server registerWinService

    6)  Open the windows "services" app (services.msc).   Start and stop the service until the stop hangs.  It usually doesn't take more than a couple of tries.

 
*Details*

The *server.bat* script registers the service like this:

"C:\temp\openliberty\wlp\bin\tools\win\prunsrv.exe"  //IS//defaultServer --Startup=manual --DisplayName="defaultServer" --Description="Open Liberty" ++DependsOn=Tcpip --LogPath="C:\temp\openliberty\wlp\usr\servers\defaultServer\logs" --StdOutput=auto --StdError=auto --StartMode=exe --StartPath="C:\temp\openliberty\wlp" --StartImage="C:\temp\openliberty\wlp\bin\server.bat" ++StartParams=start#defaultServer --StopMode=exe --StopPath="C:\temp\openliberty\wlp" --StopImage="C:\temp\wlp\bin\server.bat" ++StopParams=stop#defaultServer --ServiceUser=LocalSystem

After registering the service you can look at its properties.  You will see:

   Path to executable:
   C:\temp\openliberty\wlp\bin\tools\win\prunsrv.exe //RS//defaultServer

When I (and many of our customers) try to stop the service, it hangs.   At that point, the server, named defaultServer is still up and running.  I can send commands to the server.  For instance, I can execute a "server dump" command. This sends the "dump" command to the server, and the server writes information to a file.  I can also stop the server by executing "server stop".  This sends the "stop" command to the server which causes the server to stop.  When the server stops, the hanging Windows service stops as well.

I have attached a *server.bat* which adds --LogLevel Debug to the prunsrv commands and also *commons-daemon.2022-09-28.log* which demonstrates the problem. It shows registering, starting, and stopping the service.  Finally, I uploaded {*}commons-daemon.2022-09-28_afterKillingServer.log{*}, which is a continuation of the other log file which shows the result of issuing the server stop command to stop the server.

Thanks for looking at this.
Jim Blye



--
This message was sent by Atlassian Jira
(v8.20.10#820010)