2012-03-11 4 views
2

heroku로 resque 작업을하려고합니다. 그것은 내 다른 응용 프로그램과 함께 작동하지만 작업자 로그에서이 오류가 이해가 안 : Resque/Rails/Heroku : PG :: Error : 결과가 지워졌습니다.

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')

답변

4

이 오류 메시지는 포스트 그레스와 인터페이스하는 데 사용되는 PG 보석의 내부 오류를 나타냅니다 데이터 베이스. 실행 된 포스트그레스 질의 결과가 메모리 접근시 지워지는 쓰레기 수집/메모리 할당 오류를 나타냅니다.

누군가 heroku가이를 디버깅해야하므로 플랫폼 수준의 문제인 것처럼 보입니다.

+1

나는 당신의 진단에 동의하지만,이는 Heroku가 플랫폼 수준의 문제가 있음을 당신의 결론은 떨어져 보인다. Heroku는 사용하는 pg의 버전이나 선택한 웹 서버 (Puma, Unicorn, Thin, et. al)를 제어하지 않습니다. @ wuputah가 언급했듯이, 이것은 포크/스레드 환경에서 연결을보다 잘 처리하여 응용 프로그램에서 해결할 수 있습니다. – catsby

4

이것은 동일한 연결을 공유하는 여러 프로세스/스레드와 가장 자주 관련됩니다. 각 작업에 대해 데이터베이스에 다시 연결하기 위해 콜백 (after_fork 또는 before_hook)을 사용하고 있습니까?

이에 대한 자세한 내용은 다음을 참조하십시오 https://stackoverflow.com/a/5519372/66752

관련 문제