JacksonDBDecoder - Ошибки сервера от MongoDB - mongojack 2.3.0
У меня проблема, когда мое приложение получает ошибку от сервера MongoDB, например:
Представьте, что я выполняю поиск в MongoDB, но ответ от MongoDB Server является ошибкой из-за тайм-аута:
{$ err: "MongoTimeout из-за... бла бла бла..." код: 50}
JacksonDBDecoder ожидает мой тип Java, например, мой класс "Stuff" (который содержит несколько полей, таких как "цена" и "вес"), но когда он получает предыдущий JSON, тогда нет соответствующих полей с "ценой" и "весом" ", поэтому результат пуст: { }
Пустой JSON будет обрабатываться классами mongo-java-driver (com.mongodb.QueryResultIterator.throwOnQueryFailure) и никогда не будет регистрировать исходную информацию "MongoTimeout из-за... бла-бла-бла..." и 50, потому что декодер не может понять JSON с сервера MongoDB.
Не могли бы вы помочь мне сконфигурировать mongojack или Jackson для обработки этого типа ответов от сервера MongoDB?
Большое спасибо.
С уважением, Пако.
1 ответ
Поговорив с поддержкой MongoDB, они подтвердили мне следующее:
"Команда драйверов прочитала наши последние комментарии, и они считают, что это действительно ошибка драйвера. По сути, они думают, что драйвер должен обнаружить, что это ошибка запроса, и использовать декодер по умолчанию для декодирования документа ошибки, а не пользовательский декодер, зарегистрированный MongoJack.,
Наиболее важной частью является то, что эта ошибка не существует в серии драйверов 3.x. Поэтому мы предлагаем вам обновить драйвер до версии 3.2.2 (обратите внимание, что MongoJack перечисляет драйвер Java 3.2 в качестве предпочтительной зависимости: http://mongojack.org/dependencies.html). "
Так что это не проблема монгоджек;)
С уважением, Пако.