Author: carnold
Date: Wed Aug 13 14:35:05 2008
New Revision: 685684

URL: http://svn.apache.org/viewvc?rev=685684&view=rev
Log:
Bug 44157: InterruptedIOException ignored by log4j

Modified:
    logging/log4j/trunk/src/changes/changes.xml
    
logging/log4j/trunk/src/main/java/org/apache/log4j/DailyRollingFileAppender.java
    logging/log4j/trunk/src/main/java/org/apache/log4j/FileAppender.java
    logging/log4j/trunk/src/main/java/org/apache/log4j/RollingFileAppender.java
    logging/log4j/trunk/src/main/java/org/apache/log4j/WriterAppender.java
    
logging/log4j/trunk/src/main/java/org/apache/log4j/helpers/OnlyOnceErrorHandler.java
    logging/log4j/trunk/src/main/java/org/apache/log4j/net/SocketAppender.java
    
logging/log4j/trunk/src/main/java/org/apache/log4j/net/SocketHubAppender.java
    logging/log4j/trunk/src/main/java/org/apache/log4j/net/SocketNode.java
    logging/log4j/trunk/src/main/java/org/apache/log4j/net/SyslogAppender.java
    logging/log4j/trunk/src/main/java/org/apache/log4j/net/TelnetAppender.java
    
logging/log4j/trunk/src/main/java/org/apache/log4j/spi/ThrowableInformation.java
    
logging/log4j/trunk/src/main/java/org/apache/log4j/varia/FallbackErrorHandler.java
    
logging/log4j/trunk/tests/src/java/org/apache/log4j/net/ShortSocketServer.java

Modified: logging/log4j/trunk/src/changes/changes.xml
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/changes/changes.xml?rev=685684&r1=685683&r2=685684&view=diff
==============================================================================
--- logging/log4j/trunk/src/changes/changes.xml (original)
+++ logging/log4j/trunk/src/changes/changes.xml Wed Aug 13 14:35:05 2008
@@ -55,6 +55,7 @@
        <action action="fix" issue="43849">Javadoc for Appender.getName implies 
that the return value will be unique and not null.</action>
        <action action="fix" issue="40888">Weekly rotation problem in 
Europe.</action>
        <action action="fix" issue="43282">Add OSGi packaging info.</action>
+       <action action="fix" issue="44157">InterruptedIOException ignored by 
log4j.</action>
     </release>
   
     <release version="1.2.15" date="2007-08-24" description="SyslogAppender 
enhancements, NTEventLogAppender and Maven build.">

Modified: 
logging/log4j/trunk/src/main/java/org/apache/log4j/DailyRollingFileAppender.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/DailyRollingFileAppender.java?rev=685684&r1=685683&r2=685684&view=diff
==============================================================================
--- 
logging/log4j/trunk/src/main/java/org/apache/log4j/DailyRollingFileAppender.java
 (original)
+++ 
logging/log4j/trunk/src/main/java/org/apache/log4j/DailyRollingFileAppender.java
 Wed Aug 13 14:35:05 2008
@@ -21,6 +21,7 @@
 
 import java.io.IOException;
 import java.io.File;
+import java.io.InterruptedIOException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.GregorianCalendar;
@@ -353,7 +354,10 @@
        rollOver();
       }
       catch(IOException ioe) {
-       LogLog.error("rollOver() failed.", ioe);
+          if (ioe instanceof InterruptedIOException) {
+              Thread.currentThread().interrupt();
+          }
+             LogLog.error("rollOver() failed.", ioe);
       }
     }
     super.subAppend(event);

Modified: logging/log4j/trunk/src/main/java/org/apache/log4j/FileAppender.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/FileAppender.java?rev=685684&r1=685683&r2=685684&view=diff
==============================================================================
--- logging/log4j/trunk/src/main/java/org/apache/log4j/FileAppender.java 
(original)
+++ logging/log4j/trunk/src/main/java/org/apache/log4j/FileAppender.java Wed 
Aug 13 14:35:05 2008
@@ -17,12 +17,7 @@
 
 package org.apache.log4j;
 
-import java.io.IOException;
-import java.io.Writer;
-import java.io.FileOutputStream;
-import java.io.BufferedWriter;
-import java.io.FileNotFoundException;
-import java.io.File;
+import java.io.*;
 
 import org.apache.log4j.spi.ErrorCode;
 import org.apache.log4j.helpers.QuietWriter;
@@ -184,6 +179,9 @@
        this.qw.close();
       }
       catch(java.io.IOException e) {
+          if (e instanceof InterruptedIOException) {
+              Thread.currentThread().interrupt();
+          }
        // Exceptionally, it does not make sense to delegate to an
        // ErrorHandler. Since a closed appender is basically dead.
        LogLog.error("Could not close " + qw, e);

Modified: 
logging/log4j/trunk/src/main/java/org/apache/log4j/RollingFileAppender.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/RollingFileAppender.java?rev=685684&r1=685683&r2=685684&view=diff
==============================================================================
--- logging/log4j/trunk/src/main/java/org/apache/log4j/RollingFileAppender.java 
(original)
+++ logging/log4j/trunk/src/main/java/org/apache/log4j/RollingFileAppender.java 
Wed Aug 13 14:35:05 2008
@@ -22,6 +22,8 @@
 import java.io.IOException;
 import java.io.Writer;
 import java.io.File;
+import java.io.InterruptedIOException;
+
 import org.apache.log4j.helpers.OptionConverter;
 import org.apache.log4j.helpers.LogLog;
 import org.apache.log4j.helpers.CountingQuietWriter;
@@ -165,7 +167,10 @@
             this.setFile(fileName, true, bufferedIO, bufferSize);
           }
           catch(IOException e) {
-            LogLog.error("setFile("+fileName+", true) call failed.", e);
+              if (e instanceof InterruptedIOException) {
+                  Thread.currentThread().interrupt();
+              }
+              LogLog.error("setFile("+fileName+", true) call failed.", e);
           }
       }
     }
@@ -182,7 +187,10 @@
       nextRollover = 0;
     }
     catch(IOException e) {
-      LogLog.error("setFile("+fileName+", false) call failed.", e);
+        if (e instanceof InterruptedIOException) {
+            Thread.currentThread().interrupt();
+        }
+        LogLog.error("setFile("+fileName+", false) call failed.", e);
     }
     }
   }

Modified: logging/log4j/trunk/src/main/java/org/apache/log4j/WriterAppender.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/WriterAppender.java?rev=685684&r1=685683&r2=685684&view=diff
==============================================================================
--- logging/log4j/trunk/src/main/java/org/apache/log4j/WriterAppender.java 
(original)
+++ logging/log4j/trunk/src/main/java/org/apache/log4j/WriterAppender.java Wed 
Aug 13 14:35:05 2008
@@ -17,10 +17,7 @@
 
 package org.apache.log4j;
 
-import java.io.IOException;
-import java.io.Writer;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
+import java.io.*;
 
 import org.apache.log4j.spi.ErrorHandler;
 import org.apache.log4j.spi.LoggingEvent;
@@ -213,6 +210,9 @@
       try {
        qw.close();
       } catch(IOException e) {
+          if (e instanceof InterruptedIOException) {
+              Thread.currentThread().interrupt();
+          }
        // There is do need to invoke an error handler at this late
        // stage.
        LogLog.error("Could not close " + qw, e);
@@ -235,8 +235,11 @@
       try {
        retval = new OutputStreamWriter(os, enc);
       } catch(IOException e) {
-       LogLog.warn("Error initializing output writer.");
-       LogLog.warn("Unsupported encoding?");
+          if (e instanceof InterruptedIOException) {
+              Thread.currentThread().interrupt();
+          }
+             LogLog.warn("Error initializing output writer.");
+             LogLog.warn("Unsupported encoding?");
       }
     }
     if(retval == null) {

Modified: 
logging/log4j/trunk/src/main/java/org/apache/log4j/helpers/OnlyOnceErrorHandler.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/helpers/OnlyOnceErrorHandler.java?rev=685684&r1=685683&r2=685684&view=diff
==============================================================================
--- 
logging/log4j/trunk/src/main/java/org/apache/log4j/helpers/OnlyOnceErrorHandler.java
 (original)
+++ 
logging/log4j/trunk/src/main/java/org/apache/log4j/helpers/OnlyOnceErrorHandler.java
 Wed Aug 13 14:35:05 2008
@@ -22,6 +22,8 @@
 import  org.apache.log4j.Logger;
 import  org.apache.log4j.Appender;
 
+import java.io.InterruptedIOException;
+
 /**
 
    The <code>OnlyOnceErrorHandler</code> implements log4j's default
@@ -74,6 +76,9 @@
    */
   public
   void error(String message, Exception e, int errorCode, LoggingEvent event) {
+    if (e instanceof InterruptedIOException || e instanceof 
InterruptedException) {
+        Thread.currentThread().interrupt();
+    }
     if(firstTime) {
       LogLog.error(message, e);
       firstTime = false;

Modified: 
logging/log4j/trunk/src/main/java/org/apache/log4j/net/SocketAppender.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/net/SocketAppender.java?rev=685684&r1=685683&r2=685684&view=diff
==============================================================================
--- logging/log4j/trunk/src/main/java/org/apache/log4j/net/SocketAppender.java 
(original)
+++ logging/log4j/trunk/src/main/java/org/apache/log4j/net/SocketAppender.java 
Wed Aug 13 14:35:05 2008
@@ -21,6 +21,7 @@
 
 import java.io.IOException;
 import java.io.ObjectOutputStream;
+import java.io.InterruptedIOException;
 import java.net.InetAddress;
 import java.net.Socket;
 
@@ -185,7 +186,10 @@
       try {
        oos.close();
       } catch(IOException e) {
-       LogLog.error("Could not close oos.", e);
+          if (e instanceof InterruptedIOException) {
+              Thread.currentThread().interrupt();
+          }
+             LogLog.error("Could not close oos.", e);
       }
       oos = null;
     }
@@ -204,7 +208,6 @@
       cleanUp();
       oos = new ObjectOutputStream(new Socket(address, 
port).getOutputStream());
     } catch(IOException e) {
-
       String msg = "Could not connect to remote log4j server at ["
        +address.getHostName()+"].";
       if(reconnectionDelay > 0) {
@@ -412,7 +415,10 @@
          LogLog.debug("Remote host "+address.getHostName()
                       +" refused connection.");
        } catch(IOException e) {
-         LogLog.debug("Could not connect to " + address.getHostName()+
+        if (e instanceof InterruptedIOException) {
+            Thread.currentThread().interrupt();
+        }
+           LogLog.debug("Could not connect to " + address.getHostName()+
                       ". Exception is " + e);
        }
       }

Modified: 
logging/log4j/trunk/src/main/java/org/apache/log4j/net/SocketHubAppender.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/net/SocketHubAppender.java?rev=685684&r1=685683&r2=685684&view=diff
==============================================================================
--- 
logging/log4j/trunk/src/main/java/org/apache/log4j/net/SocketHubAppender.java 
(original)
+++ 
logging/log4j/trunk/src/main/java/org/apache/log4j/net/SocketHubAppender.java 
Wed Aug 13 14:35:05 2008
@@ -444,6 +444,9 @@
               // add it to the oosList.  OK since Vector is synchronized.
               oosList.addElement(oos);
             } catch (IOException e) {
+              if (e instanceof InterruptedIOException) {
+                    Thread.currentThread().interrupt();
+              }
               LogLog.error("exception creating output stream on socket.", e);
             }
           }
@@ -453,8 +456,9 @@
        // close the socket
        try {
                serverSocket.close();
-       }
-       catch (IOException e) {
+       } catch(InterruptedIOException e) {
+            Thread.currentThread().interrupt();  
+        } catch (IOException e) {
                // do nothing with it?
        }
       }

Modified: logging/log4j/trunk/src/main/java/org/apache/log4j/net/SocketNode.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/net/SocketNode.java?rev=685684&r1=685683&r2=685684&view=diff
==============================================================================
--- logging/log4j/trunk/src/main/java/org/apache/log4j/net/SocketNode.java 
(original)
+++ logging/log4j/trunk/src/main/java/org/apache/log4j/net/SocketNode.java Wed 
Aug 13 14:35:05 2008
@@ -21,6 +21,7 @@
 import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.BufferedInputStream;
+import java.io.InterruptedIOException;
 
 
 import org.apache.log4j.*;
@@ -89,6 +90,10 @@
       logger.info("Caught java.io.EOFException closing conneciton.");
     } catch(java.net.SocketException e) {
       logger.info("Caught java.net.SocketException closing conneciton.");
+    } catch(InterruptedIOException e) {
+      Thread.currentThread().interrupt();
+      logger.info("Caught java.io.InterruptedIOException: "+e);
+      logger.info("Closing connection.");
     } catch(IOException e) {
       logger.info("Caught java.io.IOException: "+e);
       logger.info("Closing connection.");
@@ -105,6 +110,8 @@
       if (socket != null) {
         try {
           socket.close();
+        } catch(InterruptedIOException e) {
+            Thread.currentThread().interrupt();
         } catch(IOException ex) {
         }
       }

Modified: 
logging/log4j/trunk/src/main/java/org/apache/log4j/net/SyslogAppender.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/net/SyslogAppender.java?rev=685684&r1=685683&r2=685684&view=diff
==============================================================================
--- logging/log4j/trunk/src/main/java/org/apache/log4j/net/SyslogAppender.java 
(original)
+++ logging/log4j/trunk/src/main/java/org/apache/log4j/net/SyslogAppender.java 
Wed Aug 13 14:35:05 2008
@@ -28,6 +28,7 @@
 import java.util.Locale;
 import java.net.InetAddress;
 import java.net.UnknownHostException;
+import java.io.IOException;
 
 // Contributors: Yves Bossel <[EMAIL PROTECTED]>
 //               Christopher Taylor <[EMAIL PROTECTED]>
@@ -157,7 +158,10 @@
             }
             sqw.close();
             sqw = null;
-        } catch(java.io.IOException ex) {
+        } catch(java.io.InterruptedIOException e) {
+            Thread.currentThread().interrupt();
+            sqw = null;
+        } catch(IOException e) {
             sqw = null;
         }
     }

Modified: 
logging/log4j/trunk/src/main/java/org/apache/log4j/net/TelnetAppender.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/net/TelnetAppender.java?rev=685684&r1=685683&r2=685684&view=diff
==============================================================================
--- logging/log4j/trunk/src/main/java/org/apache/log4j/net/TelnetAppender.java 
(original)
+++ logging/log4j/trunk/src/main/java/org/apache/log4j/net/TelnetAppender.java 
Wed Aug 13 14:35:05 2008
@@ -23,6 +23,7 @@
 
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.io.InterruptedIOException;
 import java.net.ServerSocket;
 import java.net.Socket;
 import java.util.Enumeration;
@@ -205,6 +206,8 @@
 
       try {
           serverSocket.close();
+      } catch(InterruptedIOException ex) {
+          Thread.currentThread().interrupt();
       } catch(IOException ex) {
       }
     }

Modified: 
logging/log4j/trunk/src/main/java/org/apache/log4j/spi/ThrowableInformation.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/spi/ThrowableInformation.java?rev=685684&r1=685683&r2=685684&view=diff
==============================================================================
--- 
logging/log4j/trunk/src/main/java/org/apache/log4j/spi/ThrowableInformation.java
 (original)
+++ 
logging/log4j/trunk/src/main/java/org/apache/log4j/spi/ThrowableInformation.java
 Wed Aug 13 14:35:05 2008
@@ -17,11 +17,7 @@
 
 package org.apache.log4j.spi;
 
-import java.io.IOException;
-import java.io.LineNumberReader;
-import java.io.PrintWriter;
-import java.io.StringReader;
-import java.io.StringWriter;
+import java.io.*;
 import java.util.ArrayList;
 
 /**
@@ -83,6 +79,9 @@
           line = reader.readLine();
         }
       } catch(IOException ex) {
+          if (ex instanceof InterruptedIOException) {
+              Thread.currentThread().interrupt();
+          }
           lines.add(ex.toString());
       }
       String[] tempRep = new String[lines.size()];

Modified: 
logging/log4j/trunk/src/main/java/org/apache/log4j/varia/FallbackErrorHandler.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/src/main/java/org/apache/log4j/varia/FallbackErrorHandler.java?rev=685684&r1=685683&r2=685684&view=diff
==============================================================================
--- 
logging/log4j/trunk/src/main/java/org/apache/log4j/varia/FallbackErrorHandler.java
 (original)
+++ 
logging/log4j/trunk/src/main/java/org/apache/log4j/varia/FallbackErrorHandler.java
 Wed Aug 13 14:35:05 2008
@@ -23,7 +23,8 @@
 import  org.apache.log4j.Logger;
 import  org.apache.log4j.helpers.LogLog;
 import java.util.Vector;
- 
+import java.io.InterruptedIOException;
+
 /**
   *
   * The <code>FallbackErrorHandler</code> implements the ErrorHandler
@@ -83,6 +84,9 @@
    */
   public
   void error(String message, Exception e, int errorCode, LoggingEvent event) {
+    if (e instanceof InterruptedIOException) {
+        Thread.currentThread().interrupt();
+    }
     LogLog.debug("FB: The following error reported: " + message, e);
     LogLog.debug("FB: INITIATING FALLBACK PROCEDURE.");
     if (loggers != null) {

Modified: 
logging/log4j/trunk/tests/src/java/org/apache/log4j/net/ShortSocketServer.java
URL: 
http://svn.apache.org/viewvc/logging/log4j/trunk/tests/src/java/org/apache/log4j/net/ShortSocketServer.java?rev=685684&r1=685683&r2=685684&view=diff
==============================================================================
--- 
logging/log4j/trunk/tests/src/java/org/apache/log4j/net/ShortSocketServer.java 
(original)
+++ 
logging/log4j/trunk/tests/src/java/org/apache/log4j/net/ShortSocketServer.java 
Wed Aug 13 14:35:05 2008
@@ -20,15 +20,12 @@
 
 import java.net.Socket;
 import java.net.ServerSocket;
-import java.io.IOException;
 
 import org.apache.log4j.Logger;
 import org.apache.log4j.LogManager;
 import org.apache.log4j.PropertyConfigurator;
 import org.apache.log4j.MDC;
 import org.apache.log4j.helpers.LogLog;
-import org.apache.log4j.net.SocketNode;
-import org.apache.log4j.net.SocketServer;
 
 /**
  * This SocketServer exits after certain number of connections from a



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

Reply via email to