javamongodbmongodb-javacompose-db

MongoSocketReadException: Prematurely reached end of stream (after a period of inactivity)


I get this error on a find call (default Java Driver) after a period of inactivity. I tried to add a manual heartbeat (writing to a capped collection), but it didn't help. I only get the issue while being connected to an instance on compose (i.e. not in a local context).

MongoDB version is 3.2.8, latest driver (3.3), using Java 8.

Any idea ?


Solution

  • I agree with Rhangaun's answer here is my solution in code of JAVA:

        public static DB getMongoDB() {
    
            MongoClientOptions.Builder builder = new MongoClientOptions.Builder();
            //build the connection options  
            builder.maxConnectionIdleTime(60000);//set the max wait time in (ms)
            MongoClientOptions opts = builder.build();
            
        
            char[] password2 = "mypassword".toCharArray();
            
            MongoCredential credential2 = MongoCredential.createCredential("username", "databasename",password2);
            
           
            //add your option to the connection 
    
            MongoClient mongoClient = new MongoClient(new ServerAddress("server ip",27017), Arrays.asList(credential2),opts);
            //use your database 
            cachedDb = mongoClient.getDB("databasename");
            
        return cachedDb;
    
    }
    

    Here is my research link:http://3t.io/blog/how-to-prevent-your-connection-from-dropping-with-hosted-mongodb-instances/

    Hope it helps you.