From: Thomas Z. <tho...@un...> - 2007-02-06 11:09:56
|
Hello, in a distance of some months, I always have the same problem again ;-) When sending a lot of queries from a Java-program (going through a loop)=20 to eXist, the program crashes with the error (eXist 1.1.1-newcore): --------------------------- Exception in thread "main" org.xmldb.api.base.XMLDBException:=20 org.exist.EXistException: result set unknown or timed out at=20 org.exist.xmldb.RemoteXMLResource.getContent(RemoteXMLResource.java:166) at nbd.eXistDB.SendAQuery(eXistDB.java:55) at nbdMethods.vectors.TheMatrix.build(TheMatrix.java:225) at nbdMethods.vectors.TheMatrix.main(TheMatrix.java:286) Caused by: org.apache.xmlrpc.XmlRpcException: org.exist.EXistException:=20 result set unknown or timed out at=20 org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java:457) at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java:163) at=20 org.exist.xmldb.RemoteXMLResource.getContent(RemoteXMLResource.java:164) ... 3 more [B@c9ba38org.apache.xmlrpc.XmlRpcException: org.exist.EXistException:=20 result set unknown or timed out at=20 org.apache.xmlrpc.XmlRpcClient$Worker.execute(XmlRpcClient.java:457) at org.apache.xmlrpc.XmlRpcClient.execute(XmlRpcClient.java:163) at=20 org.exist.xmldb.RemoteXMLResource.getContent(RemoteXMLResource.java:164) at nbd.eXistDB.SendAQuery(eXistDB.java:55) at nbdMethods.vectors.TheMatrix.build(TheMatrix.java:225) at nbdMethods.vectors.TheMatrix.main(TheMatrix.java:286) --------------------------- Some months ago, Michael Beddow told me a solution: I used to get this error when operating on huge result sets retrieved by = the Java client which took me a long time to analyse chunk by chunk. Eventua= lly requests for additional results produced this error. The cause seems to l= ie in (src)/org/exist/storage/NativeBroker.java at the line private static final long TEMP_FRAGMENT_TIMEOUT =3D 300000; That's milliseconds, and so after 5 minutes the result set gets deleted a= nd any further attempts to access it throw the error you reported. This see= ms to be independent of any (configurable) timeout set in interfaces that support session persistence. I found that adding an extra zero to that constant gave me the extra time I needed to retrieve more results without having to repeat the query. But this may have undesirable side-effects, especially on heavily-used databases, but for my purposes in an applicati= on with myself as sole user it has been fine. Now, I looked into this file and found that TEMP_FRAGMENT_TIMEOUT is set = to just 60000 ?? Isn't this a little bit to short? And is there a possibility to change this without compiling the whole eXi= st-database? I have problems with just one of my programs which needs to = run just one time and I'm looking for the best way to solve this problem = ;-) Thank you! Tom --=20 Thomas Zastrow Seminar fuer Sprachwissenschaft Universitaet Tuebingen http://www.sfs.uni-tuebingen.de/dialectometry/ Wilhelm Str. 19 D-72074 T=FCbingen Tel.: 07071/29-73968 Fax: 07071/29-5214 |