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)) {
   ...
  }
Другие вопросы по тегам