从 SDL Tridion 5.2 迁移到 2011 SP1 后,我们在尝试发布或取消发布某些页面和结构组时遇到问题。
发布事务在提交部署阶段失败,并返回以下错误消息:
阶段:部署准备提交阶段失败,无法准备事务:tcm:0-682623-66560,null,null
cd_deployer.exe 服务也几乎在同一时间以几乎 100% 的 CPU 使用率运行。
我们还在 cd_deployer.log 和 cd_core.log 文件中获得以下信息:
2012-05-02 07:32:09,346 ERROR DeployPipelineExecutor - Unable to start processing deployment package with transactionId: tcm:0-682520-66560
2012-05-02 07:36:36,071 ERROR DeployPipelineExecutor - Final attempt in Phase: Deployment Prepare Commit Phase failed for transaction: tcm:0-682526-66560
2012-05-02 07:36:36,071 ERROR DeployPipelineExecutor - Original stacktrace for transaction: tcm:0-682526-66560
com.tridion.deployer.ProcessingException: Unable to prepare transaction: tcm:0-682526-66560, null, null
at com.tridion.deployer.phases.PreCommitPhase.handleFailure(PreCommitPhase.java:120) ~[cd_deployer.jar:na]
at com.tridion.deployer.phases.PreCommitPhase.execute(PreCommitPhase.java:101) ~[cd_deployer.jar:na]
at com.tridion.deployer.phases.DeployPipelineExecutor.runMainExecutePhase(DeployPipelineExecutor.java:186) [cd_deployer.jar:na]
at com.tridion.deployer.phases.DeployPipelineExecutor.doExecute(DeployPipelineExecutor.java:97) [cd_deployer.jar:na]
at com.tridion.deployer.phases.DeployPipelineExecutor.execute(DeployPipelineExecutor.java:61) [cd_deployer.jar:na]
at com.tridion.deployer.TransactionManager.handleDeployPackage(TransactionManager.java:80) [cd_deployer.jar:na]
at com.tridion.deployer.queue.QueueLocationHandler$1.run(QueueLocationHandler.java:176) [cd_deployer.jar:na]
at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [na:1.6.0_30]
at java.util.concurrent.FutureTask$Sync.innerRun(Unknown Source) [na:1.6.0_30]
at java.util.concurrent.FutureTask.run(Unknown Source) [na:1.6.0_30]
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown Source) [na:1.6.0_30]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) [na:1.6.0_30]
at java.lang.Thread.run(Unknown Source) [na:1.6.0_30]
从页面中删除组件演示文稿并重新发布工作正常。使用不同的组件模板不起作用,因此问题似乎出在某处的组件上。
页面、二进制文件和 DCP 都被发布到文件系统。我确实想知道问题是否与发布大型二进制文件有关,但是从组件中删除它们并没有任何区别。
有谁知道如何解决这个问题?
亲切的问候
编辑:我现在已经将其追踪到一些我无法发布或取消发布的组件。尝试发布或取消发布组件时,事务会在“提交部署”阶段停留大约 5 分钟,其中 cd_deployer 服务会最大限度地使用 CPU,然后最终失败并显示相同的错误消息。
如果我通过复制和粘贴创建一个相同的组件副本,这可以正常工作,并且可以在几秒钟内直接完成发布,而不会影响服务器的 CPU。很奇怪!
编辑 2:这是我们当前在每个出版物的 cd_storage_conf.xml 文件中拥有的示例:
<Storage Type="filesystem" Class="com.tridion.storage.filesystem.FSDAOFactory" Id="21_content" defaultFilesystem="false">
<Root Path="D:/WebSites/live/Website/wwwroot/" />
</Storage>
<Storage Type="filesystem" Class="com.tridion.storage.filesystem.FSDAOFactory" Id="21_data" defaultFilesystem="true" defaultStorage="true">
<Root Path="D:/WebSites/live/Website/Data" />
</Storage>
<Publication Id="21" defaultStorageId="21_data" cached="false">
<Item typeMapping="Page" cached="false" storageId="21_content"/>
<Item typeMapping="Binary" storageId="21_content" cached="false"/>
<Item typeMapping="ComponentPresentation" storageId="21_data"/>
</Publication>
元数据没有特定的类型映射。