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 2012/03/19 06:52:51 UTC

svn commit: r1302277 - in /tomcat/jk/trunk/native: common/jk_lb_worker.c iis/jk_isapi_plugin.c

Author: mturk
Date: Mon Mar 19 05:52:50 2012
New Revision: 1302277

URL: http://svn.apache.org/viewvc?rev=1302277&view=rev
Log:
Guard init_jk both by critial section and process mutex

Modified:
    tomcat/jk/trunk/native/common/jk_lb_worker.c
    tomcat/jk/trunk/native/iis/jk_isapi_plugin.c

Modified: tomcat/jk/trunk/native/common/jk_lb_worker.c
URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_lb_worker.c?rev=1302277&r1=1302276&r2=1302277&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_lb_worker.c (original)
+++ tomcat/jk/trunk/native/common/jk_lb_worker.c Mon Mar 19 05:52:50 2012
@@ -1170,7 +1170,7 @@ static int JK_METHOD service(jk_endpoint
     if (jk_b_set_buffer_size(s->reco_buf, p->worker->max_packet_size)) {
         *is_error = JK_HTTP_SERVER_ERROR;
         jk_log(l, JK_LOG_ERROR,
-               "Failed allocating AJP message buffer");
+               "Failed allocating AJP message buffer of %d bytes.", p->worker->max_packet_size);
         JK_TRACE_EXIT(l);
         return JK_SERVER_ERROR;
     }

Modified: tomcat/jk/trunk/native/iis/jk_isapi_plugin.c
URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/native/iis/jk_isapi_plugin.c?rev=1302277&r1=1302276&r2=1302277&view=diff
==============================================================================
--- tomcat/jk/trunk/native/iis/jk_isapi_plugin.c (original)
+++ tomcat/jk/trunk/native/iis/jk_isapi_plugin.c Mon Mar 19 05:52:50 2012
@@ -495,7 +495,7 @@ static char worker_file[MAX_PATH * 2];
 static char worker_mount_file[MAX_PATH * 2] = {0};
 static int  worker_mount_reload = JK_URIMAP_DEF_RELOAD;
 static char rewrite_rule_file[MAX_PATH * 2] = {0};
-static size_t shm_config_size = 0;
+static size_t shm_config_size = -1;
 static int  strip_session = 0;
 static int  use_auth_notification_flags = 1;
 static int  chunked_encoding_enabled = JK_FALSE;
@@ -2155,6 +2155,7 @@ DWORD WINAPI HttpFilterProc(PHTTP_FILTER
                             DWORD dwNotificationType, LPVOID pvNotification)
 {
     /* Initialise jk */
+    EnterCriticalSection(&log_cs);
     if (is_inited && !is_mapread) {
         char serverName[MAX_SERVERNAME] = "";
         char instanceId[MAX_INSTANCEID] = "";
@@ -2179,6 +2180,7 @@ DWORD WINAPI HttpFilterProc(PHTTP_FILTER
         if (!is_mapread)
             is_inited = JK_FALSE;
     }
+    LeaveCriticalSection(&log_cs);
     if (!is_inited) {
         /* In case the initialization failed
          * return error. This will make entire IIS
@@ -2235,6 +2237,7 @@ DWORD WINAPI HttpExtensionProc(LPEXTENSI
     JK_TRACE_ENTER(logger);
 
     /* Initialise jk */
+    EnterCriticalSection(&log_cs);
     if (is_inited && !is_mapread) {
         char serverName[MAX_SERVERNAME] = "";
         char instanceId[MAX_INSTANCEID] = "";
@@ -2260,6 +2263,7 @@ DWORD WINAPI HttpExtensionProc(LPEXTENSI
         if (!is_mapread)
             is_inited = JK_FALSE;
     }
+    LeaveCriticalSection(&log_cs);
 
     if (!is_inited) {
         jk_log(logger, JK_LOG_ERROR, "not initialized");
@@ -2798,16 +2802,17 @@ static int init_jk(char *serverName)
                 /*
                  * Create named shared memory for each server
                  */
-                if (shm_config_size == 0) {
+                if (shm_config_size == -1) {
                     shm_config_size = jk_shm_calculate_size(workers_map, logger);
                 }
-                else {
+                else if (shm_config_size > 0) {
                     jk_log(logger, JK_LOG_WARNING,
                            "The optimal shared memory size can now be determined automatically.");
                     jk_log(logger, JK_LOG_WARNING,
                            "You can remove the shm_size attribute if you want to use the optimal size.");
                 }
-                if ((rv = jk_shm_open(shm_name, shm_config_size, logger)) != 0) {
+                if ((shm_config_size > 0) &&
+                    (rv = jk_shm_open(shm_name, shm_config_size, logger)) != 0) {
                     jk_log(logger, JK_LOG_ERROR,
                            "Initializing shm:%s errno=%d. Load balancing workers will not function properly",
                            jk_shm_name(), rv);
@@ -2841,9 +2846,12 @@ static int init_jk(char *serverName)
 
                 if (wc_open(workers_map, &worker_env, logger)) {
                     rc = JK_TRUE;
+                    uri_worker_map_ext(uw_map, logger);
+                    uri_worker_map_switch(uw_map, logger);
+                }
+                else {
+                    jk_shm_close();
                 }
-                uri_worker_map_ext(uw_map, logger);
-                uri_worker_map_switch(uw_map, logger);
             }
             else {
                 jk_log(logger, JK_LOG_EMERG,



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org