MongoInterruptedException: Interrupted waiting for lock when using mongodb+srv connection string

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Gone away
    • Priority: Unknown
    • None
    • Affects Version/s: 5.5.1
    • Component/s: None
    • None
    • None
    • Java Drivers
    • None
    • None
    • None
    • None
    • None
    • None

      When connecting to a MongoDB Atlas Free Tier cluster using a standard mongodb+srv:// connection string, the MongoDB Java driver fails during initialization with an Interrupted waiting for lock error.

      The issue occurs during the DNS SRV polling process — even though the cluster is reachable and DNS resolution works correctly. It happens within a Kubernetes environment (Amazon EKS), running the Microcks 1.13 application (Spring Boot + MongoDB driver 5.5.1).

       

      mongodb+srv://<user>:<password>@xxxxx.mongodb.net/?appName=microcks

      (Database host obfuscated for privacy)

       

      🧩 Environment

      • MongoDB Driver: 5.5.1
      • Java: OpenJDK 21
      • App container: Spring Boot (Microcks 1.13)
      • Runtime: Kubernetes (Amazon EKS, private cluster with NAT)
      • MongoDB Atlas Cluster: Free Tier (no VPC peering, public DNS)

       

      17:18:49.059 [DEBUG] org.mongodb.driver.connection - Connection pool created for ac-cvtmxzy-shard-00-01.1awbn0g.mongodb.net:27017 using options maxIdleTimeMS=0, minPoolSize=0, maxPoolSize=100, maxConnecting=2, waitQueueTimeoutMS=120000
      17:18:49.062 [INFO] org.mongodb.driver.cluster - Adding discovered server ac-cvtmxzy-shard-00-02.1awbn0g.mongodb.net:27017 to client view of cluster
      17:18:49.064 [DEBUG] org.mongodb.driver.connection - Connection pool created for ac-cvtmxzy-shard-00-02.1awbn0g.mongodb.net:27017 using options maxIdleTimeMS=0, minPoolSize=0, maxPoolSize=100, maxConnecting=2, waitQueueTimeoutMS=120000
      17:18:49.067 [WARN] org.mongodb.driver.cluster - Exception in monitor thread during notification of DNS resolution state change
      com.mongodb.MongoInterruptedException: Interrupted waiting for lock
      	at com.mongodb.internal.thread.InterruptionUtil.interruptAndCreateMongoInterruptedException(InterruptionUtil.java:41)
      	at com.mongodb.internal.Locks.lockInterruptibly(Locks.java:92)
      	at com.mongodb.internal.Locks.checkedWithInterruptibleLock(Locks.java:80)
      	at com.mongodb.internal.Locks.withInterruptibleLock(Locks.java:75)
      	at com.mongodb.internal.Locks.withInterruptibleLock(Locks.java:68)
      	at com.mongodb.internal.connection.BaseCluster.withLock(BaseCluster.java:252)
      	at com.mongodb.internal.connection.AbstractMultiServerCluster.withLock(AbstractMultiServerCluster.java:59)
      	at com.mongodb.internal.connection.BaseCluster.updateDescription(BaseCluster.java:224)
      	at com.mongodb.internal.connection.AbstractMultiServerCluster.updateDescription(AbstractMultiServerCluster.java:392)
      	at com.mongodb.internal.connection.AbstractMultiServerCluster.lambda$initialize$0(AbstractMultiServerCluster.java:105)
      	at com.mongodb.internal.Locks.lambda$withInterruptibleLock$1(Locks.java:69)
      	at com.mongodb.internal.Locks.checkedWithInterruptibleLock(Locks.java:82)
      	at com.mongodb.internal.Locks.withInterruptibleLock(Locks.java:75)
      	at com.mongodb.internal.Locks.withInterruptibleLock(Locks.java:68)
      	at com.mongodb.internal.connection.BaseCluster.withLock(BaseCluster.java:252)
      	at com.mongodb.internal.connection.AbstractMultiServerCluster.withLock(AbstractMultiServerCluster.java:59)
      	at com.mongodb.internal.connection.AbstractMultiServerCluster.initialize(AbstractMultiServerCluster.java:101)
      	at com.mongodb.internal.connection.DnsMultiServerCluster$1.initialize(DnsMultiServerCluster.java:55)
      	at com.mongodb.internal.connection.DefaultDnsSrvRecordMonitor$DnsSrvRecordMonitorRunnable.run(DefaultDnsSrvRecordMonitor.java:89)
      	at java.base/java.lang.Thread.run(Thread.java:1583)
       	at com.mongodb.internal.Locks.checkedWithInterruptibleLock(Locks.java:82)
      	at com.mongodb.internal.Locks.withInterruptibleLock(Locks.java:75)
      	at com.mongodb.internal.Locks.withInterruptibleLock(Locks.java:68)
      	at com.mongodb.internal.connection.BaseCluster.withLock(BaseCluster.java:252)
      	at com.mongodb.internal.connection.AbstractMultiServerCluster.withLock(AbstractMultiServerCluster.java:59)
      	at com.mongodb.internal.connection.AbstractMultiServerCluster.initialize(AbstractMultiServerCluster.java:101)
      	at com.mongodb.internal.connection.DnsMultiServerCluster$1.initialize(DnsMultiServerCluster.java:55)
      	at com.mongodb.internal.connection.DefaultDnsSrvRecordMonitor$DnsSrvRecordMonitorRunnable.run(DefaultDnsSrvRecordMonitor.java:89)
      	at java.base/java.lang.Thread.run(Thread.java:1583)
      Caused by: java.lang.InterruptedException: null
      	at java.base/java.util.concurrent.locks.ReentrantLock$Sync.lockInterruptibly(ReentrantLock.java:159)
      	at java.base/java.util.concurrent.locks.ReentrantLock.lockInterruptibly(ReentrantLock.java:372)
      	at com.mongodb.internal.Locks.lockInterruptibly(Locks.java:90)
      	... 18 common frames omitted
      

       

      🧩 Expected behavior

      The MongoDB Java driver should successfully initialize and connect to the Atlas SRV URI without throwing an Interrupted waiting for lock exception.

            Assignee:
            Valentin Kavalenka
            Reporter:
            Bernat Mut
            None
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: