0
나는 기본적으로이 작업을 수행하는 응용 프로그램이 일시 중지 된 잎 : do_things
이 오류가 발생하는 경우OCI8 오류에 닫지 연결을 수행하고 응용 프로그램이 (가 중단)
queue = SizedQueue.new(2)
Thread.new do
conn = OCI8.new(DSN)
cursor = conn.exec([a query])
cursor.fetch { |rec| queue << rec }
queue << :queue_ended
cursor.close
conn.logoff
end.tap { |t| t.abort_on_exception = true }
until a = queue.pop == :queue_ended
do_things(a)
end
문제가 온다. 스레드가 중단되지 않는 것 같습니다. 필자가 oci8이라고 믿는 이유는이 코드가 다른 함수 세트/라이브러리로 실행되고 모든 것이 잘 되었기 때문입니다. 내가 연결이 열려 있기 때문에 OCI8이라고 생각하는 또 다른 이유는 스레드가 연결을 중단했다면 확실히 종료 되었습니까?
간혹 쿼리를 생성하기 위해 irb에서 KeyBoardInterrupt를 발생시키는 데 종종 문제가 있습니다.
사과해야 할 일이 많지 않으면 계속할 필요가 없습니다. 스레드를 사용하지 않고 문제를 재현 할 수 없으며 디버깅이 매우 어렵다는 것을 알고 있습니다.
N.B Ruby OCI8 (rb 1.9.3의 최신 버전 (2.1.5))을 사용하고 있습니다. 사전에 도움을
감사