<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/3.18.3">
</HEAD>
<BODY>
Have you considered inserting process-me.xml in a separate eval with an option of &lt;isolation&gt;different-transaction&lt;/isolation&gt; to ensure it is available before when inserting cpf-init.xml?<BR>
<BR>
Wayne.<BR>
<BR>
<BR>
On Mon, 2008-10-27 at 11:29 -0500, Strawn, Shane wrote:<BR>
<BLOCKQUOTE TYPE=CITE>
    <FONT SIZE="2">Hello,</FONT><BR>
    <BR>
    <FONT SIZE="2">I have a somewhat convoluted issue to describe so I'll try to make sense:</FONT><BR>
    <BR>
    <FONT SIZE="2">I have a Content Processing Framework process which watches a directory for a file to be dropped on it.&nbsp; This is a different database than my main content database.</FONT><BR>
    <BR>
    <FONT SIZE="2">I have an xquery module which at the same time inserts a document into the content database, and the above file into the CPF database in an eval, like so:</FONT><BR>
    <BR>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE="2">xdmp:document-insert( &quot;process-me.xml&quot;, &lt;data&gt;&#8230;&lt;/data&gt;)</FONT> <BR>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE="2">&#8230;</FONT> <BR>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE="2">xdmp:eval('xdmp:document-insert( &quot;cpf-init.xml&quot;, </FONT><BR>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE="2">&lt;target-uri&gt;process-me.xml&lt;/target-uri&gt;)', $options (: setting db to content :) )</FONT><BR>
    <BR>
    <FONT SIZE="2">Now, since these are in different dbs, it sometimes occurs where the CPF process will look for &quot;process-me.xml&quot; on the content db but not find it, because it is not finished document-inserting.&nbsp; I thought it should complete the doc-insert before moving on to the eval in the module, but it apparently doesn't due to the separate-transaction nature of the situation?</FONT><BR>
    <BR>
    <FONT SIZE="2">I would like to find a way to loop or wait until my doc is fully inserted within xquery, rather than the more complex tasks of modifying the CPF pipeline or changing the interface to add another click-through after the doc is inserted, if possible.&nbsp; But I'm not sure how to accomplish this or if it's realistic.</FONT><BR>
    <BR>
    <FONT SIZE="2">I've tried some (probably) stupid things such as:</FONT><BR>
    <BR>
    <FONT SIZE="2">Killing a set amount of time with a statement like </FONT><BR>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE="2">let $timekill := for $a in (1 to 10000000) return ()</FONT> <BR>
    <FONT SIZE="2">&#8230;but this seems unreliable, and a waste of time if it doesn't need it;</FONT><BR>
    <BR>
    <FONT SIZE="2">Or a recursive function like</FONT> <BR>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE="2">define function check-doc-exists($uri as xs:string) { </FONT><BR>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <FONT SIZE="2">if ( fn:exists(fn:doc($uri)) ) then fn:true() else check-doc-exists($uri) }</FONT> <BR>
    <FONT SIZE="2">&#8230;but this gives me Stack Overflow within seconds, or if I put my timekiller in it, it never finds the doc even if it inserts while it is running.</FONT><BR>
    <BR>
    <FONT SIZE="2">Is there something I can do here to create a loop which runs until it can find the document?&nbsp; Am I misunderstanding what is happening with the transaction?&nbsp; Just how wrong are my above ideas?</FONT><BR>
    <BR>
    <FONT SIZE="2">Thanks in advance for any guidance.</FONT><BR>
    <BR>
    <FONT SIZE="2">Shane Strawn</FONT> <BR>
    <FONT SIZE="2">Wolters Kluwer Health</FONT><BR>
    <BR>
<PRE>
_______________________________________________
General mailing list
<A HREF="mailto:General@developer.marklogic.com">General@developer.marklogic.com</A>
<A HREF="http://xqzone.com/mailman/listinfo/general">http://xqzone.com/mailman/listinfo/general</A>
</PRE>
</BLOCKQUOTE>
</BODY>
</HTML>