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). "

Так что это не проблема монгоджек;)

С уважением, Пако.

Другие вопросы по тегам