我有一个多线程java进程的问题,在我的主要部分我启动一个分页查询并将结果放在线程中,执行select,updates和很多疯狂的东西。
用于执行查询的方法是Query.skip(int skip)
和Query.limit(int limit)
,其限制值为10.000。
当分页超过800.000个元素时,该进程会抛出以下异常:
Exception:org.springframework.dao.DataAccessResourceFailureException: Cursor XXXXXXXX not found on server XXXXXXXX:XXXXX; nested exception is com.mongodb.MongoException$CursorNotFound: Cursor XXXXXXXX not found on server XXXXXXXX:XXXXX
at org.springframework.data.mongodb.core.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTranslator.java:60)
at org.springframework.data.mongodb.core.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:1918)
at org.springframework.data.mongodb.core.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:1801)
at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1612)
at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1596)
at org.springframework.data.mongodb.core.MongoTemplate.find(MongoTemplate.java:535)
at org.springframework.data.mongodb.core.MongoTemplate.find(MongoTemplate.java:526)
问题出在哪里?
我的mongo选项:
<mongo:options auto-connect-retry="true"
connections-per-host="30"
socket-keep-alive="true" max-auto-connect-retry-time="15000"
max-wait-time="60000" socket-timeout="0" />
版本:
Spring : 3.2.9.RELEASE
Spring Data Mongdb: 1.5.1.RELEASE
Mongo Java Driver: 2.12.2
也许有些照片会有所帮助:
为什么这个过程如此之大?这是答案StatelessKnowledgeSession Focus Agenda
感谢!!!