Details

    • Type: Bug
    • Status: Resolved
    • Priority: Critical
    • Resolution: Fixed
    • Affects Version/s: 2.0-beta4
    • Fix Version/s: 2.0-beta5
    • Component/s: Appenders
    • Labels:
      None

      Description

      We found a Deadlock in the SocketAppender (TCPSocketManager.java), when the reconnectionDelay is used.
      A JUnit-Testcase (testTcpAppenderDeadlock()) has been attached, which reproduced the deadlock.

      Description of the JUnit-Testcase:
      • No SocketServer is startet
      • We generate a SocketAppender with a reconnectionDelay= 10sec
      • The SocketAppender acknowledges that no SocktServer is there, and start the timeout
      • During reconnectionDelay the SocketServer started and something is logged
      • Now the user-thread (here the JUNIT-Thread) and the Reconnector-Thread are blocking each other forever

      An additional Issue occurs:
      If no SocketServer is available at the start of the SocketAppender, each user-thread is blocked at every logging operation up to the defined reconnection-time!

      Recommended solution:
      TCPSocketManager.java
      @Override
      protected synchronized void write(final byte[] bytes, final int offset, final int length) {
      // if (socket == null) {
      // if (connector != null)

      { // connector.latch(); // }

      // if (socket == null)

      { // final String msg = "Error writing to " + getName() + " socket not available"; // throw new AppenderRuntimeException(msg); // }

      // }
      if (socket == null) {
      if (connector != null)

      { return; }

      else

      { final String msg = "Error writing to " + getName() + " socket not available"; throw new AppenderRuntimeException(msg); }

      }

        Attachments

          Activity

            People

            • Assignee:
              ralph.goers@dslextreme.com Ralph Goers
              Reporter:
              gow Werner
            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: