3

为了让您快速了解我们的系统——我们的生产 CDA 系统是一个由两个网络服务器 web1 和 web2 组成的网络农场。CMS数据库是由两个数据库节点db1和db2组成的sql集群。发布目标“Live”由两个目标组成——web1 部署程序和 web2 部署程序,它们将内容推送到 web1 和 web2 站点存储库。

最近,我们发现在 Production SDL Tridion 2011 中取消发布内容存在问题。从 SDL Tridion 取消发布多个结构组时,System 没有从其中一个 Web 服务器取消发布内容。但是,它从其他 Web 服务器中删除了内容。反之亦然 - 例如,如果取消发布操作从 web1 中删除内容,则内容在 web2 中保持不变。如果它从 web2 中删除,内容仍保留在 web1 中。我们在此取消发布操作的发布队列中看到的消息是“成功”</p>

你以前遇到过这类问题吗?如果您使用类似的策略将内容推送到 webfarm,您是否可以告诉我?

我们在部署程序日志中没有看到任何特定的错误消息,但是我们确实看到了一些警告,如下所示。

2012-08-08 06:48:59,659 WARN PreCommitPhase - 准备失败:tcm:0-5026-66560 错误:org.hibernate.StaleStateException:批量更新从更新 [0] 返回了意外的行数;实际行数:0;预期:1 2012-08-08 06:48:59,659 WARN PreCommitPhase - 准备失败:tcm:0-5026-66560 错误:org.hibernate.StaleStateException:批量更新从更新 [0] 返回了意外的行数;实际行数:0;预期:1

感谢您在这方面的所有帮助!

谢谢,KK

4

2 回答 2

11

不支持让两个部署者指向同一个代理数据库。如果您考虑一下,很清楚您的情况发生了什么:

  • 您取消发布结构组(或页面,或其他)。创建发布包并将其传输到两个部署者。
  • 部署者 A 拿起它并开始删除文件和数据库记录
  • 在此过程中,部署者 B 拿起同一个包,并开始删除文件(没问题,因为有 2 个独立的文件系统)和数据库记录。但是这些记录已经被部署者 A 删除了。
  • 您会收到与您提交的错误类似的错误。

这个问题至少有三种解决方案:

  1. 开始为您的两个 Web 服务器使用共享文件系统。然后,您可以关闭您的部署器之一。
  2. 更改两个部署器之一的 cd_storage_conf.xml,并将元数据指向某个虚拟目标(例如,文件系统上不会使用的文件夹)。
  3. 为您的两个 Web 服务器设置单独的代理数据库。

每个解决方案都有优点和缺点。您需要自己决定。

于 2012-08-08T21:32:00.397 回答
0

我在早期的一个项目中也遇到了同样的问题。Quirjin 提供了一个很好的解决方案。

另一种选择是将发布设置为仅针对单个文件系统“A”,并使用诸如 robocopy 之类的工具将“A”的内容复制到其他文件系统“B”。

于 2012-08-27T09:45:10.747 回答