Author: rjung
Date: Wed Dec 24 22:35:53 2014
New Revision: 1647854

URL: http://svn.apache.org/r1647854
Log:
Reduce log buffer from 8KB to 1KB.
Add logging in case of failed logging and
add trailing "..." to lines which were likely 
runcated.

Modified:
    tomcat/jk/trunk/native/common/jk_util.c
    tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml

Modified: tomcat/jk/trunk/native/common/jk_util.c
URL: 
http://svn.apache.org/viewvc/tomcat/jk/trunk/native/common/jk_util.c?rev=1647854&r1=1647853&r2=1647854&view=diff
==============================================================================
--- tomcat/jk/trunk/native/common/jk_util.c (original)
+++ tomcat/jk/trunk/native/common/jk_util.c Wed Dec 24 22:35:53 2014
@@ -126,7 +126,7 @@
 #define TOMCAT41_BRIDGE_NAME        "tomcat41"
 #define TOMCAT50_BRIDGE_NAME        "tomcat5"
 
-#define HUGE_BUFFER_SIZE 8192
+#define LOG_BUFFER_SIZE 1024
 
 /*
  * Our longest worker attribute name is about 30 bytes,
@@ -693,12 +693,14 @@ int jk_log(jk_logger_t *l,
            const char *fmt, ...)
 {
     int rc = 0;
+    char *failure;
+
     /*
      * Need to reserve space for terminating zero byte
      * and platform specific line endings added during the call
      * to the output routing.
      */
-    static int usable_size = HUGE_BUFFER_SIZE - 3;
+    static int usable_size = LOG_BUFFER_SIZE - 3;
     if (!l || !file || !fmt) {
         return -1;
     }
@@ -709,7 +711,7 @@ int jk_log(jk_logger_t *l,
         /* we will allocate and free the temporary buffer in this function     
    */
         char *buf;
 #else
-        char buf[HUGE_BUFFER_SIZE];
+        char buf[LOG_BUFFER_SIZE];
 #endif
         char *f = (char *)(file + strlen(file) - 1);
         va_list args;
@@ -723,7 +725,7 @@ int jk_log(jk_logger_t *l,
         }
 
 #ifdef NETWARE
-        buf = (char *)malloc(HUGE_BUFFER_SIZE);
+        buf = (char *)malloc(LOG_BUFFER_SIZE);
         if (NULL == buf)
             return -1;
 #endif
@@ -739,6 +741,8 @@ int jk_log(jk_logger_t *l,
                           "[%" JK_PID_T_FMT ":%" JK_PTHREAD_T_FMT "] ", 
getpid(), jk_gettid());
             used += rc;
             if (rc < 0 ) {
+                failure = "Logging failed in pid/tid formatting";
+                l->log(l, level, strlen(failure), failure);
                 return 0;
             }
 
@@ -748,6 +752,8 @@ int jk_log(jk_logger_t *l,
                 used += rc;
             }
             else {
+                failure = "Logging failed in log level formatting";
+                l->log(l, level, strlen(failure), failure);
                 return 0;           /* [V] not sure what to return... */
             }
 
@@ -760,6 +766,8 @@ int jk_log(jk_logger_t *l,
                     used += 2;
                 }
                 else {
+                    failure = "Logging failed in function name formatting";
+                    l->log(l, level, strlen(failure), failure);
                     return 0;           /* [V] not sure what to return... */
                 }
             }
@@ -770,6 +778,8 @@ int jk_log(jk_logger_t *l,
                 used += rc;
             }
             else {
+                failure = "Logging failed in source file name formatting";
+                l->log(l, level, strlen(failure), failure);
                 return 0;           /* [V] not sure what to return... */
             }
 
@@ -777,6 +787,8 @@ int jk_log(jk_logger_t *l,
                           " (%d): ", line);
             used += rc;
             if (rc < 0 || usable_size - used < 0) {
+                failure = "Logging failed in line number formatting";
+                l->log(l, level, strlen(failure), failure);
                 return 0;           /* [V] not sure what to return... */
             }
         }
@@ -784,11 +796,16 @@ int jk_log(jk_logger_t *l,
         va_start(args, fmt);
         rc = vsnprintf(buf + used, usable_size - used, fmt, args);
         va_end(args);
-        if ( rc <= usable_size - used ) {
+        /* Depending on the snprintf implementation used,
+         * "rc == usable_size - used" can indicate not enough space in buffer 
*/
+        if (rc < usable_size - used) {
             used += rc;
         }
         else {
             used = usable_size;
+            buf[used - 1] = '.';
+            buf[used - 2] = '.';
+            buf[used - 3] = '.';
         }
         l->log(l, level, used, buf);
 

Modified: tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml?rev=1647854&r1=1647853&r2=1647854&view=diff
==============================================================================
--- tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml (original)
+++ tomcat/jk/trunk/xdocs/miscellaneous/changelog.xml Wed Dec 24 22:35:53 2014
@@ -121,6 +121,11 @@
         Status: Add logging if status worker output was dropped due to
         insufficient buffer size. (rjung)
       </fix>
+      <fix>
+        Reduce log buffer from 8KB to 1KB. Add logging in case of failed
+        logging and add trailing "..." to lines which were likely truncated.
+        (rjung)
+      </fix>
     </changelog>
   </subsection>
 </section>



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

Reply via email to