Массовое выполнение MongoDB Casbah - несовместимое обновление - PullRequest
0 голосов
/ 12 сентября 2018

В настоящее время я использую монго в качестве автономного хранилища для сериализованных объектов в системе, над которой я работаю.Поскольку эти объекты периодически сохраняются, я использую операцию «Упорядоченная масса», которая для большинства запусков работает нормально.

Однако по какой-то причине при каждой паре прогонов некоторые данные не сохраняются или заменяются нулевым значением.Чтобы попытаться решить эту проблему, я создал игрушечный пример , который создает вершину графа, выполняет некоторые обновления и затем сохраняет ее в mongo (используя мой класс MongoFactory ; строки 63-).76 для подготовки вставки, 35-61 для выполнения партии).Затем я еще немного изменяю вершину и снова сохраняю ее, чтобы проверить «обновление» сериализованной версии (строка 79-91 для подготовки обновления вершины).Наконец, сериализованная сущность в последующем считывается, анализируется в объекте вершины (строки 349-371 класса хранения сущностей *1008*) и сравнивается с оригиналом.В большинстве случаев он проходит все тесты ( Вершина равна Линии 55-100) и сообщает следующее:

enter image description here

В которомпервая строка - это идентификатор всех связанных ребер, вторая строка - это вершина после того, как она была проанализирована обратно из Mongo, а другие строки - снова связанные ребра.Однако в некоторых случаях свойства, добавленные в строке 62-63 игрушечного примера, отсутствуют (во втором ParTrieMap отсутствует prop3):

enter image description here

Или, в качестве альтернативы, в худшем примере, который я нашел до сих пор, некоторые из связанных ребер записываются как нулевые значения. Ошибка здесь в том, что мы пытаемся прочитать нулевое ребро из Mongo, которое возвращает «ничто», и поэтому список историиnull:

enter image description here

Я немного растерялся, что мне здесь делать.Я предполагаю, что есть некоторая проблема чередования, но, поскольку я делаю все поочередно, это может быть только на стороне Casbah.Если у кого-то есть идеи относительно того, почему это происходит (я вполне могу сделать что-то глупое), пожалуйста, дайте мне знать.

Заранее спасибо!

...