我发现了这个bug报告。问题是,"这是发生在我身上的吗?"
我在一些情况下会这样做。
<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"
当它第一次发生时,我再次运行适用的报告,并在不同的头上得到相同类型的错误,最终使它成功运行,而无需更改任何代码或数据。
当它第一次发生时,我还认为线程中可能发生了一些不好的事情,这会导致它崩溃,所以我做了一些事情来强迫它发生。然而,当我检查异常日志时,出现了该线程中的错误。在这种情况下,异常日志将显示这篇文章中的内容。
我们正在运行版本9,0,1,274733,并已打开监控。
我是否受到报告的错误的影响,或者这可能是其他的东西?
回复评论
我不能随意重现这个问题。在咨询了我的管理员之后,我们关闭了监控,但是页面并不经常运行。如果错误一段时间没有出现,它不一定证明什么。
问题线程包含长时间运行的查询。我刚刚想到的是,有一个非常频繁使用的页面从来没有引起过问题。好的页面和问题页面有两个不同之处。good页面只运行了两个线程并将它们连接起来。问题页多于两页。此外,good页面上的查询执行时间也不长。
对于那些建议超时的人,它不是
下面是一些代码。执行该查询大约需要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.
这是一组不同的异常。
查看你得到的错误:
"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问题,这是一个超时问题与您的查询。