Socket timeout with mongo DB after 30 mins of inactivity









up vote
0
down vote

favorite












After 30 mins of inactivity or so I start getting the below error when I try to insert into mongo, When I try again it starts to work. Error Below. I'm on Azure:



[INFO ] 2018-09-10T12:00:43,188 [http-nio-8080-exec-6] connection - Closed connection [connectionIdlocalValue:3, serverValue:26] to XX.XX.XX.XX:27017 because there was a socket exception raised by this connection.
[ERROR] 2018-09-10T12:00:43,189 [http-nio-8080-exec-6] [dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path threw exception [Request processing failed; nested exception is org.springframework.data.mongodb.UncategorizedMongoDbException: Timeout while receiving message; nested exception is com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving message] with root cause
java.net.SocketTimeoutException: Read timed out
at java.net.SocketInputStream.socketRead0(Native Method) ~[?:1.8.0_181]
at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) ~[?:1.8.0_181]
ava.net.SocketTimeoutException: Read timed out
t java.net.SocketInputStream.read(SocketInputStream.java:171) ~[?:1.8.0_181]
at java.net.SocketInputStream.read(SocketInputStream.java:141) ~[?:1.8.0_181]


Here is how I initialize my mongo Template:



@Bean
public MongoDbFactory mongoDbFactory()
String addresses = mongoUri.split(",");
List<ServerAddress> servers = new ArrayList<>();
for (String address : addresses)
String split = address.trim().split(":");
servers.add(new ServerAddress(split[0].trim(), Integer.parseInt(split[1].trim())));

MongoClientOptions.Builder mongoOperations = MongoClientOptions.builder();
mongoOperations.socketTimeout(1000 * 20); // I tried to increase the socket timeout to see if it helps but no help either
mongoOperations.connectTimeout(1000 * 10);
MongoClient mongoClient = new MongoClient(servers, MongoCredential.createCredential(userName, dbName, password.toCharArray()), mongoOperations.build());
return new SimpleMongoDbFactory(mongoClient, dbName);


@Bean
public MongoTemplate getMongoTemplate()
return new MongoTemplate(mongoDbFactory());



My mongod version is 3.6.4 and I'm using the same version of java driver.
I tried to increase/decrease the tcp_keepalive_time setting as provided in the docs using
sudo sysctl -w net.ipv4.tcp_keepalive_time=120 but no help either.










share|improve this question



























    up vote
    0
    down vote

    favorite












    After 30 mins of inactivity or so I start getting the below error when I try to insert into mongo, When I try again it starts to work. Error Below. I'm on Azure:



    [INFO ] 2018-09-10T12:00:43,188 [http-nio-8080-exec-6] connection - Closed connection [connectionIdlocalValue:3, serverValue:26] to XX.XX.XX.XX:27017 because there was a socket exception raised by this connection.
    [ERROR] 2018-09-10T12:00:43,189 [http-nio-8080-exec-6] [dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path threw exception [Request processing failed; nested exception is org.springframework.data.mongodb.UncategorizedMongoDbException: Timeout while receiving message; nested exception is com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving message] with root cause
    java.net.SocketTimeoutException: Read timed out
    at java.net.SocketInputStream.socketRead0(Native Method) ~[?:1.8.0_181]
    at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) ~[?:1.8.0_181]
    ava.net.SocketTimeoutException: Read timed out
    t java.net.SocketInputStream.read(SocketInputStream.java:171) ~[?:1.8.0_181]
    at java.net.SocketInputStream.read(SocketInputStream.java:141) ~[?:1.8.0_181]


    Here is how I initialize my mongo Template:



    @Bean
    public MongoDbFactory mongoDbFactory()
    String addresses = mongoUri.split(",");
    List<ServerAddress> servers = new ArrayList<>();
    for (String address : addresses)
    String split = address.trim().split(":");
    servers.add(new ServerAddress(split[0].trim(), Integer.parseInt(split[1].trim())));

    MongoClientOptions.Builder mongoOperations = MongoClientOptions.builder();
    mongoOperations.socketTimeout(1000 * 20); // I tried to increase the socket timeout to see if it helps but no help either
    mongoOperations.connectTimeout(1000 * 10);
    MongoClient mongoClient = new MongoClient(servers, MongoCredential.createCredential(userName, dbName, password.toCharArray()), mongoOperations.build());
    return new SimpleMongoDbFactory(mongoClient, dbName);


    @Bean
    public MongoTemplate getMongoTemplate()
    return new MongoTemplate(mongoDbFactory());



    My mongod version is 3.6.4 and I'm using the same version of java driver.
    I tried to increase/decrease the tcp_keepalive_time setting as provided in the docs using
    sudo sysctl -w net.ipv4.tcp_keepalive_time=120 but no help either.










    share|improve this question

























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      After 30 mins of inactivity or so I start getting the below error when I try to insert into mongo, When I try again it starts to work. Error Below. I'm on Azure:



      [INFO ] 2018-09-10T12:00:43,188 [http-nio-8080-exec-6] connection - Closed connection [connectionIdlocalValue:3, serverValue:26] to XX.XX.XX.XX:27017 because there was a socket exception raised by this connection.
      [ERROR] 2018-09-10T12:00:43,189 [http-nio-8080-exec-6] [dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path threw exception [Request processing failed; nested exception is org.springframework.data.mongodb.UncategorizedMongoDbException: Timeout while receiving message; nested exception is com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving message] with root cause
      java.net.SocketTimeoutException: Read timed out
      at java.net.SocketInputStream.socketRead0(Native Method) ~[?:1.8.0_181]
      at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) ~[?:1.8.0_181]
      ava.net.SocketTimeoutException: Read timed out
      t java.net.SocketInputStream.read(SocketInputStream.java:171) ~[?:1.8.0_181]
      at java.net.SocketInputStream.read(SocketInputStream.java:141) ~[?:1.8.0_181]


      Here is how I initialize my mongo Template:



      @Bean
      public MongoDbFactory mongoDbFactory()
      String addresses = mongoUri.split(",");
      List<ServerAddress> servers = new ArrayList<>();
      for (String address : addresses)
      String split = address.trim().split(":");
      servers.add(new ServerAddress(split[0].trim(), Integer.parseInt(split[1].trim())));

      MongoClientOptions.Builder mongoOperations = MongoClientOptions.builder();
      mongoOperations.socketTimeout(1000 * 20); // I tried to increase the socket timeout to see if it helps but no help either
      mongoOperations.connectTimeout(1000 * 10);
      MongoClient mongoClient = new MongoClient(servers, MongoCredential.createCredential(userName, dbName, password.toCharArray()), mongoOperations.build());
      return new SimpleMongoDbFactory(mongoClient, dbName);


      @Bean
      public MongoTemplate getMongoTemplate()
      return new MongoTemplate(mongoDbFactory());



      My mongod version is 3.6.4 and I'm using the same version of java driver.
      I tried to increase/decrease the tcp_keepalive_time setting as provided in the docs using
      sudo sysctl -w net.ipv4.tcp_keepalive_time=120 but no help either.










      share|improve this question















      After 30 mins of inactivity or so I start getting the below error when I try to insert into mongo, When I try again it starts to work. Error Below. I'm on Azure:



      [INFO ] 2018-09-10T12:00:43,188 [http-nio-8080-exec-6] connection - Closed connection [connectionIdlocalValue:3, serverValue:26] to XX.XX.XX.XX:27017 because there was a socket exception raised by this connection.
      [ERROR] 2018-09-10T12:00:43,189 [http-nio-8080-exec-6] [dispatcherServlet] - Servlet.service() for servlet [dispatcherServlet] in context with path threw exception [Request processing failed; nested exception is org.springframework.data.mongodb.UncategorizedMongoDbException: Timeout while receiving message; nested exception is com.mongodb.MongoSocketReadTimeoutException: Timeout while receiving message] with root cause
      java.net.SocketTimeoutException: Read timed out
      at java.net.SocketInputStream.socketRead0(Native Method) ~[?:1.8.0_181]
      at java.net.SocketInputStream.socketRead(SocketInputStream.java:116) ~[?:1.8.0_181]
      ava.net.SocketTimeoutException: Read timed out
      t java.net.SocketInputStream.read(SocketInputStream.java:171) ~[?:1.8.0_181]
      at java.net.SocketInputStream.read(SocketInputStream.java:141) ~[?:1.8.0_181]


      Here is how I initialize my mongo Template:



      @Bean
      public MongoDbFactory mongoDbFactory()
      String addresses = mongoUri.split(",");
      List<ServerAddress> servers = new ArrayList<>();
      for (String address : addresses)
      String split = address.trim().split(":");
      servers.add(new ServerAddress(split[0].trim(), Integer.parseInt(split[1].trim())));

      MongoClientOptions.Builder mongoOperations = MongoClientOptions.builder();
      mongoOperations.socketTimeout(1000 * 20); // I tried to increase the socket timeout to see if it helps but no help either
      mongoOperations.connectTimeout(1000 * 10);
      MongoClient mongoClient = new MongoClient(servers, MongoCredential.createCredential(userName, dbName, password.toCharArray()), mongoOperations.build());
      return new SimpleMongoDbFactory(mongoClient, dbName);


      @Bean
      public MongoTemplate getMongoTemplate()
      return new MongoTemplate(mongoDbFactory());



      My mongod version is 3.6.4 and I'm using the same version of java driver.
      I tried to increase/decrease the tcp_keepalive_time setting as provided in the docs using
      sudo sysctl -w net.ipv4.tcp_keepalive_time=120 but no help either.







      java mongodb azure spring-boot spring-data-mongodb






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Sep 11 at 5:18

























      asked Sep 10 at 12:21









      Kid101

      825317




      825317






















          1 Answer
          1






          active

          oldest

          votes

















          up vote
          0
          down vote



          accepted










          ohk. so we found that the mongo java driver jar was older than the mongo server we were using which was causing this issue. make sure that the driver supports the version of mongo server.






          share|improve this answer




















            Your Answer






            StackExchange.ifUsing("editor", function ()
            StackExchange.using("externalEditor", function ()
            StackExchange.using("snippets", function ()
            StackExchange.snippets.init();
            );
            );
            , "code-snippets");

            StackExchange.ready(function()
            var channelOptions =
            tags: "".split(" "),
            id: "1"
            ;
            initTagRenderer("".split(" "), "".split(" "), channelOptions);

            StackExchange.using("externalEditor", function()
            // Have to fire editor after snippets, if snippets enabled
            if (StackExchange.settings.snippets.snippetsEnabled)
            StackExchange.using("snippets", function()
            createEditor();
            );

            else
            createEditor();

            );

            function createEditor()
            StackExchange.prepareEditor(
            heartbeatType: 'answer',
            convertImagesToLinks: true,
            noModals: true,
            showLowRepImageUploadWarning: true,
            reputationToPostImages: 10,
            bindNavPrevention: true,
            postfix: "",
            imageUploader:
            brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
            contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
            allowUrls: true
            ,
            onDemand: true,
            discardSelector: ".discard-answer"
            ,immediatelyShowMarkdownHelp:true
            );



            );













             

            draft saved


            draft discarded


















            StackExchange.ready(
            function ()
            StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f52257710%2fsocket-timeout-with-mongo-db-after-30-mins-of-inactivity%23new-answer', 'question_page');

            );

            Post as a guest






























            1 Answer
            1






            active

            oldest

            votes








            1 Answer
            1






            active

            oldest

            votes









            active

            oldest

            votes






            active

            oldest

            votes








            up vote
            0
            down vote



            accepted










            ohk. so we found that the mongo java driver jar was older than the mongo server we were using which was causing this issue. make sure that the driver supports the version of mongo server.






            share|improve this answer
























              up vote
              0
              down vote



              accepted










              ohk. so we found that the mongo java driver jar was older than the mongo server we were using which was causing this issue. make sure that the driver supports the version of mongo server.






              share|improve this answer






















                up vote
                0
                down vote



                accepted







                up vote
                0
                down vote



                accepted






                ohk. so we found that the mongo java driver jar was older than the mongo server we were using which was causing this issue. make sure that the driver supports the version of mongo server.






                share|improve this answer












                ohk. so we found that the mongo java driver jar was older than the mongo server we were using which was causing this issue. make sure that the driver supports the version of mongo server.







                share|improve this answer












                share|improve this answer



                share|improve this answer










                answered Nov 10 at 13:15









                Kid101

                825317




                825317



























                     

                    draft saved


                    draft discarded















































                     


                    draft saved


                    draft discarded














                    StackExchange.ready(
                    function ()
                    StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f52257710%2fsocket-timeout-with-mongo-db-after-30-mins-of-inactivity%23new-answer', 'question_page');

                    );

                    Post as a guest














































































                    Popular posts from this blog

                    27

                    Top Tejano songwriter Luis Silva dead of heart attack at 64

                    Category:Rhetoric