On 04/02/2021 14:52, Gary Gregory wrote:
May you please document this change in changes.xml?

I have another improvement to finish https://issues.apache.org/jira/browse/DAEMON-314, I will add the description in changes.xml when I get it working: Actually prunsrv.exe /SS service_name reports an error but waits only 1000 ms it seems, I need to find a clean way to make it wait for the --StopTimeout=nn value before reporting an error.


Gary

On Thu, Feb 4, 2021, 08:14 <jfcl...@apache.org> wrote:

This is an automated email from the ASF dual-hosted git repository.

jfclere pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-daemon.git


The following commit(s) were added to refs/heads/master by this push:
      new 5bca7af  Apply --StopTimeout=nn to the command or class that does
the stop. Otherwise it might wait for ever and the processes have to be
kill by hands.
5bca7af is described below

commit 5bca7af78162fbdd2d2f4b6b95470b29d15039a8
Author: Jean-Frederic Clere <jfcl...@gmail.com>
AuthorDate: Thu Feb 4 13:29:08 2021 +0100

     Apply --StopTimeout=nn to the command or class that does the stop.
     Otherwise it might wait for ever and the processes have to be kill by
     hands.
---
  src/native/windows/apps/prunsrv/prunsrv.c | 14 ++++++++++----
  1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/src/native/windows/apps/prunsrv/prunsrv.c
b/src/native/windows/apps/prunsrv/prunsrv.c
index c49295f..6b283b2 100644
--- a/src/native/windows/apps/prunsrv/prunsrv.c
+++ b/src/native/windows/apps/prunsrv/prunsrv.c
@@ -1135,6 +1135,8 @@ static DWORD WINAPI serviceStop(LPVOID lpParameter)
          apxLogWrite(APXLOG_MARK_INFO "Worker is not defined.");
          return TRUE;    /* Nothing to do */
      }
+    if (timeout > 0x7FFFFFFF)
+        timeout = INFINITE;     /* If the timeout was '-1' wait forewer */
      if (_jni_shutdown) {
          if (!IS_VALID_STRING(SO_STARTPATH) &&
IS_VALID_STRING(SO_STOPPATH)) {
              /* If the Working path is specified change the current
directory
@@ -1178,7 +1180,10 @@ static DWORD WINAPI serviceStop(LPVOID lpParameter)
              }
              else {
                  apxLogWrite(APXLOG_MARK_DEBUG "Waiting for Java JNI stop
worker to finish for %s:%s...", _jni_sclass, _jni_smethod);
-                apxJavaWait(hWorker, INFINITE, FALSE);
+                if (!timeout)
+                    apxJavaWait(hWorker, INFINITE, FALSE);
+                else
+                    apxJavaWait(hWorker, timeout, FALSE);
                  apxLogWrite(APXLOG_MARK_DEBUG "Java JNI stop worker
finished.");
              }
          }
@@ -1251,7 +1256,10 @@ static DWORD WINAPI serviceStop(LPVOID lpParameter)
              goto cleanup;
          } else {
              apxLogWrite(APXLOG_MARK_DEBUG "Waiting for stop worker to
finish...");
-            apxHandleWait(hWorker, INFINITE, FALSE);
+            if (!timeout)
+                apxHandleWait(hWorker, INFINITE, FALSE);
+            else
+                apxHandleWait(hWorker, timeout, FALSE);
              apxLogWrite(APXLOG_MARK_DEBUG "Stop worker finished.");
          }
          wait_to_die = TRUE;
@@ -1272,8 +1280,6 @@ cleanup:
          CloseHandle(gSignalThread);
          gSignalEvent = NULL;
      }
-    if (timeout > 0x7FFFFFFF)
-        timeout = INFINITE;     /* If the timeout was '-1' wait forewer */
      if (wait_to_die && !timeout)
          timeout = 300 * 1000;   /* Use the 5 minute default shutdown */






--
Cheers

Jean-Frederic

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org
For additional commands, e-mail: dev-h...@commons.apache.org

Reply via email to