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/05/27 21:05:26 UTC

svn commit: r1343079 - in /tomcat/jk/trunk/native/common: jk_ajp_common.c jk_status.c

Author: mturk
Date: Sun May 27 19:05:26 2012
New Revision: 1343079

URL: http://svn.apache.org/viewvc?rev=1343079&view=rev
Log:
Fix 0.0.0.0:0 address bug for workers. Make sure we force pull and address resolve

Modified:
    tomcat/jk/trunk/native/common/jk_ajp_common.c
    tomcat/jk/trunk/native/common/jk_status.c

Modified: tomcat/jk/trunk/native/common/jk_ajp_common.c
URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_ajp_common.c?rev=1343079&r1=1343078&r2=1343079&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_ajp_common.c (original)
+++ tomcat/jk/trunk/native/common/jk_ajp_common.c Sun May 27 19:05:26 2012
@@ -1130,10 +1130,11 @@ void jk_ajp_push(ajp_worker_t * aw, int 
      ++aw->s->h.sequence;
     aw->sequence = aw->s->h.sequence;
     if (aw->s->addr_sequence != aw->addr_sequence) {
+        ++aw->s->addr_sequence;
         address_change = JK_TRUE;
         strncpy(aw->s->host, aw->host, JK_SHM_STR_SIZ);
         aw->s->port = aw->port;
-        aw->s->addr_sequence = aw->addr_sequence;
+        aw->addr_sequence = aw->s->h.sequence;
     }
     if (locked == JK_FALSE)
         jk_shm_unlock();
@@ -2682,16 +2683,13 @@ int ajp_validate(jk_worker_t *pThis,
             host = "undefined";
         }
         strncpy(p->host, jk_get_worker_host(props, p->name, host), JK_SHM_STR_SIZ);
-
-        if (JK_IS_DEBUG_LEVEL(l))
-            jk_log(l, JK_LOG_DEBUG,
-                   "worker %s contact is '%s:%d'",
-                   p->name, p->host, p->port);
-        /* Copy the contact to shm
-         */
         if (p->s->h.sequence == 0) {
             /* Initial setup.
              */
+            if (JK_IS_DEBUG_LEVEL(l))
+                jk_log(l, JK_LOG_DEBUG,
+                       "worker %s contact is '%s:%d'",
+                       p->name, p->host, p->port);
             if (p->port > 0) {
                 if (!jk_resolve(p->host, p->port, &p->worker_inet_addr, we->pool, l)) {
                     jk_log(l, JK_LOG_ERROR,
@@ -2704,9 +2702,12 @@ int ajp_validate(jk_worker_t *pThis,
                                p->name);
                 }
             }
+            p->addr_sequence    = 0;
             p->s->addr_sequence = 0;
             p->s->last_maintain_time = time(NULL);
             p->s->last_reset = p->s->last_maintain_time;
+            p->s->port = p->port;
+            strncpy(p->s->host, p->host, JK_SHM_STR_SIZ);
             jk_ajp_push(p, JK_TRUE, l);
         }
         else {
@@ -2714,8 +2715,10 @@ int ajp_validate(jk_worker_t *pThis,
              */
             if (JK_IS_DEBUG_LEVEL(l))
                 jk_log(l, JK_LOG_DEBUG,
-                       "worker %s contact already configured (%u->%u",
-                        p->name, p->s->addr_sequence, p->addr_sequence);
+                       "worker %s contact '%s:%d' already configured (%u->%u)",
+                        p->name, p->host, p->port, p->s->addr_sequence, p->addr_sequence);
+            /* Force resolve */
+            p->addr_sequence = -1;
             jk_ajp_pull(p, JK_TRUE, l);
         }
         JK_TRACE_EXIT(l);

Modified: tomcat/jk/trunk/native/common/jk_status.c
URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_status.c?rev=1343079&r1=1343078&r2=1343079&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_status.c (original)
+++ tomcat/jk/trunk/native/common/jk_status.c Sun May 27 19:05:26 2012
@@ -4159,7 +4159,7 @@ static int update_worker(jk_ws_service_t
                 rv = 0;
                 rc = commit_member(s, p, lb, wr, aw, &rv, l);
                 if (rv & JK_STATUS_NEEDS_ADDR_PUSH) {
-                    aw->addr_sequence++;
+                    aw->addr_sequence = -1;
                 }
                 if (rv & (JK_STATUS_NEEDS_PUSH | JK_STATUS_NEEDS_ADDR_PUSH)) {
                     wr->sequence = -1;
@@ -4209,10 +4209,10 @@ static int update_worker(jk_ws_service_t
             rv = 0;
             rc = commit_member(s, p, NULL, NULL, aw, &rv, l);
             if (rv & JK_STATUS_NEEDS_ADDR_PUSH) {
-                aw->addr_sequence++;
+                aw->addr_sequence = -1;
             }
             if (rv & (JK_STATUS_NEEDS_PUSH | JK_STATUS_NEEDS_ADDR_PUSH)) {
-                aw->sequence = 0;
+                aw->sequence = -1;
                 jk_ajp_push(aw, JK_TRUE, l);
             }
             if (rc == JK_FALSE) {



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


Re: svn commit: r1343079 - in /tomcat/jk/trunk/native/common: jk_ajp_common.c jk_status.c

Posted by Mladen Turk <mt...@apache.org>.
On 05/28/2012 12:42 PM, Konstantin Kolinko wrote:
> 2012/5/27<mt...@apache.org>:
>> -        aw->s->addr_sequence = aw->addr_sequence;
>> +        aw->addr_sequence = aw->s->h.sequence;
>
> The above line, was it supposed to be
>
> aw->addr_sequence = aw->s->addr_sequence;

Yeah. Fixed. Thanks :)

Cheers
-- 
^TM

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


Re: svn commit: r1343079 - in /tomcat/jk/trunk/native/common: jk_ajp_common.c jk_status.c

Posted by Konstantin Kolinko <kn...@gmail.com>.
2012/5/27  <mt...@apache.org>:
> Author: mturk
> Date: Sun May 27 19:05:26 2012
> New Revision: 1343079
>
> URL: http://svn.apache.org/viewvc?rev=1343079&view=rev
> Log:
> Fix 0.0.0.0:0 address bug for workers. Make sure we force pull and address resolve
>
> Modified:
>    tomcat/jk/trunk/native/common/jk_ajp_common.c
>    tomcat/jk/trunk/native/common/jk_status.c
>
> Modified: tomcat/jk/trunk/native/common/jk_ajp_common.c
> URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_ajp_common.c?rev=1343079&r1=1343078&r2=1343079&view=diff
> ==============================================================================
> --- tomcat/jk/trunk/native/common/jk_ajp_common.c (original)
> +++ tomcat/jk/trunk/native/common/jk_ajp_common.c Sun May 27 19:05:26 2012
> @@ -1130,10 +1130,11 @@ void jk_ajp_push(ajp_worker_t * aw, int
>      ++aw->s->h.sequence;
>     aw->sequence = aw->s->h.sequence;
>     if (aw->s->addr_sequence != aw->addr_sequence) {
> +        ++aw->s->addr_sequence;
>         address_change = JK_TRUE;
>         strncpy(aw->s->host, aw->host, JK_SHM_STR_SIZ);
>         aw->s->port = aw->port;
> -        aw->s->addr_sequence = aw->addr_sequence;
> +        aw->addr_sequence = aw->s->h.sequence;

The above line, was it supposed to be

aw->addr_sequence = aw->s->addr_sequence;

? (I do not really understand it. Just thinking of symmetry and
comparing it with the two lines just above the if(),
[[[
  ++aw->s->h.sequence;
  aw->sequence = aw->s->h.sequence;
]]]
)

Best regards,
Konstantin Kolinko

>     }
>     if (locked == JK_FALSE)
>         jk_shm_unlock();
> @@ -2682,16 +2683,13 @@ int ajp_validate(jk_worker_t *pThis,
>             host = "undefined";
>         }
>         strncpy(p->host, jk_get_worker_host(props, p->name, host), JK_SHM_STR_SIZ);
> -
> -        if (JK_IS_DEBUG_LEVEL(l))
> -            jk_log(l, JK_LOG_DEBUG,
> -                   "worker %s contact is '%s:%d'",
> -                   p->name, p->host, p->port);
> -        /* Copy the contact to shm
> -         */
>         if (p->s->h.sequence == 0) {
>             /* Initial setup.
>              */
> +            if (JK_IS_DEBUG_LEVEL(l))
> +                jk_log(l, JK_LOG_DEBUG,
> +                       "worker %s contact is '%s:%d'",
> +                       p->name, p->host, p->port);
>             if (p->port > 0) {
>                 if (!jk_resolve(p->host, p->port, &p->worker_inet_addr, we->pool, l)) {
>                     jk_log(l, JK_LOG_ERROR,
> @@ -2704,9 +2702,12 @@ int ajp_validate(jk_worker_t *pThis,
>                                p->name);
>                 }
>             }
> +            p->addr_sequence    = 0;
>             p->s->addr_sequence = 0;
>             p->s->last_maintain_time = time(NULL);
>             p->s->last_reset = p->s->last_maintain_time;
> +            p->s->port = p->port;
> +            strncpy(p->s->host, p->host, JK_SHM_STR_SIZ);
>             jk_ajp_push(p, JK_TRUE, l);
>         }
>         else {
> @@ -2714,8 +2715,10 @@ int ajp_validate(jk_worker_t *pThis,
>              */
>             if (JK_IS_DEBUG_LEVEL(l))
>                 jk_log(l, JK_LOG_DEBUG,
> -                       "worker %s contact already configured (%u->%u",
> -                        p->name, p->s->addr_sequence, p->addr_sequence);
> +                       "worker %s contact '%s:%d' already configured (%u->%u)",
> +                        p->name, p->host, p->port, p->s->addr_sequence, p->addr_sequence);
> +            /* Force resolve */
> +            p->addr_sequence = -1;
>             jk_ajp_pull(p, JK_TRUE, l);
>         }
>         JK_TRACE_EXIT(l);
>
> Modified: tomcat/jk/trunk/native/common/jk_status.c
> URL: http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_status.c?rev=1343079&r1=1343078&r2=1343079&view=diff
> ==============================================================================
> --- tomcat/jk/trunk/native/common/jk_status.c (original)
> +++ tomcat/jk/trunk/native/common/jk_status.c Sun May 27 19:05:26 2012
> @@ -4159,7 +4159,7 @@ static int update_worker(jk_ws_service_t
>                 rv = 0;
>                 rc = commit_member(s, p, lb, wr, aw, &rv, l);
>                 if (rv & JK_STATUS_NEEDS_ADDR_PUSH) {
> -                    aw->addr_sequence++;
> +                    aw->addr_sequence = -1;
>                 }
>                 if (rv & (JK_STATUS_NEEDS_PUSH | JK_STATUS_NEEDS_ADDR_PUSH)) {
>                     wr->sequence = -1;
> @@ -4209,10 +4209,10 @@ static int update_worker(jk_ws_service_t
>             rv = 0;
>             rc = commit_member(s, p, NULL, NULL, aw, &rv, l);
>             if (rv & JK_STATUS_NEEDS_ADDR_PUSH) {
> -                aw->addr_sequence++;
> +                aw->addr_sequence = -1;
>             }
>             if (rv & (JK_STATUS_NEEDS_PUSH | JK_STATUS_NEEDS_ADDR_PUSH)) {
> -                aw->sequence = 0;
> +                aw->sequence = -1;
>                 jk_ajp_push(aw, JK_TRUE, l);
>             }
>             if (rc == JK_FALSE) {
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
> For additional commands, e-mail: dev-help@tomcat.apache.org
>

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