rmongodb + блестящий -> ошибка 15
Я использую mongodb, чтобы сохранить некоторые данные для блестящего приложения. Кажется, работает нормально, за исключением того, что один mongo.update
операция не работает, когда я вызываю ее в своем блестящем приложении. Сумасшедшая вещь в том, что если я использую это вручную в R, все работает нормально.
Поэтому я попробовал все функции "получения ошибок" в rmongodb и после попытки обновления mongo.get.err
возвращает "15", если запущено в блестящем приложении, но "0", если оно запускается вручную. Мне удалось найти только один список, который объясняет, что означает эта ошибка ( https://jira.mongodb.org/browse/NODE-153), и, похоже, это означает переполнение. Насколько я вижу, журнал mongodb просто ничего не говорит.
Я попытался отладки с помощью print
со всеми параметрами, переданными в mongo.update
и я убежден, что он передает правильные данные.
Итак, осталось выяснить, как использование Смазливая + Rmongodb может вступить в сговор, чтобы создать эту проблему.
Объект bson, который я передаю, содержит сериализованный объект размером 714,6 Кб. Если я удалю это из объекта mongo.update
успешно. Так что именно может быть причиной этого? Любые советы приветствуются. Я выдергиваю волосы из-за этого уже два дня...
версия mongodb: 2.6.3
rmongodb версия 1.6.53
R В разработке (нестабильный) (2014-03-05 r65119)
64-битная Linux мята
2 ответа
Краткое изложение "обсуждения": Функция загрузки сохраняет всю рабочую среду на выходе (предположительно для многопоточности). Это, очевидно, означает, что все переменные в среде сериализуются при сериализации объекта. По этой причине объект может стать очень большим, и rmongodb не может справиться с этим.
Единственное решение, которое я мог придумать, это удалить ошибочную ссылку:loess_boot$statistic <- NULL
В любом случае, вероятно, в этой части нет необходимости, но я думаю, что можно сделать что-то более умное с аргументом refhook для сериализации.
Я все еще удивляюсь, почему mongodb не может справиться с написанием объекта. Каким должен быть предел размера?
Выглядит очень странно. Я предполагаю, что есть проблемы с соединением dong mongo из-за блестящего реактивного программирования.
Проверяете ли вы работающее соединение перед выполнением команд?
if (!mongo.is.connected(mongo)) {
...
}