THRIFT-4963: Fix deadlock in ThreadManager::Worker::run
Client: cpp
Patch: Kanishth Karthi

This closes #2070
diff --git a/lib/cpp/src/thrift/concurrency/ThreadManager.cpp b/lib/cpp/src/thrift/concurrency/ThreadManager.cpp
index 25b838a..e917f4a 100644
--- a/lib/cpp/src/thrift/concurrency/ThreadManager.cpp
+++ b/lib/cpp/src/thrift/concurrency/ThreadManager.cpp
@@ -319,7 +319,9 @@
 
         } else if (manager_->expireCallback_) {
           // The only other state the task could have been in is TIMEDOUT (see above)
+          manager_->mutex_.unlock();
           manager_->expireCallback_(task->getRunnable());
+          manager_->mutex_.lock();
           manager_->expiredCount_++;
         }
       }