From: Calum B. <cal...@go...> - 2009-03-06 15:12:34
|
Hi, I've been working on an application for a government reasearch department for a number of months now, that has at its heart the eXist DB. Unfortunately, over this time we've had no end of problems with eXist - it seems to fall over on an almost daily basis and we are now at the point where we are seriously questioning whether we can continue to use it. Typically the DB will run OK for a while, then it'll just stop responding and will require restarting before it'll work again. In more serious cases, the content becomes corrupted meaning that the DB data needs to be deleted and restored from backup. On the whole I don't think we're doing anything particularly controversial with it - the app uses the XML-RPC interface to create and retrieve docs, with a few xqueries thrown in for good measure. The docs are in the atom format are and rarely bigger than a few kb. Occasionally the system has to handle the upload of large data files (>10Mb) and this more consistently leads to problems - which I can almost accept (I use parse() and have yet to investigate using upload(), instead, for large files). I recently upgraded to the 1.2.5 version, in the hope that it might fix some issues, but we have already experienced problems again. Since we are not doing anything too complex with the DB, and since eXist appears to be relatively mature, I can only conclude that we have a configuration issue to blame. Apologies for the excessive content here (and sorry - was unsure if I could just attach the files - so have included them in full here), but hopefully some of the info below might shed some light on the situation (NB, I am not very experienced with linux sys admin, so it may well be something trivial I've missed). If anyone can provide any suggestions on how to progress this, it would be very, very much appreciated. Thanks, Calum. System Info --------------------- uname -a Linux xxx.xxx.xxx.ac.uk 2.4.20-8smp #1 SMP Thu Mar 13 17:45:54 EST 2003 i686 i686 i386 GNU/Linux more /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 15 model : 2 model name : Intel(R) Xeon(TM) CPU 2.40GHz stepping : 9 cpu MHz : 2392.356 cache size : 512 KB physical id : 0 siblings : 1 fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 2 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm bogomips : 4771.02 processor : 1 vendor_id : GenuineIntel cpu family : 15 model : 2 model name : Intel(R) Xeon(TM) CPU 2.40GHz stepping : 9 cpu MHz : 2392.356 cache size : 512 KB physical id : 3 siblings : 1 fdiv_bug : no hlt_bug : no f00f_bug : no coma_bug : no fpu : yes fpu_exception : yes cpuid level : 2 wp : yes flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm bogomips : 4784.12 free -m - before starting eXist total used free shared buffers cached Mem: 2016 1880 135 0 168 1503 -/+ buffers/cache: 209 1806 Swap: 2000 87 1913 free -m - after restarting eXist total used free shared buffers cached Mem: 2016 1888 128 0 138 1518 -/+ buffers/cache: 230 1785 Swap: 2000 92 1908 free -m - after running for a day total used free shared buffers cached Mem: 2016 2002 13 0 137 1510 -/+ buffers/cache: 353 1662 Swap: 2000 134 1865 EXist config info ------------------------ Running as a init.d service, with jetty, using the standard exist.sh wrapper file conf.xml =================== <?xml version="1.0" encoding="UTF-8"?> <exist xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema/conf.xsd"> <cluster dbaPassword="" dbaUser="admin" exclude="/db/system,/db/system/config" journalDir="webapp/WEB-INF/data/journal" protocol="UDP(mcast_addr=228.1.2.3;mcast_port=45566;ip_ttl=8;ip_mcast=true;mcast_send_buf_size=800000;mcast_recv_buf_size=150000;ucast_send_buf_size=800000;ucast_recv_buf_size=150000;loopback=true):PING(timeout=2000;num_initial_members=3;up_thread=true;down_thread=true):MERGE2(min_interval=10000;max_interval=20000):FD(shun=true;up_thread=true;down_thread=true;timeout=2500;max_tries=5):VERIFY_SUSPECT(timeout=3000;num_msgs=3;up_thread=true;down_thread=true):pbcast.NAKACK(gc_lag=50;retransmit_timeout=300,600,1200,2400,4800;max_xmit_size=8192;up_thread=true;down_thread=true):UNICAST(timeout=300,600,1200,2400,4800;window_size=100;min_threshold=10;down_thread=true):pbcast.STABLE(desired_avg_gossip=20000;up_thread=true;down_thread=true):FRAG(frag_size=8192;down_thread=true;up_thread=true):pbcast.GMS(join_timeout=5000;join_retry_timeout=2000;shun=true;print_local_addr=true)"/> <db-connection cacheSize="256M" collectionCache="64M" database="native" files="/disks/databases/exist" pageSize="4096"> <pool max="20" min="1" sync-period="120000" wait-before-shutdown="120000"/> <recovery enabled="yes" group-commit="no" journal-dir="webapp/WEB-INF/data" size="100M" sync-on-commit="no" force-restart="no" consistency-check="yes"/> <watchdog output-size-limit="100000" query-timeout="-1"/> </db-connection> <indexer caseSensitive="yes" index-depth="5" preserve-whitespace-mixed-content="yes" stemming="no" suppress-whitespace="none" tokenizer="org.exist.storage.analysis.SimpleTokenizer" track-term-freq="yes"> <modules> <module id="ngram-index" class="org.exist.indexing.ngram.NGramIndex" file="ngram.dbx" n="3"/> <module id="ft-legacy-index" class="org.exist.fulltext.FTIndex"/> </modules> <stopwords file="stopword"/> <index> <fulltext attributes="true" default="all"> <exclude path="/auth"/> </fulltext> </index> </indexer> <scheduler> <job type="system" name="check1" class="org.exist.storage.ConsistencyCheckTask" cron-trigger="0 0 03 * * ?"> <parameter name="output" value="/disks/rain2/backup/exist/consistency_check"/> <parameter name="backup" value="no"/> </job> <job type="system" name="backup" class="org.exist.storage.BackupSystemTask" cron-trigger="00 00 22 * * ?"> <parameter name="dir" value="/disks/rain2/backup/exist"/> <parameter name="suffix" value=""/> <parameter name="prefix" value="eXist_***_"/> <parameter name="collection" value="/db"/> <parameter name="user" value="admin"/> <parameter name="password" value="***"/> <parameter name="zip-files-max" value="28"/> </job> </scheduler> <serializer add-exist-id="none" compress-output="no" enable-xinclude="yes" enable-xsl="no" indent="yes" match-tagging-attributes="no" match-tagging-elements="no"/> <transformer class="org.apache.xalan.processor.TransformerFactoryImpl"/> <validation mode="no"> <entity-resolver> <catalog uri="${WEBAPP_HOME}/WEB-INF/catalog.xml"/> </entity-resolver> </validation> <xquery enable-java-binding="no" enable-query-rewriting="yes" backwardCompatible="no"> <builtin-modules> <!-- Default Modules --> <module class="org.exist.xquery.functions.util.UtilModule" uri="http://exist-db.org/xquery/util"/> <module class="org.exist.xquery.functions.transform.TransformModule" uri="http://exist-db.org/xquery/transform"/> <module class="org.exist.xquery.functions.xmldb.XMLDBModule" uri="http://exist-db.org/xquery/xmldb"/> <module class="org.exist.xquery.functions.request.RequestModule" uri="http://exist-db.org/xquery/request"/> <module class="org.exist.xquery.functions.response.ResponseModule" uri="http://exist-db.org/xquery/response"/> <module class="org.exist.xquery.functions.session.SessionModule" uri="http://exist-db.org/xquery/session"/> <module class="org.exist.xquery.functions.text.TextModule" uri="http://exist-db.org/xquery/text"/> <module class="org.exist.xquery.modules.example.ExampleModule" uri="http://exist-db.org/xquery/examples"/> <module class="org.exist.xquery.functions.validation.ValidationModule" uri="http://exist-db.org/xquery/validation"/> <module class="org.exist.xquery.functions.system.SystemModule" uri="http://exist-db.org/xquery/system"/> <module class="org.exist.xquery.modules.ngram.NGramModule" uri="http://exist-db.org/xquery/ngram"/> </builtin-modules> </xquery> <xupdate allowed-fragmentation="5" enable-consistency-checks="no"/> </exist> server.xml ================= <server xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="schema/server.xsd"> <listener protocol="http" port="8088"/> <webdav enabled="yes" context="/webdav/*"/> <xmlrpc enabled="yes" context="/xmlrpc/*"/> <rest enabled="yes" context="/*"> <param name="form-encoding" value="UTF-8"/> <param name="container-encoding" value="UTF-8"/> </rest> <servlet enabled="yes" context="/atom/*" class="org.exist.atom.http.AtomServlet"/> <filter enabled="no" path="/*" class="uk.gov.devonline.www.xforms.XFormsFilter"/> <forwarding> <forward path="/admin" destination="/db/admin/admin.xql"/> </forwarding> </server> wrapper.con ============= #******************************************************************** # Wrapper Properties #******************************************************************** # Java Application wrapper.java.command=/usr/java/jdk1.5.0_09/jre/bin/java # Java Main class. This class must implement the WrapperListener interface # or guarantee that the WrapperManager class is initialized. Helper # classes are provided to do this for you. See the Integration section # of the documentation for details. wrapper.java.mainclass=org.exist.wrapper.Main # Java Classpath (include wrapper.jar) Add class path elements as # needed starting from 1 wrapper.java.classpath.1=../classes wrapper.java.classpath.2=../lib/wrapper.jar wrapper.java.classpath.3=../../../start.jar # Java Library Path (location of Wrapper.DLL or libwrapper.so) wrapper.java.library.path.1=../lib # Java Additional Parameters wrapper.java.additional.1=-Djava.endorsed.dirs=../../../lib/endorsed wrapper.java.additional.2=-Dfile.encoding=UTF-8 wrapper.java.additional.3=-Dexist.home=../../.. wrapper.java.additional.4=-Djetty.home=../../../tools/jetty # log4j configuration is read from the conf directory of the wrapper wrapper.java.additional.5=-Dlog4j.configuration=file:../conf/log4j.xml # Initial Java Heap Size (in MB) wrapper.java.initmemory=64 # Maximum Java Heap Size (in MB) wrapper.java.maxmemory=1024 # Application parameters. Add parameters as needed starting from 1 wrapper.app.parameter.1=jetty wrapper.app.parameter.2=../../../tools/jetty/etc/jetty.xml #******************************************************************** # Wrapper Logging Properties #******************************************************************** # Format of output for the console. (See docs for formats) wrapper.console.format=PM # Log Level for console output. (See docs for log levels) wrapper.console.loglevel=INFO # Log file to use for wrapper output logging. wrapper.logfile=../logs/wrapper.log # Format of output for the log file. (See docs for formats) wrapper.logfile.format=LPTM # Log Level for log file output. (See docs for log levels) wrapper.logfile.loglevel=INFO # Maximum size that the log file will be allowed to grow to before # the log is rolled. Size is specified in bytes. The default value # of 0, disables log rolling. May abbreviate with the 'k' (kb) or # 'm' (mb) suffix. For example: 10m = 10 megabytes. wrapper.logfile.maxsize=0 # Maximum number of rolled log files which will be allowed before old # files are deleted. The default value of 0 implies no limit. wrapper.logfile.maxfiles=0 # Log Level for sys/event log output. (See docs for log levels) wrapper.syslog.loglevel=NONE #******************************************************************** # Wrapper Windows Properties #******************************************************************** # Title to use when running as a console wrapper.console.title=eXist Server with Jetty #******************************************************************** # Wrapper Windows NT/2000/XP Service Properties #******************************************************************** # WARNING - Do not modify any of these properties when an application # using this configuration file has been installed as a service. # Please uninstall the service before modifying this section. The # service can then be reinstalled. # Name of the service wrapper.ntservice.name=eXist # Display name of the service wrapper.ntservice.displayname=eXist Native XML Database # Description of the service wrapper.ntservice.description=eXist Database Server # Service dependencies. Add dependencies as needed starting from 1 wrapper.ntservice.dependency.1= # Mode in which the service is installed. AUTO_START or DEMAND_START wrapper.ntservice.starttype=AUTO_START # Allow the service to interact with the desktop. wrapper.ntservice.interactive=false Example errors - NB, these are just a selection; I'm really hoping there is a single, underlying issue that is causing these errors and that they are not all distinct. Also, the errors tend to appear spuriously and are hard to reproduce. ----------------------------- Appeared spuriously - fixed upon restart: 2009-02-17 12:28:36,330 [P1-5] DEBUG (HttpServer.java [service]:893) - Contexts at /exist/xmlrpc: [/exist/*=[WebApplicationContext[/exist,eXist XML Database]]] 2009-02-17 12:28:36,330 [P1-5] DEBUG (HttpServer.java [service]:907) - Try WebApplicationContext[/exist,eXist XML Database],0 2009-02-17 12:28:36,331 [P1-5] DEBUG (HttpContext.java [handle]:1529) - Handler org.mortbay.jetty.servlet.WebApplicationHandler@1f21c50 2009-02-17 12:28:36,331 [P1-5] DEBUG (ServletHandler.java [handle]:546) - servlet=/xmlrpc=org.exist.xmlrpc.RpcServlet 2009-02-17 12:28:36,331 [P1-5] DEBUG (ServletHandler.java [handle]:564) - session=null 2009-02-17 12:28:36,331 [P1-5] DEBUG (WebApplicationHandler.java [dispatch]:467) - chain=null 2009-02-17 12:28:36,332 [P1-5] DEBUG (RpcConnection.java [createCollection]:202) - creating collection /db/atoms 2009-02-17 12:28:36,333 [P1-5] DEBUG (NativeTextEngine.java [dropIndex]:1052) - Removing 289 tokens 2009-02-17 12:28:36,344 [P1-5] WARN (RpcConnection.java [createCollection]:210) - java.lang.ClassCastException: org.exist.storage.index.BFile$OverflowPage cannot be cast to org.exist.storage.index.BFile$SinglePage 2009-02-17 12:28:36,344 [P1-5] DEBUG (RpcServer.java [handleException]:583) - org.exist.storage.index.BFile$OverflowPage cannot be cast to org.exist.storage.index.BFile$SinglePage java.lang.ClassCastException: org.exist.storage.index.BFile$OverflowPage cannot be cast to org.exist.storage.index.BFile$SinglePage at org.exist.storage.index.BFile$MultiPageInput.advance(BFile.java:2359) at org.exist.storage.index.BFile$MultiPageInput.copyRaw(BFile.java:2475) at org.exist.storage.NativeTextEngine$InvertedIndex.dropIndex(NativeTextEngine.java:1087) at org.exist.storage.NativeTextEngine.dropIndex(NativeTextEngine.java:366) at org.exist.fulltext.FTIndexWorker.flush(FTIndexWorker.java:170) at org.exist.indexing.IndexController.flush(IndexController.java:197) at org.exist.storage.NativeBroker.flush(NativeBroker.java:2873) at org.exist.xmlrpc.RpcConnection.createCollection(RpcConnection.java:205) at org.exist.xmlrpc.RpcConnection.createCollection(RpcConnection.java:179) at org.exist.xmlrpc.RpcServer.createCollection(RpcServer.java:88) at org.exist.xmlrpc.RpcServer.createCollection(RpcServer.java:81) at sun.reflect.GeneratedMethodAccessor37.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.exist.xmlrpc.AuthenticatedHandler.execute(AuthenticatedHandler.java:120) at org.exist.xmlrpc.AuthenticatedHandler.execute(AuthenticatedHandler.java:67) at org.apache.xmlrpc.XmlRpcWorker.invokeHandler(XmlRpcWorker.java:128) at org.apache.xmlrpc.XmlRpcWorker.execute(XmlRpcWorker.java:185) at org.apache.xmlrpc.XmlRpcServer.execute(XmlRpcServer.java:151) at org.apache.xmlrpc.XmlRpcServer.execute(XmlRpcServer.java:139) at org.exist.xmlrpc.RpcServlet.doPost(RpcServlet.java:93) at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428) at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:473) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568) at org.mortbay.http.HttpContext.handle(HttpContext.java:1530) at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:633) at org.mortbay.http.HttpContext.handle(HttpContext.java:1482) at org.mortbay.http.HttpServer.service(HttpServer.java:909) at org.mortbay.http.HttpConnection.service(HttpConnection.java:820) at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986) at org.mortbay.http.HttpConnection.handle(HttpConnection.java:837) at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245) at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534) Appeared spuriously - fixed upon restart: 2009-02-18 11:44:11,839 [P1-7] DEBUG (WebApplicationHandler.java [dispatch]:467) - chain=null 2009-02-18 11:44:11,840 [P1-7] DEBUG (Collection.java [checkPermissions]:1295) - Found old doc 1133 2009-02-18 11:44:11,840 [P1-7] DEBUG (Collection.java [validateXMLResourceInternal]:1176) - Scanning document /db/system/config/db/atoms/db_atoms.xconf 2009-02-18 11:44:11,843 [P1-7] DEBUG (Collection.java [validateXMLResourceInternal]:1181) - removing old document db_atoms.xconf 2009-02-18 11:44:11,843 [P1-7] INFO (NativeBroker.java [removeXMLResource]:1973) - Removing document db_atoms.xconf (1133) ... 2009-02-18 11:44:11,844 [P1-7] DEBUG (RpcConnection.java [parse]:1829) - java.lang.NullPointerException at org.exist.storage.NativeTextEngine$InvertedIndex.flush(NativeTextEngine.java:962) at org.exist.storage.NativeTextEngine.flush(NativeTextEngine.java:331) at org.exist.storage.NativeTextEngine.setDocument(NativeTextEngine.java:174) at org.exist.fulltext.FTIndexWorker.setDocument(FTIndexWorker.java:93) at org.exist.fulltext.FTIndexWorker.setDocument(FTIndexWorker.java:84) at org.exist.indexing.IndexController.setDocument(IndexController.java:138) at org.exist.indexing.IndexController.setDocument(IndexController.java:186) at org.exist.storage.NativeBroker.dropIndex(NativeBroker.java:2019) at org.exist.storage.NativeBroker.removeXMLResource(NativeBroker.java:1977) at org.exist.collections.Collection.validateXMLResourceInternal(Collection.java:1195) at org.exist.collections.Collection.validateXMLResource(Collection.java:1087) at org.exist.xmlrpc.RpcConnection.parse(RpcConnection.java:1808) at org.exist.xmlrpc.RpcConnection.parse(RpcConnection.java:1763) at org.exist.xmlrpc.RpcConnection.parse(RpcConnection.java:1730) at org.exist.xmlrpc.RpcServer.parse(RpcServer.java:714) at sun.reflect.GeneratedMethodAccessor29.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.exist.xmlrpc.AuthenticatedHandler.execute(AuthenticatedHandler.java:120) at org.exist.xmlrpc.AuthenticatedHandler.execute(AuthenticatedHandler.java:67) at org.apache.xmlrpc.XmlRpcWorker.invokeHandler(XmlRpcWorker.java:128) at org.apache.xmlrpc.XmlRpcWorker.execute(XmlRpcWorker.java:185) at org.apache.xmlrpc.XmlRpcServer.execute(XmlRpcServer.java:151) at org.apache.xmlrpc.XmlRpcServer.execute(XmlRpcServer.java:139) at org.exist.xmlrpc.RpcServlet.doPost(RpcServlet.java:93) at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428) at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:473) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568) at org.mortbay.http.HttpContext.handle(HttpContext.java:1530) at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:633) at org.mortbay.http.HttpContext.handle(HttpContext.java:1482) at org.mortbay.http.HttpServer.service(HttpServer.java:909) at org.mortbay.http.HttpConnection.service(HttpConnection.java:820) at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986) at org.mortbay.http.HttpConnection.handle(HttpConnection.java:837) at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245) at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534) Appeared following ingest of large document - fixed upon restart: 2009-02-18 17:03:31,038 [P1-8] DEBUG (RpcConnection.java [parse]:1829) - -16364 java.lang.ArrayIndexOutOfBoundsException: -16364 at org.exist.storage.index.BFile$SinglePage.readOffsets(BFile.java:2594) at org.exist.storage.index.BFile$SinglePage.<init>(BFile.java:2564) at org.exist.storage.index.BFile.getDataPage(BFile.java:578) at org.exist.storage.index.BFile.getDataPage(BFile.java:563) at org.exist.storage.index.BFile.append(BFile.java:226) at org.exist.storage.index.BFile.append(BFile.java:200) at org.exist.storage.NativeTextEngine$InvertedIndex.flushWord(NativeTextEngine.java:1022) at org.exist.storage.NativeTextEngine$InvertedIndex.flush(NativeTextEngine.java:989) at org.exist.storage.NativeTextEngine.flush(NativeTextEngine.java:331) at org.exist.fulltext.FTIndexWorker.flush(FTIndexWorker.java:167) at org.exist.indexing.IndexController.flush(IndexController.java:197) at org.exist.storage.NativeBroker.flush(NativeBroker.java:2873) at org.exist.collections.Collection.storeXMLInternal(Collection.java:1002) at org.exist.collections.Collection.store(Collection.java:889) at org.exist.xmlrpc.RpcConnection.parse(RpcConnection.java:1821) at org.exist.xmlrpc.RpcConnection.parse(RpcConnection.java:1763) at org.exist.xmlrpc.RpcConnection.parse(RpcConnection.java:1730) at org.exist.xmlrpc.RpcServer.parse(RpcServer.java:714) at sun.reflect.GeneratedMethodAccessor27.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.exist.xmlrpc.AuthenticatedHandler.execute(AuthenticatedHandler.java:120) at org.exist.xmlrpc.AuthenticatedHandler.execute(AuthenticatedHandler.java:67) at org.apache.xmlrpc.XmlRpcWorker.invokeHandler(XmlRpcWorker.java:128) at org.apache.xmlrpc.XmlRpcWorker.execute(XmlRpcWorker.java:185) at org.apache.xmlrpc.XmlRpcServer.execute(XmlRpcServer.java:151) at org.apache.xmlrpc.XmlRpcServer.execute(XmlRpcServer.java:139) at org.exist.xmlrpc.RpcServlet.doPost(RpcServlet.java:93) at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428) at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:473) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568) at org.mortbay.http.HttpContext.handle(HttpContext.java:1530) at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:633) at org.mortbay.http.HttpContext.handle(HttpContext.java:1482) at org.mortbay.http.HttpServer.service(HttpServer.java:909) at org.mortbay.http.HttpConnection.service(HttpConnection.java:820) at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986) at org.mortbay.http.HttpConnection.handle(HttpConnection.java:837) at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245) at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534) 2009-02-18 17:03:31,039 [P1-8] DEBUG (RpcServer.java [handleException]:583) - -16364 java.lang.ArrayIndexOutOfBoundsException: -16364 at org.exist.storage.index.BFile$SinglePage.readOffsets(BFile.java:2594) at org.exist.storage.index.BFile$SinglePage.<init>(BFile.java:2564) at org.exist.storage.index.BFile.getDataPage(BFile.java:578) at org.exist.storage.index.BFile.getDataPage(BFile.java:563) at org.exist.storage.index.BFile.append(BFile.java:226) at org.exist.storage.index.BFile.append(BFile.java:200) at org.exist.storage.NativeTextEngine$InvertedIndex.flushWord(NativeTextEngine.java:1022) at org.exist.storage.NativeTextEngine$InvertedIndex.flush(NativeTextEngine.java:989) at org.exist.storage.NativeTextEngine.flush(NativeTextEngine.java:331) at org.exist.fulltext.FTIndexWorker.flush(FTIndexWorker.java:167) at org.exist.indexing.IndexController.flush(IndexController.java:197) at org.exist.storage.NativeBroker.flush(NativeBroker.java:2873) at org.exist.collections.Collection.storeXMLInternal(Collection.java:1002) at org.exist.collections.Collection.store(Collection.java:889) at org.exist.xmlrpc.RpcConnection.parse(RpcConnection.java:1821) at org.exist.xmlrpc.RpcConnection.parse(RpcConnection.java:1763) at org.exist.xmlrpc.RpcConnection.parse(RpcConnection.java:1730) at org.exist.xmlrpc.RpcServer.parse(RpcServer.java:714) at sun.reflect.GeneratedMethodAccessor27.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.exist.xmlrpc.AuthenticatedHandler.execute(AuthenticatedHandler.java:120) at org.exist.xmlrpc.AuthenticatedHandler.execute(AuthenticatedHandler.java:67) at org.apache.xmlrpc.XmlRpcWorker.invokeHandler(XmlRpcWorker.java:128) at org.apache.xmlrpc.XmlRpcWorker.execute(XmlRpcWorker.java:185) at org.apache.xmlrpc.XmlRpcServer.execute(XmlRpcServer.java:151) at org.apache.xmlrpc.XmlRpcServer.execute(XmlRpcServer.java:139) at org.exist.xmlrpc.RpcServlet.doPost(RpcServlet.java:93) at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428) at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:473) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568) at org.mortbay.http.HttpContext.handle(HttpContext.java:1530) at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:633) at org.mortbay.http.HttpContext.handle(HttpContext.java:1482) at org.mortbay.http.HttpServer.service(HttpServer.java:909) at org.mortbay.http.HttpConnection.service(HttpConnection.java:820) at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986) at org.mortbay.http.HttpConnection.handle(HttpConnection.java:837) at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245) at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534) 2009-02-18 17:03:31,040 [P1-8] DEBUG (HttpContext.java [handle]:1534) - Handled by org.mortbay.jetty.servlet.WebApplicationHandler@185ad79 2009-02-18 17:03:31,040 [P1-8] DEBUG (HttpInputStream.java [resetStream]:235) - resetStream() 2009-02-18 17:03:31,040 [P1-8] DEBUG (HttpConnection.java [handleNext]:1082) - RESPONSE: HTTP/1.1 200 OK Date: Wed, 18 Feb 2009 17:01:02 GMT Server: Jetty/5.1.12 (Linux/2.4.20-8smp i386 java/1.6.0_10 Content-Type: text/xml Content-Length: 288 Connection: close Running xquery after a weekend of ops - no response given to xmlrpc call. Had to delete the DB data and restore to get things working again: 2009-02-23 09:50:12,769 [P1-71] DEBUG (HttpServer.java [service]:893) - Contexts at /exist/xmlrpc: [/exist/*=[WebApplicationContext[/exist,eXist XML Database]]] 2009-02-23 09:50:12,769 [P1-71] DEBUG (HttpServer.java [service]:907) - Try WebApplicationContext[/exist,eXist XML Database],0 2009-02-23 09:50:12,769 [P1-71] DEBUG (HttpContext.java [handle]:1529) - Handler org.mortbay.jetty.servlet.WebApplicationHandler@754fc 2009-02-23 09:50:12,769 [P1-71] DEBUG (ServletHandler.java [handle]:546) - servlet=/xmlrpc=org.exist.xmlrpc.RpcServlet 2009-02-23 09:50:12,770 [P1-71] DEBUG (ServletHandler.java [handle]:564) - session=null 2009-02-23 09:50:12,770 [P1-71] DEBUG (WebApplicationHandler.java [dispatch]:467) - chain=null 2009-02-23 09:50:12,771 [P1-71] DEBUG (RpcServer.java [executeQuery]:134) - query: (: Return a specific atom document when /db/atoms, ***.**.ac.uk and OBS_43b12972-b8fe-102c-8001-001e4f9f5ef4 are overwritten :) declare default element namespace 'http://www.w3.org/2005/Atom'; declare variable $targetCollection as xs:string := '/db/atoms'; declare variable $localIdentifier as xs:string := '***.**.ac.uk__ATOM__OBS_43b12972-b8fe-102c-8001-001e4f9f5ef4$'; for $DE in collection($targetCollection)/entry[matches(id, $localIdentifier)] return $DE 2009-02-23 09:50:12,771 [P1-71] DEBUG (RpcServer.java [get]:1651) - waiting for connection to become available 2009-02-23 09:50:42,770 [Acceptor ServerSocket[addr= 0.0.0.0/0.0.0.0,port=0,localport=8080]] DEBUG (LogSupport.java [ignore]:36) - IGNORED java.net.SocketTimeoutException: Accept timed out at java.net.PlainSocketImpl.socketAccept(Native Method) at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384) at java.net.ServerSocket.implAccept(ServerSocket.java:453) at java.net.ServerSocket.accept(ServerSocket.java:421) at org.mortbay.util.ThreadedServer.acceptSocket(ThreadedServer.java:432) at org.mortbay.util.ThreadedServer$Acceptor.run(ThreadedServer.java:634) 2009-02-23 09:50:45,835 [P1-72] DEBUG (HttpConnection.java [<init>]:115) - new HttpConnection: Socket[addr=/130.246.189.180,port=21225,localport=8080] 2009-02-23 09:50:45,836 [P1-72] DEBUG (HttpConnection.java [handleNext]:978) - REQUEST from P1@0.0.0.0:8080: POST /exist/xmlrpc HTTP/1.1 Content-Length: 156 Content-Type: text/xml Authorization: Basic YWRtaW46bW9sZXNhZG1pbg== Cache-Control: no-cache Pragma: no-cache User-Agent: Java/1.6.0_06 Host: ***:8080 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive 2009-02-23 09:50:45,836 [P1-72] DEBUG (HttpServer.java [service]:893) - Contexts at /exist/xmlrpc: [/exist/*=[WebApplicationContext[/exist,eXist XML Database]]] 2009-02-23 09:50:45,836 [P1-72] DEBUG (HttpServer.java [service]:907) - Try WebApplicationContext[/exist,eXist XML Database],0 2009-02-23 09:50:45,837 [P1-72] DEBUG (HttpContext.java [handle]:1529) - Handler org.mortbay.jetty.servlet.WebApplicationHandler@754fc 2009-02-23 09:50:45,837 [P1-72] DEBUG (ServletHandler.java [handle]:546) - servlet=/xmlrpc=org.exist.xmlrpc.RpcServlet 2009-02-23 09:50:45,837 [P1-72] DEBUG (ServletHandler.java [handle]:564) - session=null 2009-02-23 09:50:45,837 [P1-72] DEBUG (WebApplicationHandler.java [dispatch]:467) - chain=null 2009-02-23 09:50:45,838 [P1-72] DEBUG (RpcServer.java [get]:1651) - waiting for connection to become available 2009-02-23 09:51:15,840 [Acceptor ServerSocket[addr= 0.0.0.0/0.0.0.0,port=0,localport=8080]] DEBUG (LogSupport.java [ignore]:36) - IGNORED java.net.SocketTimeoutException: Accept timed out at java.net.PlainSocketImpl.socketAccept(Native Method) at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384) at java.net.ServerSocket.implAccept(ServerSocket.java:453) at java.net.ServerSocket.accept(ServerSocket.java:421) at org.mortbay.util.ThreadedServer.acceptSocket(ThreadedServer.java:432) at org.mortbay.util.ThreadedServer$Acceptor.run(ThreadedServer.java:634) Tried to create new doc - noticed this error - although the DB had been down all day, it turns out. Fixed by restarting. 2009-02-26 17:14:48,310 [P1-6] DEBUG (HttpConnection.java [<init>]:115) - new HttpConnection: Socket[addr=/130.246.191.211,port=56356,localport=8080] 2009-02-26 17:14:48,310 [P1-6] DEBUG (HttpConnection.java [handleNext]:978) - REQUEST from P1@0.0.0.0:8080: POST /exist/xmlrpc HTTP/1.0 Host: ***.**.**.ac.uk:8080 Authorization: Basic YWRtaW46bW9sZXNhZG1pbg== User-Agent: xmlrpclib.py/1.0.1 (by www.pythonware.com) Content-Type: text/xml Content-Length: 1035 2009-02-26 17:14:48,311 [P1-6] DEBUG (HttpServer.java [service]:893) - Contexts at /exist/xmlrpc: [/exist/*=[WebApplicationContext[/exist,eXist XML Database]]] 2009-02-26 17:14:48,311 [P1-6] DEBUG (HttpServer.java [service]:907) - Try WebApplicationContext[/exist,eXist XML Database],0 2009-02-26 17:14:48,311 [P1-6] DEBUG (HttpContext.java [handle]:1529) - Handler org.mortbay.jetty.servlet.WebApplicationHandler@754fc 2009-02-26 17:14:48,311 [P1-6] DEBUG (ServletHandler.java [handle]:546) - servlet=/xmlrpc=org.exist.xmlrpc.RpcServlet 2009-02-26 17:14:48,311 [P1-6] DEBUG (ServletHandler.java [handle]:564) - session=null 2009-02-26 17:14:48,312 [P1-6] DEBUG (WebApplicationHandler.java [dispatch]:467) - chain=null 2009-02-26 17:14:48,317 [P1-6] DEBUG (RpcServer.java [executeQuery]:134) - query: (: Return a specific atom document when /db/atoms/ and OBS_f84307e2-0428-11de-a760-00e081470 264 are overwritten - NB, this adds an extra :) declare default element namespace 'http://www.w3.org/2005/Atom'; declare variable $targetCollection as xs:string := '/db/atoms/'; declare variable $localIdentifier as xs:string := '***.**.ac.uk__ATOM__OBS_f84307e2-0428-11de-a760-00e081470264$'; declare variable $repositoryIdentifier as xs:string := '***.**.ac.uk'; for $DE in collection($targetCollection)/entry[matches(id, $localIdentifier)] return <collectionPath>{util:collection-name($DE)}</collectionPath> 2009-02-26 17:14:48,322 [P1-6] DEBUG (XQuery.java [compile]:161) - Query diagnostics: declare variable $targetCollection <4> as xs:string{ "/db/atoms/" } declare variable $localIdentifier <5> as xs:string{ "***.**.ac.uk__ATOM__OBS_f84307e2-0428-11de-a760-00e081470264$" } declare variable $repositoryIdentifier <6> as xs:string{ "***.**.ac.uk" } for <7> $DE in collection(untyped-value-check[xs:string, $targetCollection]) (# exist:optimize #) { child::entry[matches(child::id, $localIdentifier)] } return <8> element {"collectionPath"} { { util:collection-name($DE) } } 2009-02-26 17:14:48,322 [P1-6] DEBUG (XQuery.java [compile]:167) - Compilation took 4 ms 2009-02-26 17:14:48,323 [P1-6] DEBUG (ContextLoader.java [getResource]:255) - try getResource META-INF/services/javax.xml.datatype.DatatypeFactory from java.net.URLClassLoade r@1f6f296 2009-02-26 17:14:48,323 [P1-6] DEBUG (ContextLoader.java [getResource]:283) - found jar:file:/usr/local/exist/exist/lib/endorsed/xercesImpl-2.9.1.jar!/META-INF/services/javax .xml.datatype.DatatypeFactory 2009-02-26 17:14:48,324 [P1-6] DEBUG (ContextLoader.java [loadClass]:199) - try loadClass org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl from java.net.URLClassLoader@1f6 f296 2009-02-26 17:14:48,325 [P1-6] DEBUG (ContextLoader.java [loadClass]:205) - p0 loaded class org.apache.xerces.jaxp.datatype.DatatypeFactoryImpl 2009-02-26 17:14:48,350 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,365 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,375 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,375 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,376 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,376 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,377 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,377 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,378 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,386 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,391 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,392 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,392 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,393 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,395 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,396 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,403 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,404 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,404 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,405 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,405 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,406 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,410 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,411 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,412 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,419 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,424 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,424 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,425 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,425 [P1-6] DEBUG (NativeValueIndex.java [matchAll]:805) - Searching with QName prefix 2009-02-26 17:14:48,426 [P1-6] DEBUG (XQuery.java [execute]:220) - Execution took 103 ms 2009-02-26 17:14:48,427 [P1-6] DEBUG (HTTPUtils.java [addLastModifiedHeader]:61) - mostRecentDocumentTime: 0 2009-02-26 17:14:48,427 [P1-6] DEBUG (HTTPUtils.java [addLastModifiedHeader]:61) - mostRecentDocumentTime: 0 2009-02-26 17:14:48,427 [P1-6] INFO (RpcConnection.java [doQuery]:339) - query took 104ms. 2009-02-26 17:14:48,428 [P1-6] DEBUG (HttpContext.java [handle]:1534) - Handled by org.mortbay.jetty.servlet.WebApplicationHandler@754fc 2009-02-26 17:14:48,428 [P1-6] DEBUG (HttpInputStream.java [resetStream]:235) - resetStream() 2009-02-26 17:14:48,429 [P1-6] DEBUG (HttpConnection.java [handleNext]:1082) - RESPONSE: HTTP/1.1 200 OK Date: Thu, 26 Feb 2009 17:14:48 GMT Server: Jetty/5.1.12 (Linux/2.4.20-8smp i386 java/1.6.0_10 Content-Type: text/xml Content-Length: 130 Connection: close 2009-02-26 17:14:48,435 [P1-6] DEBUG (HttpConnection.java [<init>]:115) - new HttpConnection: Socket[addr=/130.246.191.211,port=56357,localport=8080] 2009-02-26 17:14:48,435 [P1-6] DEBUG (HttpConnection.java [handleNext]:978) - REQUEST from P1@0.0.0.0:8080: POST /exist/xmlrpc HTTP/1.0 Host: ***.**.**.ac.uk:8080 Authorization: Basic YWRtaW46bW9sZXNhZG1pbg== User-Agent: xmlrpclib.py/1.0.1 (by www.pythonware.com) Content-Type: text/xml Content-Length: 151 2009-02-26 17:14:48,435 [P1-6] DEBUG (HttpServer.java [service]:893) - Contexts at /exist/xmlrpc: [/exist/*=[WebApplicationContext[/exist,eXist XML Database]]] 2009-02-26 17:14:48,435 [P1-6] DEBUG (HttpServer.java [service]:907) - Try WebApplicationContext[/exist,eXist XML Database],0 2009-02-26 17:14:48,436 [P1-6] DEBUG (HttpContext.java [handle]:1529) - Handler org.mortbay.jetty.servlet.WebApplicationHandler@754fc 2009-02-26 17:14:48,436 [P1-6] DEBUG (ServletHandler.java [handle]:546) - servlet=/xmlrpc=org.exist.xmlrpc.RpcServlet 2009-02-26 17:14:48,436 [P1-6] DEBUG (ServletHandler.java [handle]:564) - session=null 2009-02-26 17:14:48,436 [P1-6] DEBUG (WebApplicationHandler.java [dispatch]:467) - chain=null 2009-02-26 17:14:48,437 [P1-6] DEBUG (HttpContext.java [handle]:1534) - Handled by org.mortbay.jetty.servlet.WebApplicationHandler@754fc 2009-02-26 17:14:48,437 [P1-6] DEBUG (HttpInputStream.java [resetStream]:235) - resetStream() 2009-02-26 17:14:48,438 [P1-6] DEBUG (HttpConnection.java [handleNext]:1082) - RESPONSE: HTTP/1.1 200 OK Date: Thu, 26 Feb 2009 17:14:48 GMT Server: Jetty/5.1.12 (Linux/2.4.20-8smp i386 java/1.6.0_10 Content-Type: text/xml Content-Length: 427 Connection: close 2009-02-26 17:14:48,445 [P1-6] DEBUG (HttpConnection.java [<init>]:115) - new HttpConnection: Socket[addr=/130.246.191.211,port=56358,localport=8080] 2009-02-26 17:14:48,445 [P1-6] DEBUG (HttpConnection.java [handleNext]:978) - REQUEST from P1@0.0.0.0:8080: POST /exist/xmlrpc HTTP/1.0 Host: ***.**.**.ac.uk:8080 Authorization: Basic YWRtaW46bW9sZXNhZG1pbg== User-Agent: xmlrpclib.py/1.0.1 (by www.pythonware.com) Content-Type: text/xml Content-Length: 202 2009-02-26 17:14:48,445 [P1-6] DEBUG (HttpServer.java [service]:893) - Contexts at /exist/xmlrpc: [/exist/*=[WebApplicationContext[/exist,eXist XML Database]]] 2009-02-26 17:14:48,445 [P1-6] DEBUG (HttpServer.java [service]:907) - Try WebApplicationContext[/exist,eXist XML Database],0 2009-02-26 17:14:48,446 [P1-6] DEBUG (HttpContext.java [handle]:1529) - Handler org.mortbay.jetty.servlet.WebApplicationHandler@754fc 2009-02-26 17:14:48,446 [P1-6] DEBUG (ServletHandler.java [handle]:546) - servlet=/xmlrpc=org.exist.xmlrpc.RpcServlet 2009-02-26 17:14:48,446 [P1-6] DEBUG (ServletHandler.java [handle]:564) - session=null 2009-02-26 17:14:48,446 [P1-6] DEBUG (WebApplicationHandler.java [dispatch]:467) - chain=null 2009-02-26 17:14:48,447 [P1-6] DEBUG (HttpContext.java [handle]:1534) - Handled by org.mortbay.jetty.servlet.WebApplicationHandler@754fc 2009-02-26 17:14:48,448 [P1-6] DEBUG (HttpInputStream.java [resetStream]:235) - resetStream() 2009-02-26 17:14:48,448 [P1-6] DEBUG (HttpConnection.java [handleNext]:1082) - RESPONSE: HTTP/1.1 200 OK Date: Thu, 26 Feb 2009 17:14:48 GMT Server: Jetty/5.1.12 (Linux/2.4.20-8smp i386 java/1.6.0_10 Content-Type: text/xml Content-Length: 550 Connection: close 2009-02-26 17:14:48,768 [P1-6] DEBUG (HttpConnection.java [<init>]:115) - new HttpConnection: Socket[addr=/130.246.191.211,port=56360,localport=8080] 2009-02-26 17:14:48,768 [P1-6] DEBUG (HttpConnection.java [handleNext]:978) - REQUEST from P1@0.0.0.0:8080: POST /exist/xmlrpc HTTP/1.0 Host: ***.**.**.ac.uk:8080 Authorization: Basic YWRtaW46bW9sZXNhZG1pbg== User-Agent: xmlrpclib.py/1.0.1 (by www.pythonware.com) Content-Type: text/xml Content-Length: 210 2009-02-26 17:14:48,768 [P1-6] DEBUG (HttpServer.java [service]:893) - Contexts at /exist/xmlrpc: [/exist/*=[WebApplicationContext[/exist,eXist XML Database]]] 2009-02-26 17:14:48,769 [P1-6] DEBUG (HttpServer.java [service]:907) - Try WebApplicationContext[/exist,eXist XML Database],0 2009-02-26 17:14:48,769 [P1-6] DEBUG (HttpContext.java [handle]:1529) - Handler org.mortbay.jetty.servlet.WebApplicationHandler@754fc 2009-02-26 17:14:48,769 [P1-6] DEBUG (ServletHandler.java [handle]:546) - servlet=/xmlrpc=org.exist.xmlrpc.RpcServlet 2009-02-26 17:14:48,769 [P1-6] DEBUG (ServletHandler.java [handle]:564) - session=null 2009-02-26 17:14:48,769 [P1-6] DEBUG (WebApplicationHandler.java [dispatch]:467) - chain=null 2009-02-26 17:14:48,770 [P1-6] DEBUG (RpcConnection.java [createCollection]:202) - creating collection /db/atoms/working/deployment_data/***.**.ac.uk 2009-02-26 17:14:48,771 [P1-6] INFO (RpcConnection.java [createCollection]:207) - collection /db/atoms/working/deployment_data/***.**.ac.uk has been created 2009-02-26 17:14:48,772 [P1-6] DEBUG (HttpContext.java [handle]:1534) - Handled by org.mortbay.jetty.servlet.WebApplicationHandler@754fc 2009-02-26 17:14:48,772 [P1-6] DEBUG (HttpInputStream.java [resetStream]:235) - resetStream() 2009-02-26 17:14:48,772 [P1-6] DEBUG (HttpConnection.java [handleNext]:1082) - RESPONSE: HTTP/1.1 200 OK Date: Thu, 26 Feb 2009 17:14:48 GMT Server: Jetty/5.1.12 (Linux/2.4.20-8smp i386 java/1.6.0_10 Content-Type: text/xml Content-Length: 138 Connection: close 2009-02-26 17:14:48,778 [P1-6] DEBUG (HttpConnection.java [<init>]:115) - new HttpConnection: Socket[addr=/130.246.191.211,port=56361,localport=8080] 2009-02-26 17:14:48,779 [P1-6] DEBUG (HttpConnection.java [handleNext]:978) - REQUEST from P1@0.0.0.0:8080: POST /exist/xmlrpc HTTP/1.0 Host: ***.**.**.ac.uk:8080 Authorization: Basic YWRtaW46bW9sZXNhZG1pbg== User-Agent: xmlrpclib.py/1.0.1 (by www.pythonware.com) Content-Type: text/xml Content-Length: 1885 2009-02-26 17:14:48,779 [P1-6] DEBUG (HttpServer.java [service]:893) - Contexts at /exist/xmlrpc: [/exist/*=[WebApplicationContext[/exist,eXist XML Database]]] 2009-02-26 17:14:48,779 [P1-6] DEBUG (HttpServer.java [service]:907) - Try WebApplicationContext[/exist,eXist XML Database],0 2009-02-26 17:14:48,779 [P1-6] DEBUG (HttpContext.java [handle]:1529) - Handler org.mortbay.jetty.servlet.WebApplicationHandler@754fc 2009-02-26 17:14:48,780 [P1-6] DEBUG (ServletHandler.java [handle]:546) - servlet=/xmlrpc=org.exist.xmlrpc.RpcServlet 2009-02-26 17:14:48,780 [P1-6] DEBUG (ServletHandler.java [handle]:564) - session=null 2009-02-26 17:14:48,780 [P1-6] DEBUG (WebApplicationHandler.java [dispatch]:467) - chain=null 2009-02-26 17:14:48,781 [P1-6] DEBUG (Collection.java [validateXMLResourceInternal]:1176) - Scanning document /db/atoms/working/deployment_data/***.**.ac.uk/OBS_f84307e2-0 428-11de-a760-00e081470264.atom 2009-02-26 17:14:48,785 [P1-6] DEBUG (RpcConnection.java [parse]:1829) - java.lang.NullPointerException at org.exist.storage.NativeTextEngine$InvertedIndex.flush(NativeTextEngine.java:962) at org.exist.storage.NativeTextEngine.flush(NativeTextEngine.java:331) at org.exist.storage.NativeTextEngine.setDocument(NativeTextEngine.java:174) at org.exist.fulltext.FTIndexWorker.setDocument(FTIndexWorker.java:93) at org.exist.fulltext.FTIndexWorker.setDocument(FTIndexWorker.java:84) at org.exist.indexing.IndexController.setDocument(IndexController.java:138) at org.exist.indexing.IndexController.setDocument(IndexController.java:186) at org.exist.Indexer.setValidating(Indexer.java:176) at org.exist.collections.Collection.validateXMLResourceInternal(Collection.java:1211) at org.exist.collections.Collection.validateXMLResource(Collection.java:1087) at org.exist.xmlrpc.RpcConnection.parse(RpcConnection.java:1808) at org.exist.xmlrpc.RpcConnection.parse(RpcConnection.java:1763) at org.exist.xmlrpc.RpcConnection.parse(RpcConnection.java:1730) at org.exist.xmlrpc.RpcServer.parse(RpcServer.java:714) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.exist.xmlrpc.AuthenticatedHandler.execute(AuthenticatedHandler.java:120) at org.exist.xmlrpc.AuthenticatedHandler.execute(AuthenticatedHandler.java:67) at org.apache.xmlrpc.XmlRpcWorker.invokeHandler(XmlRpcWorker.java:128) at org.apache.xmlrpc.XmlRpcWorker.execute(XmlRpcWorker.java:185) at org.apache.xmlrpc.XmlRpcServer.execute(XmlRpcServer.java:151) at org.apache.xmlrpc.XmlRpcServer.execute(XmlRpcServer.java:139) at org.exist.xmlrpc.RpcServlet.doPost(RpcServlet.java:93) at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428) at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:473) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568) at org.mortbay.http.HttpContext.handle(HttpContext.java:1530) at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:633) at org.mortbay.http.HttpContext.handle(HttpContext.java:1482) at org.mortbay.http.HttpServer.service(HttpServer.java:909) at org.mortbay.http.HttpConnection.service(HttpConnection.java:820) at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986) at org.mortbay.http.HttpConnection.handle(HttpConnection.java:837) at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245) at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534) 2009-02-26 17:14:48,786 [P1-6] DEBUG (RpcServer.java [handleException]:583) - java.lang.NullPointerException at org.exist.storage.NativeTextEngine$InvertedIndex.flush(NativeTextEngine.java:962) at org.exist.storage.NativeTextEngine.flush(NativeTextEngine.java:331) at org.exist.storage.NativeTextEngine.setDocument(NativeTextEngine.java:174) at org.exist.fulltext.FTIndexWorker.setDocument(FTIndexWorker.java:93) at org.exist.fulltext.FTIndexWorker.setDocument(FTIndexWorker.java:84) at org.exist.indexing.IndexController.setDocument(IndexController.java:138) at org.exist.indexing.IndexController.setDocument(IndexController.java:186) at org.exist.Indexer.setValidating(Indexer.java:176) at org.exist.collections.Collection.validateXMLResourceInternal(Collection.java:1211) at org.exist.collections.Collection.validateXMLResource(Collection.java:1087) at org.exist.xmlrpc.RpcConnection.parse(RpcConnection.java:1808) at org.exist.xmlrpc.RpcConnection.parse(RpcConnection.java:1763) at org.exist.xmlrpc.RpcConnection.parse(RpcConnection.java:1730) at org.exist.xmlrpc.RpcServer.parse(RpcServer.java:714) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.exist.xmlrpc.AuthenticatedHandler.execute(AuthenticatedHandler.java:120) at org.exist.xmlrpc.AuthenticatedHandler.execute(AuthenticatedHandler.java:67) at org.apache.xmlrpc.XmlRpcWorker.invokeHandler(XmlRpcWorker.java:128) at org.apache.xmlrpc.XmlRpcWorker.execute(XmlRpcWorker.java:185) at org.apache.xmlrpc.XmlRpcServer.execute(XmlRpcServer.java:151) at org.apache.xmlrpc.XmlRpcServer.execute(XmlRpcServer.java:139) at org.exist.xmlrpc.RpcServlet.doPost(RpcServlet.java:93) at javax.servlet.http.HttpServlet.service(HttpServlet.java:763) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428) at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:473) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568) at org.mortbay.http.HttpContext.handle(HttpContext.java:1530) at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:633) at org.mortbay.http.HttpContext.handle(HttpContext.java:1482) at org.mortbay.http.HttpServer.service(HttpServer.java:909) at org.mortbay.http.HttpConnection.service(HttpConnection.java:820) at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986) at org.mortbay.http.HttpConnection.handle(HttpConnection.java:837) at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245) at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534) 2009-02-26 17:14:48,787 [P1-6] DEBUG (HttpContext.java [handle]:1534) - Handled by org.mortbay.jetty.servlet.WebApplicationHandler@754fc 2009-02-26 17:14:48,787 [P1-6] DEBUG (HttpInputStream.java [resetStream]:235) - resetStream() 2009-02-26 17:14:48,787 [P1-6] DEBUG (HttpConnection.java [handleNext]:1082) - RESPONSE: HTTP/1.1 200 OK Date: Thu, 26 Feb 2009 17:14:48 GMT Server: Jetty/5.1.12 (Linux/2.4.20-8smp i386 java/1.6.0_10 Content-Type: text/xml Content-Length: 270 Connection: close 2009-02-26 17:15:18,785 [Acceptor ServerSocket[addr= 0.0.0.0/0.0.0.0,port=0,localport=8080]] DEBUG (LogSupport.java [ignore]:36) - IGNORED java.net.SocketTimeoutException: Accept timed out at java.net.PlainSocketImpl.socketAccept(Native Method) at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384) at java.net.ServerSocket.implAccept(ServerSocket.java:453) at java.net.ServerSocket.accept(ServerSocket.java:421) at org.mortbay.util.ThreadedServer.acceptSocket(ThreadedServer.java:432) at org.mortbay.util.ThreadedServer$Acceptor.run(ThreadedServer.java:634) 2009-02-26 17:15:48,795 [Acceptor ServerSocket[addr= 0.0.0.0/0.0.0.0,port=0,localport=8080]] DEBUG (LogSupport.java [ignore]:36) - IGNORED java.net.SocketTimeoutException: Accept timed out at java.net.PlainSocketImpl.socketAccept(Native Method) at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384) at java.net.ServerSocket.implAccept(ServerSocket.java:453) at java.net.ServerSocket.accept(ServerSocket.java:421) at org.mortbay.util.ThreadedServer.acceptSocket(ThreadedServer.java:432) at org.mortbay.util.ThreadedServer$Acceptor.run(ThreadedServer.java:634) 2009-02-26 17:15:49,026 [exist_QuartzScheduler_Worker-4] DEBUG (NGramIndex.java [sync]:86) - SYNC NGRAM 2009-02-26 17:15:49,027 [exist_QuartzScheduler_Worker-4] INFO (NativeBroker.java [sync]:2904) - Memory: 262,072K total; 1,040,512K max; 125,678K free 2009-02-26 17:15:49,028 [exist_QuartzScheduler_Worker-4] INFO (BTree.java [printStatistics]:2347) - dom.dbx INDEX Buffers occupation : 100% (1639 out of 1639) Cache efficien cy : 100% 2009-02-26 17:15:49,028 [exist_QuartzScheduler_Worker-4] INFO (DOMFile.java [printStatistics]:1431) - dom.dbx DATA Buffers occupation : 100% (255 out of 256) Cache efficienc y : 52% 2009-02-26 17:15:49,028 [exist_QuartzScheduler_Worker-4] INFO (BTree.java [printStatistics]:2347) - collections.dbx INDEX Buffers occupation : 78% (75 out of 96) Cache effic iency : 100% 2009-02-26 17:15:49,028 [exist_QuartzScheduler_Worker-4] INFO (BFile.java [printStatistics]:438) - collections.dbx DATA Buffers occupation : 98% (238 out of 243) Cache effic iency : 100% 2009-02-26 17:15:49,029 [exist_QuartzScheduler_Worker-4] INFO (BTree.java [printStatistics]:2347) - elements.dbx INDEX Buffers occupation : 39% (25 out of 64) Cache efficien cy : 100% 2009-02-26 17:15:49,029 [exist_QuartzScheduler_Worker-4] INFO (BFile.java [printStatistics]:438) - elements.dbx DATA Buffers occupation : 97% (712 out of 737) Cache efficien cy : 100% 2009-02-26 17:15:49,029 [exist_QuartzScheduler_Worker-4] INFO (BTree.java [printStatistics]:2347) - values.dbx INDEX Buffers occupation : 92% (445 out of 486) Cache efficien cy : 97% 2009-02-26 17:15:49,030 [exist_QuartzScheduler_Worker-4] INFO (BFile.java [printStatistics]:438) - values.dbx DATA Buffers occupation : 94% (60 out of 64) Cache efficiency : 98% 2009-02-26 17:15:49,030 [exist_QuartzScheduler_Worker-4] DEBUG (Journal.java [checkpoint]:313) - Checkpoint reached 2009-02-26 17:15:49,030 [exist_QuartzScheduler_Worker-4] DEBUG (NotificationService.java [debug]:76) - Registered UpdateListeners: 2009-02-26 17:16:18,805 [Acceptor ServerSocket[addr= 0.0.0.0/0.0.0.0,port=0,localport=8080]] DEBUG (LogSupport.java [ignore]:36) - IGNORED java.net.SocketTimeoutException: Accept timed out at java.net.PlainSocketImpl.socketAccept(Native Method) at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384) at java.net.ServerSocket.implAccept(ServerSocket.java:453) at java.net.ServerSocket.accept(ServerSocket.java:421) at org.mortbay.util.ThreadedServer.acceptSocket(ThreadedServer.java:432) at org.mortbay.util.ThreadedServer$Acceptor.run(ThreadedServer.java:634) 2009-02-26 17:16:48,815 [Acceptor ServerSocket[addr= 0.0.0.0/0.0.0.0,port=0,localport=8080]] DEBUG (LogSupport.java [ignore]:36) - IGNORED java.net.SocketTimeoutException: Accept timed out at java.net.PlainSocketImpl.socketAccept(Native Method) at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384) at java.net.ServerSocket.implAccept(ServerSocket.java:453) at java.net.ServerSocket.accept(ServerSocket.java:421) at org.mortbay.util.ThreadedServer.acceptSocket(ThreadedServer.java:432) at org.mortbay.util.ThreadedServer$Acceptor.run(ThreadedServer.java:634) 2009-02-26 17:17:18,825 [Acceptor ServerSocket[addr= 0.0.0.0/0.0.0.0,port=0,localport=8080]] DEBUG (LogSupport.java [ignore]:36) - IGNORED java.net.SocketTimeoutException: Accept timed out at java.net.PlainSocketImpl.socketAccept(Native Method) at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384) at java.net.ServerSocket.implAccept(ServerSocket.java:453) at java.net.ServerSocket.accept(ServerSocket.java:421) at org.mortbay.util.ThreadedServer.acceptSocket(ThreadedServer.java:432) at org.mortbay.util.ThreadedServer$Acceptor.run(ThreadedServer.java:634) 2009-02-26 17:17:48,835 [Acceptor ServerSocket[addr= 0.0.0.0/0.0.0.0,port=0,localport=8080]] DEBUG (LogSupport.java [ignore]:36) - IGNORED java.net.SocketTimeoutException: Accept... [truncated message content] |
From: Wolfgang <wol...@ex...> - 2009-03-06 15:55:51
|
Hi, first, one important question: do you see any messages concerning temporary fragments in your logs? For example, messages like this one: 06 Mar 2009 16:46:07,786 [main] DEBUG (XQueryContext.java [storeTemporaryDoc]:2242) - Stored: 3: /db/system/temp/534d7dd16f9b97e6cb47054140e544a1.xml Temporary fragments are a known stability problem for the 1.2 series. The trunk/1.3 version fixes this. Also, most of your exceptions seem to be related to the full text index. A client of mine had similar errors and disabling the full text index fixed them for him. Do you really use the full text index in your application? If no, try to disable it. If yes, is the index limited to particular elements/attributes or do you rely on the default, which is to index everything? Wolfgang |
From: Calum B. <cal...@go...> - 2009-03-06 17:18:04
|
Hi Wolfgang, Thanks for your rapid response. Have done a check through the system logs and the following type of thing crops up quite regularly: 2009-03-06 14:34:18,178 [P1-9] DEBUG (XQueryContext.java [storeTemporaryDoc]:2242) - Stored: 22992: /db/system/temp/c125801600950ee8b2ca39c4d63ff7cd.xml I can certainly give things a try with the 1.3 release, but as the app is due to be released into production fairly shortly, am a little worried to be using a potentially unstable development release - altho' this may be better than what we currently have. Are things much different in 1.3 compared to 1.2? In terms of the full text index: yes, this is really required. We're storing lots of metadata as XML documents and this needs to be fairly accessible to general text searches. Thanks again, Calum. On Fri, Mar 6, 2009 at 3:55 PM, Wolfgang <wol...@ex...> wrote: > Hi, > > first, one important question: do you see any messages concerning temporary > fragments in your logs? For example, messages like this one: > > 06 Mar 2009 16:46:07,786 [main] DEBUG (XQueryContext.java > [storeTemporaryDoc]:2242) - Stored: 3: > /db/system/temp/534d7dd16f9b97e6cb47054140e544a1.xml > > Temporary fragments are a known stability problem for the 1.2 series. The > trunk/1.3 version fixes this. > > Also, most of your exceptions seem to be related to the full text index. A > client of mine had similar errors and disabling the full text index fixed > them for him. Do you really use the full text index in your application? If > no, try to disable it. If yes, is the index limited to particular > elements/attributes or do you rely on the default, which is to index > everything? > > Wolfgang > |
From: Wolfgang <wol...@ex...> - 2009-03-06 18:03:07
|
Hi Calum, > Thanks for your rapid response. Have done a check through the system > logs and the following type of thing crops up quite regularly: > > 2009-03-06 14:34:18,178 [P1-9] DEBUG (XQueryContext.java > [storeTemporaryDoc]:2242) - Stored: 22992: > /db/system/temp/c125801600950ee8b2ca39c4d63ff7cd.xml Ok, good. You get those temporary docs if you construct an XML fragment and query it afterwards. The simplest example is (<root><test/></root>)/test The problem is that the temporary docs need to be cleaned up sometimes and we know that the cleanup procedure isn't very reliable. In the past, it frequently seemed to be the cause of corruptions in the db. We have been struggling with those issues for quite some time. I thus decided to redesign the entire processing of constructed in-memory docs. You thus have 2 options: 1) check your queries and find out which expressions are generating the temporary fragments. It is often possible to rewrite them to avoid the temporary docs. 2) update eXist. The trunk version (future 1.3) is able to directly operate on in-memory fragments. This code has been tested for a long time and should be ok. > I can certainly give things a try with the 1.3 release, but as the app > is due to be released into production fairly shortly, am a little > worried to be using a potentially unstable development release - altho' > this may be better than what we currently have. Are things much > different in 1.3 compared to 1.2? I know that several people are running the SVN trunk version in production. This is not something I would recommend in general, but I think the current state of the code in trunk is fairly stable. Most of the major new features in 1.3 (e.g. the lucene index) were implemented as extension modules and should thus not affect the stability of the core. I believe that 1.3 could fix many issues and we should thus press forward towards a release. Sure, some features are not yet 100% complete, but those are mostly in extension modules which are independent of the core. > In terms of the full text index: yes, this is really required. We're > storing lots of metadata as XML documents and this needs to be fairly > accessible to general text searches. Ok, I would recommend to switch to the new Lucene-based full text index sooner or later. It really seems much more stable than eXist's built-in index and provides a better overall performance. Replacing all calls to eXist's &= and |= operators with an equivalent call to ft:query should be straightforward, though you may encounter some problems if you rely on the special behaviour of eXist's near or match-any/match-all. Whatever you decide to do, please keep me informed on how it goes. Wolfgang |
From: Manu ab <ma...@ab...> - 2009-03-07 14:51:07
|
Hi Wolfgang, May I suggest the creation of an exist-db.org section documenting the best practices/known issues when using eXist in production? Best regards, Manu 2009/3/6 Wolfgang <wol...@ex...> > Hi Calum, > > > Thanks for your rapid response. Have done a check through the system > > logs and the following type of thing crops up quite regularly: > > > > 2009-03-06 14:34:18,178 [P1-9] DEBUG (XQueryContext.java > > [storeTemporaryDoc]:2242) - Stored: 22992: > > /db/system/temp/c125801600950ee8b2ca39c4d63ff7cd.xml > > Ok, good. You get those temporary docs if you construct an XML fragment > and query it afterwards. The simplest example is > > (<root><test/></root>)/test > > The problem is that the temporary docs need to be cleaned up sometimes > and we know that the cleanup procedure isn't very reliable. In the past, > it frequently seemed to be the cause of corruptions in the db. We have > been struggling with those issues for quite some time. I thus decided to > redesign the entire processing of constructed in-memory docs. > > You thus have 2 options: 1) check your queries and find out which > expressions are generating the temporary fragments. It is often possible > to rewrite them to avoid the temporary docs. 2) update eXist. The trunk > version (future 1.3) is able to directly operate on in-memory fragments. > This code has been tested for a long time and should be ok. > > > I can certainly give things a try with the 1.3 release, but as the app > > is due to be released into production fairly shortly, am a little > > worried to be using a potentially unstable development release - altho' > > this may be better than what we currently have. Are things much > > different in 1.3 compared to 1.2? > > I know that several people are running the SVN trunk version in > production. This is not something I would recommend in general, but I > think the current state of the code in trunk is fairly stable. Most of > the major new features in 1.3 (e.g. the lucene index) were implemented > as extension modules and should thus not affect the stability of the core. > > I believe that 1.3 could fix many issues and we should thus press > forward towards a release. Sure, some features are not yet 100% > complete, but those are mostly in extension modules which are > independent of the core. > > > In terms of the full text index: yes, this is really required. We're > > storing lots of metadata as XML documents and this needs to be fairly > > accessible to general text searches. > > Ok, I would recommend to switch to the new Lucene-based full text index > sooner or later. It really seems much more stable than eXist's built-in > index and provides a better overall performance. Replacing all calls to > eXist's &= and |= operators with an equivalent call to ft:query should > be straightforward, though you may encounter some problems if you rely > on the special behaviour of eXist's near or match-any/match-all. > > Whatever you decide to do, please keep me informed on how it goes. > > Wolfgang > > > ------------------------------------------------------------------------------ > Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, > CA > -OSBC tackles the biggest issue in open source: Open Sourcing the > Enterprise > -Strategies to boost innovation and cut costs with open source > participation > -Receive a $600 discount off the registration fee with the source code: > SFAD > http://p.sf.net/sfu/XcvMzF8H > _______________________________________________ > Exist-open mailing list > Exi...@li... > https://lists.sourceforge.net/lists/listinfo/exist-open > |
From: Calum B. <cal...@go...> - 2009-03-09 17:07:45
|
Hi Wolfgang, Thanks for the further info. In terms of fragments, I do use these in some of the xqueries - I take it I should be using element declarations, instead - e.g. (<root><test/></root>)/test becomes element root { element test{} } ? If I upgrade to 1.3 is it worth making these changes or would both be treated equally? In terms of the text search, I'm not 100% sure of the syntax I need to use to do the replacement. I'm currently using the '&=' operator against the full text search which indexes everything in the DB; what is the new operator I need for the search and how do I set the lucene index to index everything? We're in the process of installing the 1.3 release; I'll let you know how it fares. Thanks, Calum. On Fri, Mar 6, 2009 at 6:02 PM, Wolfgang <wol...@ex...> wrote: > Hi Calum, > > Thanks for your rapid response. Have done a check through the system logs >> and the following type of thing crops up quite regularly: >> >> 2009-03-06 14:34:18,178 [P1-9] DEBUG (XQueryContext.java >> [storeTemporaryDoc]:2242) - Stored: 22992: >> /db/system/temp/c125801600950ee8b2ca39c4d63ff7cd.xml >> > > Ok, good. You get those temporary docs if you construct an XML fragment and > query it afterwards. The simplest example is > > (<root><test/></root>)/test > > The problem is that the temporary docs need to be cleaned up sometimes and > we know that the cleanup procedure isn't very reliable. In the past, it > frequently seemed to be the cause of corruptions in the db. We have been > struggling with those issues for quite some time. I thus decided to redesign > the entire processing of constructed in-memory docs. > > You thus have 2 options: 1) check your queries and find out which > expressions are generating the temporary fragments. It is often possible to > rewrite them to avoid the temporary docs. 2) update eXist. The trunk version > (future 1.3) is able to directly operate on in-memory fragments. This code > has been tested for a long time and should be ok. > > I can certainly give things a try with the 1.3 release, but as the app is >> due to be released into production fairly shortly, am a little worried to be >> using a potentially unstable development release - altho' this may be better >> than what we currently have. Are things much different in 1.3 compared to >> 1.2? >> > > I know that several people are running the SVN trunk version in production. > This is not something I would recommend in general, but I think the current > state of the code in trunk is fairly stable. Most of the major new features > in 1.3 (e.g. the lucene index) were implemented as extension modules and > should thus not affect the stability of the core. > > I believe that 1.3 could fix many issues and we should thus press forward > towards a release. Sure, some features are not yet 100% complete, but those > are mostly in extension modules which are independent of the core. > > In terms of the full text index: yes, this is really required. We're >> storing lots of metadata as XML documents and this needs to be fairly >> accessible to general text searches. >> > > Ok, I would recommend to switch to the new Lucene-based full text index > sooner or later. It really seems much more stable than eXist's built-in > index and provides a better overall performance. Replacing all calls to > eXist's &= and |= operators with an equivalent call to ft:query should be > straightforward, though you may encounter some problems if you rely on the > special behaviour of eXist's near or match-any/match-all. > > Whatever you decide to do, please keep me informed on how it goes. > > Wolfgang > |
From: Wolfgang <wol...@ex...> - 2009-03-10 08:29:58
|
> Thanks for the further info. In terms of fragments, I do use these in > some of the xqueries - I take it I should be using element declarations, > instead - e.g. > > (<root><test/></root>)/test > > becomes > > element root > { > element test{} > } No, the problem here is not in the construction of elements or XML fragments in general. You can create as many XML fragments as you want, using direct or dynamic constructors. This is perfectly ok. I was rather referring to queries on those constructed fragments: you construct an element, then extract some information out of it. Maybe it becomes clearer if I use two steps instead of one: let $r := <root><test/></root> return $r/test (: last step generates a temporary doc :) > If I upgrade to 1.3 is it worth making these changes or would both be > treated equally? The issue does no longer exist in 1.3. You don't need to do anything if you are upgrading to 1.3. > In terms of the text search, I'm not 100% sure of the syntax I need to > use to do the replacement. I'm currently using the '&=' operator > against the full text search which indexes everything in the DB; what is > the new operator I need for the search and how do I set the lucene index > to index everything? Sorry, I forgot to mention that the lucene index is not yet documented in SVN. However, the following blog post should help to get started: http://atomic.exist-db.org/blogs/eXist/LuceneIndexModule Wolfgang |
From: Wolfgang <wol...@ex...> - 2009-03-08 19:14:27
|
Hi Manu, I started a general "db tuning guide", which mentions some of the aspects we discussed. http://www.exist-db.org/tuning.html Wolfgang > Hi Wolfgang, > > May I suggest the creation of an exist-db.org <http://exist-db.org> > section documenting the best practices/known issues when using eXist in > production? > Best regards, > > Manu |
From: Serkan T. <ser...@ho...> - 2009-03-08 20:12:50
|
Hi all, I know that it was discussed before as I searched the history. By today, is there a solution for need of pooling for eXist db ? I am trying to use it embedded for my applicaton. Regards. -----Original Message----- From: Wolfgang [mailto:wol...@ex...] Sent: Sunday, March 08, 2009 9:14 PM To: Manu ab Cc: Exi...@li... Subject: Re: [Exist-open] General unreliability of eXist - caused by bad configuration? Hi Manu, I started a general "db tuning guide", which mentions some of the aspects we discussed. http://www.exist-db.org/tuning.html Wolfgang > Hi Wolfgang, > > May I suggest the creation of an exist-db.org <http://exist-db.org> > section documenting the best practices/known issues when using eXist in > production? > Best regards, > > Manu ---------------------------------------------------------------------------- -- Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise -Strategies to boost innovation and cut costs with open source participation -Receive a $600 discount off the registration fee with the source code: SFAD http://p.sf.net/sfu/XcvMzF8H _______________________________________________ Exist-open mailing list Exi...@li... https://lists.sourceforge.net/lists/listinfo/exist-open |
From: Serkan T. <ser...@ho...> - 2009-03-08 20:19:20
|
Sory for the subject :) Hi all, I know that it was discussed before as I searched the history. By today, is there a solution for need of pooling for eXist db ? I am trying to use it embedded for my applicaton. Regards. -----Original Message----- From: Wolfgang [mailto:wol...@ex...] Sent: Sunday, March 08, 2009 9:14 PM To: Manu ab Cc: Exi...@li... Subject: Re: [Exist-open] General unreliability of eXist - caused by bad configuration? Hi Manu, I started a general "db tuning guide", which mentions some of the aspects we discussed. http://www.exist-db.org/tuning.html Wolfgang > Hi Wolfgang, > > May I suggest the creation of an exist-db.org <http://exist-db.org> > section documenting the best practices/known issues when using eXist in > production? > Best regards, > > Manu ---------------------------------------------------------------------------- -- Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise -Strategies to boost innovation and cut costs with open source participation -Receive a $600 discount off the registration fee with the source code: SFAD http://p.sf.net/sfu/XcvMzF8H _______________________________________________ Exist-open mailing list Exi...@li... https://lists.sourceforge.net/lists/listinfo/exist-open ---------------------------------------------------------------------------- -- Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA -OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise -Strategies to boost innovation and cut costs with open source participation -Receive a $600 discount off the registration fee with the source code: SFAD http://p.sf.net/sfu/XcvMzF8H _______________________________________________ Exist-open mailing list Exi...@li... https://lists.sourceforge.net/lists/listinfo/exist-open |
From: Manu ab <ma...@ab...> - 2009-03-08 22:54:00
|
Hi Wolfgang, It's very interesting from a technical point of view. I missed it before. I was also thinking that it might be useful to start documenting some sucessful production use cases : hard/software environment, size of documents and db, query types, concurrency... also for what kind of projects eXist should (or should not) be considered. Best regards, Manu 2009/3/8 Wolfgang <wol...@ex...> > Hi Manu, > > I started a general "db tuning guide", which mentions some of the aspects > we discussed. > > http://www.exist-db.org/tuning.html > > Wolfgang > > > Hi Wolfgang, >> May I suggest the creation of an exist-db.org <http://exist-db.org> >> section documenting the best practices/known issues when using eXist in >> production? >> Best regards, >> Manu >> > |
From: Calum B. <cal...@go...> - 2009-03-11 16:15:54
|
Hi, We've now upgraded to using 1.3 and so far things are looking a bit better. One new problem seems to have emerged, however; the atom feed support appears to be a bit different? Having enabled the atom servlet and started the DB, the following happens: i) If I create a new atom feed, this is done successfully - with the .feed.atom doc appering in the relevant collection ii) If I then try to post an entry to this feed (i.e. by doing another POST to the same collection, but with an atom entry as content), this completes ok, but instead of the entry being appended to the .feed.atom doc, a new collection is created in the collection where this doc is. This is called, .feed.entry, and stores any atom entries as separate docs This is probably just a new way of organising things. My problem, however, is that I cannot retrieve the atom feed data when I do a GET to the relevant collection. Hopefully the following will be sufficient to diagnose the problem: Having set up a new feed at collection /db/atoms, with the content: <feed xmlns="http://www.w3.org/2005/Atom"> <id>urn:uuid:dd0c1c6e-789e-4bee-9a1a-b92ca1d7f869</id> <updated>2009-03-11T15:45:29+00:00</updated> <title>Atom Data</title> <link href="#" rel="edit" type="application/atom+xml"/> <link href="#" rel="self" type="application/atom+xml"/> </feed> I then try and access this feed - e.g. by visiting: http://xxx.xx.ac.uk:8080/exist/atom/content/db/atoms - the returns an HTTP 500 error with the content, An error occurred: An error occurred: null RequestURI=/exist/atom/content/db/atoms The following is the log, from start of DB to the attempt to access the feed. tail -f exist.log 2009-03-11 16:01:16,572 [main] DEBUG (RecoveryManager.java [recover]:97) - Database is in clean state. Last checkpoint: Mar 11, 2009 4:01:06 PM 2009-03-11 16:01:16,572 [main] DEBUG (Journal.java [switchFiles]:382) - Creating new journal: /usr/local/exist/exist-1.3/webapp/WEB-INF/data/0000000019.log 2009-03-11 16:01:16,603 [main] DEBUG (XMLSecurityManager.java [attach]:141) - loading acl 2009-03-11 16:01:16,666 [main] DEBUG (BrokerPool.java [initialize]:855) - database instance 'exist' initialized 2009-03-11 16:01:16,667 [main] DEBUG (ConsistencyCheckTask.java [configure]:62) - Using output directory /disks/bora1/backups/exist/consistency_check 2009-03-11 16:01:16,674 [main] DEBUG (BackupSystemTask.java [configure]:82) - Collection to backup: xmldb:exist:///db. User: admin 2009-03-11 16:01:16,675 [main] DEBUG (BackupSystemTask.java [configure]:98) - zip-files-max: 28 2009-03-11 16:01:17,309 [main] DEBUG (ConfigurationHelper.java [getExistHome]:35) - Got eXist home from broker: /usr/local/exist/exist-1.3 2009-03-11 16:01:17,313 [main] INFO (EXistServlet.java [init]:92) - Database already started. Skipping configuration ... 2009-03-11 16:01:17,316 [main] INFO (EXistServlet.java [init]:130) - Using default user guest for all unauthorized requests. 2009-03-11 16:01:30,805 [P1-9] DEBUG (XQueryContext.java [importModule]:2030) - Module http://exist-db.org/xquery/request already present. 2009-03-11 16:01:30,806 [P1-9] DEBUG (XQueryContext.java [importModule]:2030) - Module http://exist-db.org/xquery/xmldb already present. 2009-03-11 16:01:30,836 [P1-9] DEBUG (XQuery.java [compile]:161) - Query diagnostics: [skipped: more than 150 expressions] 2009-03-11 16:01:30,836 [P1-9] DEBUG (XQuery.java [compile]:165) - Compilation took 127 ms 2009-03-11 16:01:30,850 [P1-9] DEBUG (XQuery.java [execute]:227) - Execution took 14 ms 2009-03-11 16:01:30,851 [P1-9] DEBUG (HTTPUtils.java [addLastModifiedHeader]:61) - mostRecentDocumentTime: 0 2009-03-11 16:01:30,857 [P1-9] DEBUG (AtomServlet.java [init]:168) - Database already started. Skipping configuration ... 2009-03-11 16:01:30,858 [P1-9] INFO (AtomServlet.java [init]:214) - Using default user guest for all unauthorized requests. 2009-03-11 16:01:30,867 [P1-9] DEBUG (ConfigurationHelper.java [getExistHome]:35) - Got eXist home from broker: /usr/local/exist/exist-1.3 2009-03-11 16:01:30,872 [P1-9] DEBUG (AtomServlet.java [init]:332) - Nope. Attempting to get resource /org/exist/atom/modules/topic.xq from org.exist.atom.Atom 2009-03-11 16:01:30,873 [P1-9] DEBUG (AtomServlet.java [init]:337) - Loading from module topic method GET from resource jar:file:/usr/local/exist/exist-1.3/exist.jar!/org/exist/atom/modules/topic.xq via classpath(true) and ref (/org/exist/atom/modules/topic.xq) 2009-03-11 16:01:30,873 [P1-9] DEBUG (AtomServlet.java [init]:332) - Nope. Attempting to get resource /org/exist/atom/modules/introspect.xq from org.exist.atom.Atom 2009-03-11 16:01:30,873 [P1-9] DEBUG (AtomServlet.java [init]:337) - Loading from module introspect method GET from resource jar:file:/usr/local/exist/exist-1.3/exist.jar!/org/exist/atom/modules/introspect.xq via classpath(true) and ref (/org/exist/atom/modules/introspect.xq) 2009-03-11 16:01:30,873 [P1-9] DEBUG (AtomServlet.java [init]:337) - Loading from module example method GET from resource file:/usr/local/exist/exist-1.3/atom-example.xq via classpath(false) and ref (atom-example.xq) 2009-03-11 16:01:30,879 [P1-9] ERROR (AtomServlet.java [service]:464) - java.lang.NullPointerException at org.exist.source.URLSource.getKey(URLSource.java:78) at org.exist.source.AbstractSource.hashCode(AbstractSource.java:55) at org.exist.util.hashtable.Object2ObjectHashMap.hash(Object2ObjectHashMap.java:216) at org.exist.util.hashtable.Object2ObjectHashMap.getIndex(Object2ObjectHashMap.java:104) at org.exist.storage.XQueryPool.borrowObject(XQueryPool.java:150) at org.exist.storage.XQueryPool.borrowCompiledXQuery(XQueryPool.java:170) at org.exist.atom.modules.AtomFeeds.getFeed(AtomFeeds.java:234) at org.exist.atom.modules.AtomFeeds.handleGet(AtomFeeds.java:109) at org.exist.atom.modules.AtomFeeds.doGet(AtomFeeds.java:66) at org.exist.atom.modules.AtomModuleBase.process(AtomModuleBase.java:53) at org.exist.atom.http.AtomServlet.service(AtomServlet.java:445) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428) at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:830) at org.exist.http.urlrewrite.PassThrough.doRewrite(PassThrough.java:44) at org.exist.http.urlrewrite.XQueryURLRewrite.doFilter(XQueryURLRewrite.java:321) at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821) at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:471) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568) at org.mortbay.http.HttpContext.handle(HttpContext.java:1530) at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:633) at org.mortbay.http.HttpContext.handle(HttpContext.java:1482) at org.mortbay.http.HttpServer.service(HttpServer.java:909) at org.mortbay.http.HttpConnection.service(HttpConnection.java:820) at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986) at org.mortbay.http.HttpConnection.handle(HttpConnection.java:837) at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245) at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534) 2009-03-11 16:01:30,880 [P1-9] ERROR (XQueryURLRewrite.java [doFilter]:373) - An error occurred: null javax.servlet.ServletException: An error occurred: null at org.exist.atom.http.AtomServlet.service(AtomServlet.java:465) at javax.servlet.http.HttpServlet.service(HttpServlet.java:856) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:428) at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:830) at org.exist.http.urlrewrite.PassThrough.doRewrite(PassThrough.java:44) at org.exist.http.urlrewrite.XQueryURLRewrite.doFilter(XQueryURLRewrite.java:321) at org.mortbay.jetty.servlet.WebApplicationHandler$CachedChain.doFilter(WebApplicationHandler.java:821) at org.mortbay.jetty.servlet.WebApplicationHandler.dispatch(WebApplicationHandler.java:471) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:568) at org.mortbay.http.HttpContext.handle(HttpContext.java:1530) at org.mortbay.jetty.servlet.WebApplicationContext.handle(WebApplicationContext.java:633) at org.mortbay.http.HttpContext.handle(HttpContext.java:1482) at org.mortbay.http.HttpServer.service(HttpServer.java:909) at org.mortbay.http.HttpConnection.service(HttpConnection.java:820) at org.mortbay.http.HttpConnection.handleNext(HttpConnection.java:986) at org.mortbay.http.HttpConnection.handle(HttpConnection.java:837) at org.mortbay.http.SocketListener.handleConnection(SocketListener.java:245) at org.mortbay.util.ThreadedServer.handle(ThreadedServer.java:357) at org.mortbay.util.ThreadPool$PoolThread.run(ThreadPool.java:534) Another thing I've noticed is that the shutdown.sh script no longer works - instead it produces the message: Shutting down database instance at xmldb:exist://localhost:8080/exist/xmlrpc/db ERROR: shutdown failed CAUSE: Invalid password for user admin I can't see what is different between the config of 1.2.5 and 1.3 that is leading to this error? I can get around the problem by just running the java command this script produces, but with username and password added. Lastly, if I try and set the DB to run under init.d when I try and start the service I get the following message: 11/03/2009 16:10:09 10835 jsvc error: Invalid user name 'exist' specified I'm probably missing something obvious for the latter two errors - since, as mentioned before, linux admin is not my forte - and I didn't set the original config up. The feed problem is more serious, however, as this is a central part of the app. Hope you can help. Thanks,. Calum. On Tue, Mar 10, 2009 at 8:29 AM, Wolfgang <wol...@ex...> wrote: > Thanks for the further info. In terms of fragments, I do use these in >> some of the xqueries - I take it I should be using element declarations, >> instead - e.g. >> >> (<root><test/></root>)/test >> >> becomes >> >> element root >> { >> element test{} >> } >> > > No, the problem here is not in the construction of elements or XML > fragments in general. You can create as many XML fragments as you want, > using direct or dynamic constructors. This is perfectly ok. > > I was rather referring to queries on those constructed fragments: you > construct an element, then extract some information out of it. Maybe it > becomes clearer if I use two steps instead of one: > > let $r := <root><test/></root> > return $r/test (: last step generates a temporary doc :) > > If I upgrade to 1.3 is it worth making these changes or would both be >> treated equally? >> > > The issue does no longer exist in 1.3. You don't need to do anything if you > are upgrading to 1.3. > > In terms of the text search, I'm not 100% sure of the syntax I need to >> use to do the replacement. I'm currently using the '&=' operator >> against the full text search which indexes everything in the DB; what is >> the new operator I need for the search and how do I set the lucene index >> to index everything? >> > > Sorry, I forgot to mention that the lucene index is not yet documented in > SVN. However, the following blog post should help to get started: > > http://atomic.exist-db.org/blogs/eXist/LuceneIndexModule > > Wolfgang > |
From: Wolfgang <wol...@ex...> - 2009-03-11 17:37:06
|
Hi Calum, are you using rev 8722 or later? I tried your example and it works for me. However, the exception you posted does very much look like another variation of the module/query caching issues we are currently seeing in several places. I guess they all have the same cause. We just couldn't find it yet :-( I think several people are looking into this already. Concerning the feed organization: entries are now stored as separate documents, which gives us more control over read/write permissions and ownership. I use the following XQuery function to migrate my old repository to the new structure: declare function atom:update-feeds() { for $feed in /atom:feed let $feedCol := util:collection-name($feed) return ( let $entryCol := xdb:create-collection($feedCol, '.feed.entry') for $entry in $feed/atom:entry let $id := replace($entry/atom:id/string(), '.*:([^:]+)$', '$1') return xdb:store($entryCol, concat($id, '.entry.atom'), $entry, 'application/atom+xml'), update delete $feed/atom:entry ) }; Wolfgang |
From: Calum B. <cal...@go...> - 2009-03-17 14:51:19
|
Hi Wolfgang, I didn't do the install - the person who did tells me they just took the latest code from the repository; the admin pages are showing up version: 1.3.0dev-rev:0000-20090310. Are you able to give me any idea of the timescale that the feed acces problem will be fixed? It's not an essential part of the application, but it is fairly important - i.e. we can probably get by without it initially, but we'll need it fairly soon. Thanks, Calum. On Wed, Mar 11, 2009 at 5:08 PM, Wolfgang <wol...@ex...> wrote: > Hi Calum, > > are you using rev 8722 or later? I tried your example and it works for me. > However, the exception you posted does very much look like another variation > of the module/query caching issues we are currently seeing in several > places. I guess they all have the same cause. We just couldn't find it yet > :-( I think several people are looking into this already. > > Concerning the feed organization: entries are now stored as separate > documents, which gives us more control over read/write permissions and > ownership. I use the following XQuery function to migrate my old repository > to the new structure: > > declare function atom:update-feeds() { > for $feed in /atom:feed > let $feedCol := util:collection-name($feed) > return ( > let $entryCol := xdb:create-collection($feedCol, '.feed.entry') > for $entry in $feed/atom:entry > let $id := replace($entry/atom:id/string(), '.*:([^:]+)$', '$1') > return > xdb:store($entryCol, concat($id, '.entry.atom'), $entry, > 'application/atom+xml'), > update delete $feed/atom:entry > ) > }; > > Wolfgang > |
From: Wolfgang <wol...@ex...> - 2009-03-18 08:43:33
|
Hi Calum, > Are you able to give me any idea of the timescale that the feed acces > problem will be fixed? I already fixed some of those problems, maybe all. My application seems to be running stable again, though I could not test it for a longer time yet. I have one additional issue concerning the util:eval function and hope to fix that soon as well. So if you want, you could retry with the current trunk and tell me if it works better or not. Wolfgang |
From: Calum B. <cal...@go...> - 2009-03-23 11:56:09
|
Hi Wolfgang, We've upgraded our eXist to the latest version and I'm pleased to inform you that the problem I was having with the feeds is now fixed - thanks very much for your help! Cheers, Calum. On Wed, Mar 18, 2009 at 8:43 AM, Wolfgang <wol...@ex...> wrote: > Hi Calum, > > Are you able to give me any idea of the timescale that the feed acces >> problem will be fixed? >> > > I already fixed some of those problems, maybe all. My application seems to > be running stable again, though I could not test it for a longer time yet. I > have one additional issue concerning the util:eval function and hope to fix > that soon as well. > > So if you want, you could retry with the current trunk and tell me if it > works better or not. > > Wolfgang > |
From: Serkan T. <ser...@ho...> - 2010-05-04 11:11:07
|
Updating document concurrently corrupts xml document. How should i lock the document for update to manage multiple update ruqests ? |
From: Adam R. <ad...@ex...> - 2010-05-05 13:37:03
|
On 4 May 2010 12:11, Serkan Taş <ser...@ho...> wrote: > Updating document concurrently corrupts xml document. How should i lock the > document for update to manage multiple update ruqests ? Can you give us an example of your update code, if you are seeing corruption then I assume you are using some sort of low level API and not the higher level XQuery Update or XQuery Update extensions? If you are using the low-level API you will indeed need to write lock the document manually when you wish to update. Look at the class ReentrantReadWriteLock in eXist. > > ------------------------------------------------------------------------------ > _______________________________________________ > Exist-open mailing list > Exi...@li... > https://lists.sourceforge.net/lists/listinfo/exist-open > -- Adam Retter eXist Developer { United Kingdom } ad...@ex... irc://irc.freenode.net/existdb |