mturk       2005/05/18 11:04:53

  Modified:    jk/native/apache-1.3 mod_jk.c
               jk/native/apache-2.0 mod_jk.c
               jk/native/common jk_ajp_common.c jk_global.h jk_service.h
               jk/native/iis jk_isapi_plugin.c
               jk/native/netscape jk_nsapi_plugin.c
               jk/xdocs changelog.xml
               jk/xdocs/config apache.xml
  Log:
  Adde FlushPackets option.
  
  Revision  Changes    Path
  1.83      +19 -7     jakarta-tomcat-connectors/jk/native/apache-1.3/mod_jk.c
  
  Index: mod_jk.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/apache-1.3/mod_jk.c,v
  retrieving revision 1.82
  retrieving revision 1.83
  diff -u -r1.82 -r1.83
  --- mod_jk.c  15 May 2005 11:10:11 -0000      1.82
  +++ mod_jk.c  18 May 2005 18:04:52 -0000      1.83
  @@ -300,6 +300,15 @@
       return JK_FALSE;
   }
   
  +static void JK_METHOD ws_flush(jk_ws_service_t *s)
  +{
  +    if (s && s->ws_private) {
  +        apache_private_data_t *p = s->ws_private;
  +        BUFF *bf = p->r->connection->client;
  +        ap_bflush(bf);
  +    }
  +}
  +
   /*
    * Write a chunk of response data back to the browser.  If the headers
    * haven't yet been sent over, send over default header values (Status =
  @@ -317,7 +326,6 @@
           apache_private_data_t *p = s->ws_private;
   
           if (len) {
  -            BUFF *bf = p->r->connection->client;
               char *buf = (char *)b;
               int w = (int)len;
               int r = 0;
  @@ -329,6 +337,7 @@
               }
   
               if (p->r->header_only) {
  +                BUFF *bf = p->r->connection->client;
                   ap_bflush(bf);
                   return JK_TRUE;
               }
  @@ -351,11 +360,6 @@
                   }
   
               }
  -
  -            /*
  -             * To allow server push.
  -             */
  -            ap_bflush(bf);
           }
   
           return JK_TRUE;
  @@ -436,6 +440,7 @@
       s->start_response = ws_start_response;
       s->read = ws_read;
       s->write = ws_write;
  +    s->flush = ws_flush;
   
       /* Clear RECO status */
       s->reco_status = RECO_NONE;
  @@ -454,6 +459,10 @@
       else
           s->remote_addr = NULL_FOR_EMPTY(r->connection->remote_ip);
   
  +    if (conf->options & JK_OPT_FLUSHPACKETS)
  +        s->flush_packets = 1;
  +    else
  +        s->flush_packets = 0;
       /* get server name */
       /* s->server_name  = (char *)(r->hostname ? r->hostname : 
r->server->server_hostname); */
       /* XXX : à la jk2 */
  @@ -1503,6 +1512,9 @@
           else if (!strcasecmp(w, "ForwardLocalAddress")) {
               opt = JK_OPT_FWDLOCAL;
           }
  +        else if (!strcasecmp(w, "FlushPackets")) {
  +            opt = JK_OPT_FLUSHPACKETS;
  +        }
           else
               return ap_pstrcat(cmd->pool, "JkOptions: Illegal option '", w,
                                 "'", NULL);
  
  
  
  1.146     +14 -14    jakarta-tomcat-connectors/jk/native/apache-2.0/mod_jk.c
  
  Index: mod_jk.c
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/apache-2.0/mod_jk.c,v
  retrieving revision 1.145
  retrieving revision 1.146
  diff -u -r1.145 -r1.146
  --- mod_jk.c  15 May 2005 11:10:11 -0000      1.145
  +++ mod_jk.c  18 May 2005 18:04:52 -0000      1.146
  @@ -317,6 +317,14 @@
       return JK_FALSE;
   }
   
  +static void JK_METHOD ws_flush(jk_ws_service_t *s)
  +{
  +    if (s && s->ws_private) {
  +        apache_private_data_t *p = s->ws_private;
  +        ap_rflush(p->r);
  +    }
  +}
  +
   /*
    * Write a chunk of response data back to the browser.  If the headers
    * haven't yet been sent over, send over default header values (Status =
  @@ -387,18 +395,6 @@
                   }
   
               }
  -
  -            /*
  -             * To allow server push. After writing full buffers
  -             */
  -#ifndef AS400
  -            if (ap_rflush(p->r) != APR_SUCCESS) {
  -                ap_log_error(APLOG_MARK, APLOG_STARTUP | APLOG_CRIT, 0,
  -                             NULL, "mod_jk: Error flushing");
  -                return JK_FALSE;
  -            }
  -#endif
  -
           }
   
           return JK_TRUE;
  @@ -462,6 +458,7 @@
       s->start_response = ws_start_response;
       s->read = ws_read;
       s->write = ws_write;
  +    s->flush = ws_flush;
   
       /* Clear RECO status */
       s->reco_status = RECO_NONE;
  @@ -478,7 +475,10 @@
           s->remote_addr = NULL_FOR_EMPTY(r->connection->local_ip);
       else
           s->remote_addr = NULL_FOR_EMPTY(r->connection->remote_ip);
  -
  +    if (conf->options & JK_OPT_FLUSHPACKETS)
  +        s->flush_packets = 1;
  +    else
  +        s->flush_packets = 0;
       /* get server name */
       s->server_name = (char *)ap_get_server_name(r);
   
  
  
  
  1.117     +15 -12    
jakarta-tomcat-connectors/jk/native/common/jk_ajp_common.c
  
  Index: jk_ajp_common.c
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_ajp_common.c,v
  retrieving revision 1.116
  retrieving revision 1.117
  diff -u -r1.116 -r1.117
  --- jk_ajp_common.c   15 May 2005 17:06:05 -0000      1.116
  +++ jk_ajp_common.c   18 May 2005 18:04:53 -0000      1.117
  @@ -1377,6 +1377,8 @@
                   JK_TRACE_EXIT(l);
                   return JK_CLIENT_ERROR;
               }
  +            if (r->flush && r->flush_packets)
  +                r->flush(r);
           }
           break;
   
  @@ -1410,18 +1412,19 @@
           break;
   
       case JK_AJP13_END_RESPONSE:
  -        {
  -            ae->reuse = (int)jk_b_get_byte(msg);
  +        ae->reuse = (int)jk_b_get_byte(msg);
  +        if (!ae->reuse) {
  +            /*
  +                * Strange protocol error.
  +                */
  +            jk_log(l, JK_LOG_INFO, " Protocol error: Reuse is set to false");
  +        }
  +        /* Flush after the last write */
  +        if (r->flush && !r->flush_packets)
  +            r->flush(r);
   
  -            if (!ae->reuse) {
  -                /*
  -                 * Strange protocol error.
  -                 */
  -                jk_log(l, JK_LOG_INFO, " Protocol error: Reuse is set to 
false");
  -            }
  -            /* Reuse in all cases */
  -            ae->reuse = JK_TRUE;
  -        }
  +        /* Reuse in all cases */
  +        ae->reuse = JK_TRUE;
           JK_TRACE_EXIT(l);
           return JK_AJP13_END_RESPONSE;
           break;
  
  
  
  1.49      +2 -1      jakarta-tomcat-connectors/jk/native/common/jk_global.h
  
  Index: jk_global.h
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_global.h,v
  retrieving revision 1.48
  retrieving revision 1.49
  diff -u -r1.48 -r1.49
  --- jk_global.h       7 May 2005 08:15:47 -0000       1.48
  +++ jk_global.h       18 May 2005 18:04:53 -0000      1.49
  @@ -209,6 +209,7 @@
   #define JK_OPT_FWDDIRS              0x0008
   /* Forward local instead remote address */
   #define JK_OPT_FWDLOCAL             0x0010
  +#define JK_OPT_FLUSHPACKETS         0x0020
   
   /* Check for EBCDIC systems */
   
  
  
  
  1.32      +11 -1     jakarta-tomcat-connectors/jk/native/common/jk_service.h
  
  Index: jk_service.h
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_service.h,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- jk_service.h      24 Apr 2005 09:54:47 -0000      1.31
  +++ jk_service.h      18 May 2005 18:04:53 -0000      1.32
  @@ -216,6 +216,11 @@
        */
       int retries;
   
  +    /*
  +     * If set call flush after each write
  +     */
  +    int flush_packets;
  +
       /* Uri worker map. Added for virtual host support
        */
       jk_uri_worker_map_t *uw_map;
  @@ -244,6 +249,11 @@
        */
       int (JK_METHOD * write) (jk_ws_service_t *s,
                                const void *buffer, unsigned len);
  +
  +    /*
  +     * Flush a chunk of response data back to the browser.
  +     */
  +    void (JK_METHOD * flush) (jk_ws_service_t *s);
   };
   
   /*
  
  
  
  1.49      +2 -1      jakarta-tomcat-connectors/jk/native/iis/jk_isapi_plugin.c
  
  Index: jk_isapi_plugin.c
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/iis/jk_isapi_plugin.c,v
  retrieving revision 1.48
  retrieving revision 1.49
  diff -u -r1.48 -r1.49
  --- jk_isapi_plugin.c 15 May 2005 11:10:11 -0000      1.48
  +++ jk_isapi_plugin.c 18 May 2005 18:04:53 -0000      1.49
  @@ -1356,6 +1356,7 @@
       s->start_response = start_response;
       s->read = read;
       s->write = write;
  +    s->flush = NULL;
   
       /* Clear RECO status */
       s->reco_status = RECO_NONE;
  
  
  
  1.25      +2 -1      
jakarta-tomcat-connectors/jk/native/netscape/jk_nsapi_plugin.c
  
  Index: jk_nsapi_plugin.c
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/jk/native/netscape/jk_nsapi_plugin.c,v
  retrieving revision 1.24
  retrieving revision 1.25
  diff -u -r1.24 -r1.25
  --- jk_nsapi_plugin.c 15 May 2005 11:10:11 -0000      1.24
  +++ jk_nsapi_plugin.c 18 May 2005 18:04:53 -0000      1.25
  @@ -349,6 +349,7 @@
       s->start_response = start_response;
       s->read = ws_read;
       s->write = ws_write;
  +    s->flush = NULL;
   
       /* Clear RECO status */
       s->reco_status = RECO_NONE;
  
  
  
  1.33      +4 -0      jakarta-tomcat-connectors/jk/xdocs/changelog.xml
  
  Index: changelog.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/xdocs/changelog.xml,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- changelog.xml     16 May 2005 06:40:31 -0000      1.32
  +++ changelog.xml     18 May 2005 18:04:53 -0000      1.33
  @@ -26,6 +26,10 @@
     <subsection name="Native">
       <changelog>
         <update>
  +      Added JkOptions +FlushPackets used to optimize memory
  +      usage when sending large data. (mturk)
  +      </update>
  +      <update>
         Added lock directive for load balancer that allows more acurate
         load balancing in case of burst load. (mturk)
         </update>      
  
  
  
  1.13      +12 -0     jakarta-tomcat-connectors/jk/xdocs/config/apache.xml
  
  Index: apache.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-tomcat-connectors/jk/xdocs/config/apache.xml,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- apache.xml        7 May 2005 08:15:47 -0000       1.12
  +++ apache.xml        18 May 2005 18:04:53 -0000      1.13
  @@ -324,6 +324,18 @@
   </p>
   
   <p>
  +JkOptions <b>FlushPackets</b>, you told mod_jk to make a flush after each AJP
  +packet received from Tomcat.
  +
  +<source>  
  +  JkOptions     +FlushPackets
  +</source>
  +
  +<br/>
  +<br/>
  +</p>
  +
  +<p>
   The directive <b>JkEnvVar</b> allow you to forward an environment vars from 
Apache server to Tomcat engine.
   
   <source>  
  
  
  

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

Reply via email to