From: Chris T. <ct...@mo...> - 2006-11-30 10:59:40
|
Hello, I'm trying to track down a very infrequent problem that appears related to the way that documents are persisted in the DB via xmldb.api, collection.storeResource(doc). We're using eXist 1.1rc2 under jakarata-tomcat-5.0.28, jdk 1.4.2_09 on Linux .... The scenario is that we publish a document to the DB using: some_collection.storeResource(doc); Then within a few instructions we issue the following query: declare namespace x="http://www.tbrc.org/models/work#";declare function x:variants($doc as element()*) as xs:string* { for $name in $doc/x:title return concat(data($name), " | ") }; <z:collectionlist created="{current-dateTime()}" type="work" xmlns:z="http://www.tbrc.org/ models/collectionlist#"> { for $i in collection("/db/tbrc/tbrc-works/")/x:work let $b := concat(data ($i/@RID), ".xml"), $modDate := xmldb:last-modified("/db/tbrc/tbrc-works/", $b) where xs:dateTime("2006-11-30T05:18:57.336-05:00") < $modDate return <z:node RID="{$i/@RID}"> { x:variants($i) } </z:node> } </z:collectionlist> The dateTime that we use is as reported by eXist the last time the query was run - which may have been upon the occasion of a previous publish or a user initiated request to refresh cached data in the editing application to capture changes by other users. Almost all of the time the result returns the single record corresponding to the document just published, as in the following: <z:collectionlist xmlns:z="http://www.tbrc.org/models/collectionlist#" created="2006-11-30T05:19:17.632-05:00" type="work"> <z:node RID="W01CT1712">04 tulip 1712 tbr | </z:node> </z:collectionlist> The problem is that this doesn't happen ALL the time. On a rare occasion no record is returned. It is so infrequent that we haven't yet collected more information than what I've related here. When the failure occurs then the record will never show up in the user's cache unless the cache is flushed and completely reloaded. This can take awhile with some of the collections that are in the range of 50K documents. Since it almost always works, I assume that the basic logic of what we're doing isn't totally off-base. What I'm hoping is that someone who knows how eXist actually works can suggest whether there is a possible explanation based on the dynamics of eXist. It is perhaps worth mentioning that tests of repeated publishing have been conducted with the application on the same machine as the server and also with the application contacting the server over a 56Kbps dialup. The same lack of repeatable failure occurs in both cases. Any thoughts will be greatly appreciated, Chris |