Uploaded image for project: 'Derby'
  1. Derby
  2. DERBY-3526

AsynchronousLogShipper#workToDo is blocked while the log shipper sends a log chunk

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: 10.4.1.3, 10.5.1.1
    • Fix Version/s: 10.4.1.3, 10.5.1.1
    • Component/s: Replication
    • Labels:
      None

      Description

      The replication log shipper thread synchronizes on 'this' both when shipping log records (shipALogChunk) and when it waits between log shipments.

      Transaction threads may try to wake up the log shipper because log has arrived that should be shipped (i.e., through the method workToDo). These threads should not have to wait for the monitor if the log shipper is currently busy shipping log. The solution is to have two monitors - one for log shipment and one for waiting between log shipment.

      This may seem like a minor issue, but if the TCP connection between master and slave is lost e.g. because a network cable has been unplugged, the log shipper will block for 2 minutes on ObjectOutputStream#writeObject.

        Attachments

        1. Derby3526_1.diff
          2 kB
          V.Narayanan
        2. Derby3526_1.stat
          0.1 kB
          V.Narayanan
        3. Derby3526.diff
          2 kB
          V.Narayanan
        4. Derby3526.stat
          0.1 kB
          V.Narayanan

          Issue Links

            Activity

              People

              • Assignee:
                narayanan V.Narayanan
                Reporter:
                jorgenlo Jorgen Loland
              • Votes:
                0 Vote for this issue
                Watchers:
                0 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: