You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by mt...@apache.org on 2008/09/16 11:28:33 UTC
svn commit: r695784 -
/tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c
Author: mturk
Date: Tue Sep 16 02:28:33 2008
New Revision: 695784
URL: http://svn.apache.org/viewvc?rev=695784&view=rev
Log:
Use 100ms step for watchdog thread and wait until exited on shutdown
Modified:
tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c
Modified: tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c
URL: http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c?rev=695784&r1=695783&r2=695784&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c (original)
+++ tomcat/connectors/trunk/jk/native/iis/jk_isapi_plugin.c Tue Sep 16 02:28:33 2008
@@ -200,6 +200,7 @@
static int use_auth_notification_flags = 1;
static int reject_unsafe = 0;
static int watchdog_interval = 0;
+static HANDLE watchdog_handle = NULL;
#define URI_SELECT_OPT_PARSED 0
#define URI_SELECT_OPT_UNPARSED 1
@@ -1573,7 +1574,11 @@
if (is_inited) {
is_inited = JK_FALSE;
-
+ if (watchdog_handle) {
+ WaitForSingleObject(watchdog_handle, INFINITE);
+ CloseHandle(watchdog_handle);
+ watchdog_handle = NULL;
+ }
if (is_mapread) {
uri_worker_map_free(&uw_map, logger);
is_mapread = JK_FALSE;
@@ -1655,12 +1660,18 @@
static DWORD WINAPI watchdog_thread(void *param)
{
+ int i;
if (JK_IS_DEBUG_LEVEL(logger)) {
jk_log(logger, JK_LOG_DEBUG,
- "Watchdog thread initialized");
+ "Watchdog thread initialized with %u second interval",
+ watchdog_interval);
}
while (is_inited) {
- Sleep(watchdog_interval * 1000);
+ for (i = 0; i < (watchdog_interval * 10); i++) {
+ if (!is_inited)
+ break;
+ Sleep(100);
+ }
if (!is_inited)
break;
if (JK_IS_DEBUG_LEVEL(logger)) {
@@ -1669,6 +1680,10 @@
}
wc_maintain(logger);
}
+ if (JK_IS_DEBUG_LEVEL(logger)) {
+ jk_log(logger, JK_LOG_DEBUG,
+ "Watchdog thread finished");
+ }
return 0;
}
@@ -1820,10 +1835,17 @@
}
}
}
- if (rc && watchdog_interval) {
- HANDLE wt;
- DWORD wi;
- wt = CreateThread(NULL, 0, watchdog_thread, NULL, 0, &wi);
+ if (rc) {
+ if (watchdog_interval) {
+ DWORD wi;
+ watchdog_handle = CreateThread(NULL, 0, watchdog_thread,
+ NULL, 0, &wi);
+ if (!watchdog_handle) {
+ rc = GetLastError();
+ jk_log(logger, JK_LOG_ERROR, "Error creating Watchdog thread");
+ return rc;
+ }
+ }
jk_log(logger, JK_LOG_INFO, "%s initialized", (VERSION_STRING) );
}
return rc;
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org