Uploaded image for project: 'Harmony'
  1. Harmony
  2. HARMONY-5981

[classlib][logging] FileHandler may throw exception when logging to the same file by multiple thread

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 5.0M7
    • 5.0M11
    • Classlib
    • None
    • Patch Available

    Description

      When we are trying to log by a Filehandler to publish the information into a same file,it will introduce multi-thread defect .
      As a result, it will throw such exception[1] while logging.
      The root cause is that the destination file may be deleted by other thread if they are not synchronized.

      Below testcase[2] can reproduce the issue.

      [1]
      java.util.logging.ErrorManager: WRITE_FAILURE
      Error message - Exception occurred when writing to the output stream.
      Exception - java.io.IOException: Writer is closed.

      [2]
      package logging;

      import java.io.File;
      import java.util.logging.FileHandler;
      import java.util.logging.Logger;

      public class FileHandlerTest {

      static class LoggingThread implements Runnable {
      private Logger logger;

      public LoggingThread(Logger logger)

      { this.logger = logger; }

      public void run() {
      while (true)

      { logger.info("Test"); }

      }
      }

      public static void main(String[] args) throws Exception {
      Logger logger = Logger.getLogger("test");
      String path = new File(".").getAbsolutePath();
      FileHandler fh = new FileHandler(path, 3000000, 12, false);
      logger.setUseParentHandlers(false);
      logger.addHandler(fh);

      Thread[] threads = new Thread[12];
      for (Thread thread : threads)

      { thread = new Thread(new LoggingThread(logger)); thread.start(); }

      }
      }

      Attachments

        1. HARMONY-5981.diff
          0.6 kB
          Sean Qiu

        Activity

          People

            qiuxiaox Sean Qiu
            qiuxiaox Sean Qiu
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: