SDL Tridion 2011 Unpublishing Issue in webfarm

385 Views Asked by At

To give you a quick overview about our systems-Our production CDA system is a web farm consisting two webservers, web1 and web2. CMS database is sql cluster consisting two database nodes, db1 and db2. Publication target “Live” consists of two destinations – web1 deployer and web2 deployer which pushes the contents to web1 and web2 site repositories.

Recently we found an issue with unpublishing the contents in Production SDL Tridion 2011. While unpublishing multiple structure groups from SDL Tridion , System didn’t unpublish the contents from one of the web server . However it removed the content from other web server. This happens vice versa- for eg, if unpublish action removes contents from web1,contents remains intact in web2. If it gets removed from web2, content remains in web1 as such. Message which we see in publishing queue for this unpublish action is “Success”

Have you encountered these kind of issues before? And would it be possible for you to let me know if you have used similar strategy for pushing the contents to webfarm?

We don’t see any particular error message in deployer logs, however we do see some warnings as below.

2012-08-08 06:48:59,659 WARN PreCommitPhase - Failed to Prepare: tcm:0-5026-66560 error: org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1 2012-08-08 06:48:59,659 WARN PreCommitPhase - Failed to Prepare: tcm:0-5026-66560 error: org.hibernate.StaleStateException: Batch update returned unexpected row count from update [0]; actual row count: 0; expected: 1

Appreciate all your help in this!

Thanks, KK

2

There are 2 best solutions below

4
On

It is not supported to have two deployers pointing to the same broker database. If you think about it, it is clear what is happening in your case:

  • You unpublish a structure group (or page, or whatever). A publish package is created and transported to both deployers.
  • Deployer A picks it up and starts to remove files and database records
  • While this is going on, deployer B picks up the same package, and starts removing files (no problem since there are 2 separate file systems) and database records. But these records have already been removed by deployer A.
  • You get errors like the one you have submitted.

There are at least three solutions to this problem:

  1. Start using a shared file system for your two web servers. You can then switch off one of your deployers.
  2. Change the cd_storage_conf.xml for one of the two deployers, and point the metadata to some dummy target (e.g. a folder on your file system which will not be used).
  3. Set up separate broker databases for your two web servers.

Each solution has pros and cons. You will need to decide on this yourself.

0
On

I too encountered the same problem in one of my earlier projects. Quirjin has provided a nice solution.

Another option is too set publishing only to single file system 'A' and use a tool like robocopy which copies the content of 'A' to other file system 'B'.