2013-04-11 2 views
1

찾았습니다. this bug report입니다. 문제는 "그게 내게 무슨 일 이니?".cfthread의 간헐적 인 문제

나는 이런 종류의 일을하는 몇 가지 상황이 있습니다.

<cfthread name="thread1" action="run"> 
code for thread1 
</cfthread> 

<cfthread name="thread2" action="run"> 
code for thread2 
</cfthread> 

다음에 실제 이름이 있습니다.

<cfthread name="CIMSThread" action="run"> 
code for CIMSThread 
</cfthread> 

<cfthread name="thread1,thread2,CIMSThread" action="join"></cfthread> 

매우 자주 이러한 종류의 예외가 발생합니다. 처음 일어난 때

"Error","cfthread-638","04/10/13","15:14:14",,"CIMSTHREAD: null" 
"Error","jrpp-1215","04/10/13","15:14:22","DWQueries","Error Executing Database 
Query.<br><b>Query Of Queries runtime error.</b><br> 
Table named CIMSThread.CIMSData was not found in memory. etc" 

, 나는 다시 해당 보고서를 실행하고 다른 THEAD에 오류의 동일한 유형을 가지고 결국은 코드 또는 데이터를 변경하지 않고 성공적으로 실행되었다.

처음 발생했을 때 스레드에서 오류가 발생하여 충돌을 일으킬 수 있다고 생각하여 강제로 오류를 발생 시켰습니다. 그러나 예외 로그를 ​​검사했을 때 해당 스레드의 오류가 나타났습니다. 이 경우 예외 로그에이 게시물의 내용이 표시됩니다.

우리는 버전 9,0,1,274733을 실행 중이며 모니터링 기능이 켜져 있습니다.

신고 된 버그의 영향을 받거나 다른 것일 수 있습니까? 댓글

답글 나는 의지에 문제를 재현 할 수 없습니다입니다. 관리자와상의 한 후 모니터링 기능을 해제했지만 페이지가 자주 실행되지 않습니다. 잠시 동안 오류가 나타나지 않는다면 반드시 어떤 것도 증명할 필요는 없습니다.

문제가있는 스레드에는 장시간 실행되는 쿼리가 들어 있습니다. 제가 생각한 바로는 문제를 일으키지 않은 페이지가 자주 사용된다는 것입니다. 좋은 페이지와 문제 페이지에는 두 가지 차이점이 있습니다. 좋은 페이지는 두 개의 스레드 만 실행하여 결합합니다. 문제 페이지는 두 개 이상 실행됩니다. 또한, 좋은 페이지에 대한 쿼리는 exectute하는 데 오래 걸리지 않습니다. 타임 아웃을 제안하는 사람들을 위해

는, 여기

아니라 일부 코드입니다. 쿼리를 실행하는 데 약 4 초가 걸립니다.

<cfthread name="ThreadWithTimeOut" action="run"> 
<cfquery name="thread.x" datasource="dw" timeout="1"> 
sql deleted 
</cfquery> 
</cfthread> 
<cfthread action="join" name="ThreadWithTimeOut"></cfthread> 
<cfdump var="#ThreadWithTimeOut.x#" metainfo="no"> 

예외 로그이를 보여줍니다

"Error","cfthread-6","04/16/13","14:19:15",,"THREADWITHTIMEOUT: 
Error Executing Database Query. ** 
Error ** (11319) [Red Brick Warehouse JDBC Driver] : 
Query timeout (1 seconds) has expired." 
coldfusion.tagext.sql.QueryTag$DatabaseQueryException: Error Executing Database Query. 

이를 :

예외의 다른 세트의
"Error","jrpp-238","04/16/13","14:19:15","Dan", 
"Element X is undefined in THREADWITHTIMEOUT. 

. 이전 것들은 스레드가 null이라고 말했다.오류에

+0

매우 비슷해 보입니다. 문제를 자유롭게 만들 수 있습니까? 그렇다면 모니터링을 중지 할 때 사라지나요? –

+0

스레드 코드에서 해당 변수로 수행중인 작업을 보지 않고도 Dan의 의견을 말하기는 어렵습니다. 내가 말한 그 버그를 복제 할 수 없었습니다. –

+0

Dan, 나는 그다지 친숙하지 않기 전에'cfthread'를 사용하지 않았습니다. 쿼리를 실행하는 데 시간이 걸릴 것이라고 말씀하셨습니다. 아마도 경우에 따라 쿼리가 실제로 시간 초과되어 쿼리 결과를 사용할 수 없게됩니다. 'cfthread' 코드로부터 에러 구조를'cfdump' 할 수 있습니까? 출력 버퍼가 없으므로 파일에 써야 할 것입니다. 'cfdump' 태그는 당신을 위해 할 수있는 속성을 가지고 있습니다. 'output'속성을 참조하십시오. 전체 오류 구조를 덤프 할 수 있다면 올바른 방향으로 가리킬 수 있습니다. –

답변

0

보기는 좀 더 밀접하게 받고있어 :

"Error","cfthread-638","04/10/13","15:14:14",,"CIMSTHREAD: null" 
"Error","jrpp-1215","04/10/13","15:14:22","DWQueries","Error Executing Database 
Query.<br><b>Query Of Queries runtime error.</b><br> 
Table named CIMSThread.CIMSData was not found in memory. etc" 

난 단지 추측 할 수있는 오류에서 (당신이 당신의 문제 어떤 실제 코드를 제공하지 않았기 때문에) 그의 코드 CIMSTHREAD가 오류를 발생시켜 스레드가 충돌하고 데이터를 반환하지 않습니다.

또한 오류 (및 귀하의 질문)에서 나는 귀하의 스레드가 데이터베이스를 쿼리하고 그것을 다시 전달하고 있다는 것을 공제 할 수 있습니다.

이제 개인적으로 전 세계에서 데이터베이스를 쿼리하기 위해 스레드를 사용하는 이유를 알 수 없습니다. 쿼리를 실행하는 데 시간이 걸리기 때문에 그럴 필요가 있다면 내 친구에게 더 큰 문제가 있습니다. 나는 데이터베이스 자체에 첨부 된 ide에 데이터베이스에 대해 실행되는 쿼리를 넣을 것이다. 색인을 추가하거나 쿼리와 함께 재생해야하므로 더 빠르게 반환되는지 확인하십시오.

결론 ... 귀하의 문제는 귀하의 질문에 대한 시간 초과 문제 인 cfthread 문제가 아니라고 생각합니다.

+0

답변 해 주셔서 감사합니다. 스레드에 오류가있는 경우 내 게시물에 언급 된대로 예외 로그에 나타납니다. –

관련 문제