diff --git a/core/src/main/scala/kafka/consumer/ConsumerFetcherManager.scala b/core/src/main/scala/kafka/consumer/ConsumerFetcherManager.scala
index 71ae640..e1d29a8 100644
--- a/core/src/main/scala/kafka/consumer/ConsumerFetcherManager.scala
+++ b/core/src/main/scala/kafka/consumer/ConsumerFetcherManager.scala
@@ -107,10 +107,10 @@ class ConsumerFetcherManager(private val consumerIdString: String,
   }
 
   def startConnections(topicInfos: Iterable[PartitionTopicInfo], cluster: Cluster) {
+    lock.lock()
     leaderFinderThread = new LeaderFinderThread(consumerIdString + "-leader-finder-thread")
     leaderFinderThread.start()
 
-    lock.lock()
     try {
       partitionMap = topicInfos.map(tpi => (TopicAndPartition(tpi.topic, tpi.partitionId), tpi)).toMap
       this.cluster = cluster
@@ -128,9 +128,14 @@ class ConsumerFetcherManager(private val consumerIdString: String,
      * these partitions.
      */
     info("Stopping leader finder thread")
-    if (leaderFinderThread != null) {
-      leaderFinderThread.shutdown()
-      leaderFinderThread = null
+    lock.lock()
+    try {
+      if (leaderFinderThread != null) {
+        leaderFinderThread.shutdown()
+        leaderFinderThread = null
+      }
+    } finally {
+      lock.unlock()
     }
 
     info("Stopping all fetchers")
@@ -155,4 +160,4 @@ class ConsumerFetcherManager(private val consumerIdString: String,
       lock.unlock()
     }
   }
-}
\ No newline at end of file
+}
