Недетерминированный std :: system_error: what (): операция не разрешена

Вот что мы придумали для копирования одного поля в другое для ~ 150_000 записей. Это заняло около 6 минут, но все еще значительно менее ресурсоемким, чем это было бы для создания экземпляра и повторения одного и того же количества объектов ruby.

js_query = %({
  $or : [
    {
      'settings.mobile_notifications' : { $exists : false },
      'settings.mobile_admin_notifications' : { $exists : false }
    }
  ]
})

js_for_each = %(function(user) {
  if (!user.settings.hasOwnProperty('mobile_notifications')) {
    user.settings.mobile_notifications = user.settings.email_notifications;
  }
  if (!user.settings.hasOwnProperty('mobile_admin_notifications')) {
    user.settings.mobile_admin_notifications = user.settings.email_admin_notifications;
  }
  db.users.save(user);
})

js = "db.users.find(#{js_query}).forEach(#{js_for_each});"
Mongoid::Sessions.default.command('$eval' => js)
1
задан Camembert 22 January 2019 в 15:41
поделиться

1 ответ

После установки функций в noexcept я смог найти трассировку стека, показывающую мне, что я вызывал condition_variable :: wait () для unique_lock для мьютекса, которого не было. Просто объект Семафор, для которого я вызвал wait (), был нулевым. Отсюда системная ошибка с брошенным unique_lock как в https://en.cppreference.com/w/cpp/thread/unique_lock/lock

0
ответ дан Camembert 22 January 2019 в 15:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: