Resque / Rails / Heroku: PG :: Ошибка: результат был очищен - PullRequest
2 голосов
/ 11 марта 2012

Я пытаюсь заставить реску работать с герою. Это работает с моим другим приложением, но я не понимаю эту ошибку в рабочих журналах:

PG::Error: result has been cleared: SELECT "users".* FROM "users" WHERE "users"."id" = $1 LIMIT 1

Поэтому, когда я добавляю задание в очередь, работник берёт задание и выдает ошибку выше.

Вот рабочий класс:

class Companies
  @queue = :companies

  def self.perform(current_user_id, model)
    @current_user = User.find(current_user_id)

    ... do things with @current_user and model...
  end
end

И я вызываю действие выполнить, используя: Resque.enqueue(Companies, current_user.id, 'quotes')

Ответы [ 2 ]

4 голосов
/ 11 апреля 2012

Это чаще всего связано с несколькими процессами / потоками, использующими одно и то же соединение. Используете ли вы какой-либо обратный вызов (after_fork или before_hook) для повторного подключения к базе данных для каждого задания?

Подробнее об этом см .: https://stackoverflow.com/a/5519372/66752

4 голосов
/ 30 марта 2012

Это сообщение об ошибке указывает на внутреннюю ошибку в геме PG, который используется для взаимодействия с базой данных Postgres.Это указывает на ошибку сборки мусора / выделения памяти, когда результат выполненного запроса postgres был удален из памяти при доступе.

Кто-то, как heroku, должен будет это отладить, похоже, это проблема уровня платформы.

...