Фон:
У меня есть наборы реплик MongoDB, работающие в рабочей роли облачной службы Azure + веб-ролях, с использованием библиотеки mongo-azure . В первый раз, когда я настроил свой проект Android для подключения к MongoDB/Azure, ввод-вывод (чтение и запись) работал. Затем я разбил приложение из-за опечатки в моем жестко закодированном тестовом JSONString, поэтому экземпляр Mongo не смог правильно закрыться. После исправления этой проблемы с JSONString я получил следующую ошибку (в трассировке стека) и не смог получить доступ к MongoDB/Azure. Возможно, неправильное закрытие соединения вызвало ошибку?
Вопрос:
Что именно означает эта ошибка? Почему главный экземпляр недоступен?
E/AndroidRuntime: com.mongodb.MongoException: not talking to master and retries used up
Полная трассировка стека:
E/AndroidRuntime(6274): FATAL EXCEPTION: Thread-7108
E/AndroidRuntime(6274): Process: com.myproject.examplemongodb, PID: 6274
E/AndroidRuntime(6274): com.mongodb.MongoException: not talking to master and retries used up
E/AndroidRuntime(6274): at com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:271)
E/AndroidRuntime(6274): at com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:273)
E/AndroidRuntime(6274): at com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:273)
E/AndroidRuntime(6274): at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:216)
E/AndroidRuntime(6274): at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:288)
E/AndroidRuntime(6274): at com.mongodb.DBApiLayer$MyCollection.__find(DBApiLayer.java:273)
E/AndroidRuntime(6274): at com.mongodb.DB.getCollectionNames(DB.java:400)
E/AndroidRuntime(6274): at com.myproject.examplemongodb.ActivityMain$1.run(ActivityMain.java:89)
E/AndroidRuntime(6274): at java.lang.Thread.run(Thread.java:841)
Примечания:
- Я использую новейший mongo-java-driver ( в настоящее время 2.11.3).
- Я удаленно подключаюсь к базе данных (не локальный хост).
- В другом вопросе упоминается эта ошибка, но OP использует разные драйверы, и его решение не работает для Android/Java.
Возможное решение:
- It appears that closing the connection from the app allowed the next run to work properly. But, I'm still worried about being able allow concurrent connections, which I would definitely like to do.
- Update: I have wrapped a mongodb log in and log out around each of my queries going to the server, but the error still seems to show up intermittently. So far, it seems that write work every time, but reads only work half the time. The other half of the time is the posted error.