我在插入和更新文档时创建了一个CPF。这些CPF管道创建多个xdmp:spawn-tasks以执行各种任务。我对这种方法有几个问题。
基本上我正在尝试为插入的文档使用信封模式,并将所有工件文档包装到一个文档中。我使用CPF生成此工件文档的原因是我可以使用MLCP或任何其他方式将文档转储到数据库中,让CPF担心处理,而不是使用自定义REST端点并通过此方式获取所有文档自定义REST端点。
答案 0 :(得分:0)
我建议不要生成任务来对手头的文档应用更新。此类更新将干扰CPF状态的自然流动。 CPF本身旨在通过多个状态获取文档,并使每个过渡都有助于整体转换。
因此,让文档经历多个CPF状态,并在一个或多个此类状态转换(管道)中进行更新。每个状态转换都是一个单独的事务,因此不需要生成任务。
我不认为您需要担心死锁,但我可以轻易地想象并行执行更新会导致部分更新丢失,因为它们可能会被相互覆盖。这取决于您使用的确切代码。 MarkLogic的事务机制通常可以防范这种情况,但编写绕过该机制的代码很容易。
HTH!