Uploaded image for project: 'Java Driver'
  1. Java Driver
  2. JAVA-788

Detecting Server Going Away?

    XMLWordPrintableJSON

Details

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: Major - P3 Major - P3
    • None
    • 2.10.1
    • Connection Management
    • None

    Description

      The Java driver is great when everything goes right. However, the weakness can be seen when things start to go wrong.

      Let me illustrate with an example. A very simple one ... detecting when the server is available. You can't!

      Say for example you wanted to make sure the server was available (maybe you start your client before the server, or the server goes away for maintenance for a few moments (backup)).

      Take the following piece of code:

      try{
      mongo.getConnector().requestEnsureConnection();
      }catch(Exception e){
      // never thrown
      }

      Why is the following exception (see below) masked? It is logged out to the JUL but that is of no use to the calling application.

      The mongo.getConnector().isOpen() also suffers the same fate.

      Why on earth are these exceptions masked? This is Java 101.

      WARNING: Exception executing isMaster command on /127.0.0.1:27017
      java.io.IOException: couldn't connect to [/127.0.0.1:27017] bc:java.net.ConnectException: Connection refused: connect
      at com.mongodb.DBPort._open(DBPort.java:214)
      at com.mongodb.DBPort.go(DBPort.java:107)
      at com.mongodb.DBPort.go(DBPort.java:88)
      at com.mongodb.DBPort.findOne(DBPort.java:143)
      at com.mongodb.DBPort.runCommand(DBPort.java:148)
      at com.mongodb.DBTCPConnector.initDirectConnection(DBTCPConnector.java:548)
      at com.mongodb.DBTCPConnector.checkMaster(DBTCPConnector.java:527)
      at com.mongodb.DBTCPConnector.requestEnsureConnection(DBTCPConnector.java:129)
      at com.profiler.ProfilerExtension.run(ProfilerExtension.java:126)
      at java.lang.Thread.run(Thread.java:619)

      So the question is, how does one handle the fact a server has gone away? What is the magic here to determine what is what?

      Attachments

        Activity

          People

            Unassigned Unassigned
            alanwilliamson Alan Williamson
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: