【发布时间】:2016-05-23 15:37:28
【问题描述】:
我在插入和更新文档时创建了一个 CPF。这些 CPF 管道创建多个 xdmp:spawn-tasks 来执行各种任务。我对这种方法有几个疑问。
- 一些衍生的任务将修改原始文档。这会触发 CPF 的更新工作流程吗?我可以在文档上使用一个标志,表明它是衍生任务的更新。但是有没有更优雅的方法来做到这一点?
- 我需要担心死锁吗?我的意思是,如果从同一个 CPF 产生的两个任务尝试同时更新同一个文档,我该如何避免这种情况?
基本上,我正在尝试对插入的文档使用信封模式,并将所有工件文档包装到一个文档中。我使用 CPF 生成此工件文档的原因是,我可以使用 MLCP 或任何其他方式将文档转储到数据库中,并让 CPF 担心处理,而不是使用自定义 REST 端点并通过这个来获取所有文档自定义 REST 端点。
【问题讨论】:
-
你为什么一开始就明确使用 spawn?为什么不将工作作为单独的管道步骤执行,让 CPF 负责编排呢?从您的解释中不清楚您要完成什么。
-
我最初是在自己的 CPF 任务中做的,但是当我这样做时,我有时会出现内存不足的异常,因为我所做的事情之一是使用“xdmp: 从文档中提取文本:文档过滤器“......但是使用任务服务器我没有得到任何东西,因此产生了任务......而且我不认为原始文档的大小是问题......我最初假设内存没有被释放或其他东西...但是任务一切正常
-
xdmp:document-filter 允许流式传输结果,因此不一定需要消耗大量内存。不过,过滤可能是一个繁重的过程。可能值得在 SO 上打开另一个问题以分享更多详细信息并询问您为什么会出现内存异常..
标签: marklogic marklogic-8