MongoDB自动故障转移不能第二次工作

时间:2017-03-06 05:06:12

标签: java mongodb grails

我正在使用MongoDB compile "org.grails.plugins:mongodb:3.0.1"。目前,当我杀死MongoDB主实例时,自动故障转移仅适用于第一次。在这种情况下,辅助节点成为主节点,应用程序能够读取数据。但是,当我再次杀死新当选的小学时,之前被杀的人现在已经升职了。这意味着我有一个小学。在这种情况下,第二次故障转移无法通过MongoDB驱动程序。它会抛出MongoServerSelectionException。已经超过5天我无法找到解决方案。下面是我的java代码

static{
            FileInputStream fis=null;

        try {
            /**** Get database ****/
            // if database doesn't exists, MongoDB will create it for you
            fis=new FileInputStream(GRMConstants.MONGODB_PROPERTY_FILE);
            properties=new Properties();
            properties.load(fis);

            String[] host=properties.getProperty("MONGODB_SERVER_ADDRESS").split(",");
            List<ServerAddress> server= new ArrayList<ServerAddress>();
            for(int i=0;i<host.length;i++){
            server.add(new ServerAddress(host[i],Integer.valueOf(properties.getProperty("MONGODB_PORT"))));
            }

            mongo = new MongoClient(server);
            databaseName=properties.getProperty("MONGO_DATABASE");
            //get database
            database=mongo.getDB(databaseName);     
        } catch (UnknownHostException ex) {
            log.error("UnknownHostException in MongoDBUtil while initilizing MongoDb server ...",ex);
        } catch (MongoException ex) {
            log.error("MongoException in MongoDBUtil while initilizing MongoDb server ...",ex);
        } catch (IOException e) {
            log.error("IOException in MongoDBUtil while initilizing MongoDb server ...",e);
        } catch (Exception e) {
            log.error("Exception in MongoDBUtil while initilizing MongoDb server ...",e);
        } finally {
            if(fis != null) {
                try {
                    fis.close();
                } catch (IOException e) {
                    log.error("Exception in MongoDBUtil while closing the input stream...", e);
                }
            }
        }
    }

但是如果重启服务器,问题就解决了。在杀死实例后,驱动程序似乎无法检测到更改。请帮忙。谢谢。

0 个答案:

没有答案