Author: rjung
Date: Sun Jan 13 15:19:28 2008
New Revision: 611672

URL: http://svn.apache.org/viewvc?rev=611672&view=rev
Log:
Add push/pull for new ajp shm worker.

Modified:
    tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c
    tomcat/connectors/trunk/jk/native/common/jk_ajp_common.h
    tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c

Modified: tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c?rev=611672&r1=611671&r2=611672&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_ajp_common.c Sun Jan 13 
15:19:28 2008
@@ -942,6 +942,50 @@
     return rc;
 }
 
+/* Syncing config values from shm */
+void jk_ajp_pull(ajp_worker_t * aw, jk_logger_t *l)
+{
+    JK_TRACE_ENTER(l);
+
+    if (JK_IS_DEBUG_LEVEL(l))
+        jk_log(l, JK_LOG_DEBUG,
+               "syncing mem for ajp worker '%s' from shm",
+               aw->name);
+
+    aw->cache_timeout = aw->s->cache_timeout;
+    aw->connect_timeout = aw->s->connect_timeout;
+    aw->reply_timeout = aw->s->reply_timeout;
+    aw->prepost_timeout = aw->s->prepost_timeout;
+    aw->recovery_opts = aw->s->recovery_opts;
+    aw->retries = aw->s->retries;
+    aw->max_packet_size = aw->s->max_packet_size;
+    aw->sequence = aw->s->h.sequence;
+
+    JK_TRACE_EXIT(l);
+}
+
+/* Syncing config values to shm */
+void jk_ajp_push(ajp_worker_t * aw, jk_logger_t *l)
+{
+    JK_TRACE_ENTER(l);
+
+    if (JK_IS_DEBUG_LEVEL(l))
+        jk_log(l, JK_LOG_DEBUG,
+               "syncing shm for ajp worker '%s' from mem",
+               aw->name);
+
+    aw->s->cache_timeout = aw->cache_timeout;
+    aw->s->connect_timeout = aw->connect_timeout;
+    aw->s->reply_timeout = aw->reply_timeout;
+    aw->s->prepost_timeout = aw->prepost_timeout;
+    aw->s->recovery_opts = aw->recovery_opts;
+    aw->s->retries = aw->retries;
+    aw->s->max_packet_size = aw->max_packet_size;
+    aw->s->h.sequence = aw->sequence;
+
+    JK_TRACE_EXIT(l);
+}
+
 /** Send a message to an endpoint, using corresponding PROTO HEADER
  * @param ae       endpoint
  * @param msg      message to send
@@ -2041,6 +2085,11 @@
 
     p = e->endpoint_private;
     aw = p->worker;
+
+    jk_shm_lock();
+    if (aw->sequence != aw->s->h.sequence)
+        jk_ajp_pull(aw, l);
+    jk_shm_unlock();
 
     aw->s->used++;
 

Modified: tomcat/connectors/trunk/jk/native/common/jk_ajp_common.h
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_ajp_common.h?rev=611672&r1=611671&r2=611672&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_ajp_common.h (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_ajp_common.h Sun Jan 13 
15:19:28 2008
@@ -403,6 +403,10 @@
 
 void ajp_close_endpoint(ajp_endpoint_t * ae, jk_logger_t *l);
 
+void jk_ajp_pull(ajp_worker_t * aw, jk_logger_t *l);
+
+void jk_ajp_push(ajp_worker_t * aw, jk_logger_t *l);
+
 int ajp_connection_tcp_send_message(ajp_endpoint_t * ae,
                                     jk_msg_buf_t *msg, jk_logger_t *l);
 

Modified: tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c
URL: 
http://svn.apache.org/viewvc/tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c?rev=611672&r1=611671&r2=611672&view=diff
==============================================================================
--- tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c (original)
+++ tomcat/connectors/trunk/jk/native/common/jk_lb_worker.c Sun Jan 13 15:19:28 
2008
@@ -287,10 +287,15 @@
     for (i = 0; i < p->num_of_workers; i++) {
         lb_sub_worker_t *w = &p->lb_workers[i];
         if (w->sequence != w->s->h.sequence) {
+            jk_worker_t *jw = w->worker;
+            ajp_worker_t *aw = (ajp_worker_t *)jw->worker_private;
+
             if (JK_IS_DEBUG_LEVEL(l))
                 jk_log(l, JK_LOG_DEBUG,
                        "syncing mem for member '%s' of lb '%s' from shm",
                        w->name, p->name);
+
+            jk_ajp_pull(aw, l);
             strncpy(w->route, w->s->route, JK_SHM_STR_SIZ);
             strncpy(w->domain, w->s->domain, JK_SHM_STR_SIZ);
             strncpy(w->redirect, w->s->redirect, JK_SHM_STR_SIZ);
@@ -329,10 +334,15 @@
     for (i = 0; i < p->num_of_workers; i++) {
         lb_sub_worker_t *w = &p->lb_workers[i];
         if (w->sequence != w->s->h.sequence) {
+            jk_worker_t *jw = w->worker;
+            ajp_worker_t *aw = (ajp_worker_t *)jw->worker_private;
+
             if (JK_IS_DEBUG_LEVEL(l))
                 jk_log(l, JK_LOG_DEBUG,
                        "syncing shm for member '%s' of lb '%s' from mem",
                        w->name, p->name);
+
+            jk_ajp_push(aw, l);
             strncpy(w->s->route, w->route, JK_SHM_STR_SIZ);
             strncpy(w->s->domain, w->domain, JK_SHM_STR_SIZ);
             strncpy(w->s->redirect, w->redirect, JK_SHM_STR_SIZ);



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to