Uploaded image for project: 'Thrift'
  1. Thrift
  2. THRIFT-2872

ThreadManager deadlock for task expiration

VotersWatch issueWatchersLinkCloneUpdate Comment AuthorReplace String in CommentUpdate Comment VisibilityDelete Comments
    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Major
    • Resolution: Fixed
    • Affects Version/s: None
    • Fix Version/s: 0.9.3
    • Component/s: C++ - Library
    • Labels:
      None
    • Patch Info:
      Patch Available

      Description

      I have a TNonblockingServer running with 1 worker thread and 10 IO thread.

      If there was a big task that just finished, all pending tasks might be expired. In such case, all IO threads are waiting for maxMonitor_, but the worker won't notify. It will remove all the tasks(all of them are expired) first. And then the notify code won't be executed because tasks are empty. Deadlock occurs.

      The patch move the if-notify statement out so it will notify even if all tasks are removed for expiration.

        Attachments

          Activity

            People

            • Assignee:
              roger Roger Meier
              Reporter:
              qiaomuf Qiao Mu

              Dates

              • Created:
                Updated:
                Resolved:

                Issue deployment