3

システムの概要を簡単に説明すると、本番 CDA システムは、web1 と web2 の 2 つの Web サーバーで構成される Web ファームです。CMS データベースは、db1 と db2 の 2 つのデータベース ノードで構成される SQL クラスターです。パブリケーション ターゲット「Live」は、コンテンツを web1 および web2 サイト リポジトリにプッシュする web1 deployer と web2 deployer の 2 つの宛先で構成されます。

最近、Production SDL Tridion 2011 のコンテンツの非公開に関する問題が見つかりました。SDL Tridion から複数の構造グループを非公開にしている間、システムは Web サーバーの 1 つからコンテンツを非公開にしませんでした。ただし、他の 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

2 つのデプロイヤーが同じブローカー データベースを指すことはサポートされていません。あなたがそれについて考えるならば、あなたの場合に何が起こっているかは明らかです:

  • 構造グループ (またはページなど) を非公開にします。発行パッケージが作成され、両方のデプロイヤーに転送されます。
  • デプロイ担当者 A がそれを拾い上げ、ファイルとデータベース レコードの削除を開始します。
  • これが行われている間、デプロイヤ B は同じパッケージを取得し、ファイル (2 つの別個のファイル システムがあるため問題ありません) とデータベース レコードの削除を開始します。しかし、これらのレコードはデプロイ担当者 A によって既に削除されています。
  • 送信したようなエラーが発生します。

この問題には少なくとも 3 つの解決策があります。

  1. 2 つの Web サーバーで共有ファイル システムの使用を開始します。その後、デプロイヤの 1 つをオフにすることができます。
  2. 2 つのデプロイヤのうちの 1 つの cd_storage_conf.xml を変更し、メタデータをダミーのターゲット (使用しないファイル システム上のフォルダなど) にポイントします。
  3. 2 つの Web サーバーに別々のブローカー データベースをセットアップします。

各ソリューションには長所と短所があります。これは自分で決める必要があります。

于 2012-08-08T21:32:00.397 に答える
0

私も以前のプロジェクトの 1 つで同じ問題に遭遇しました。Quirjin はすばらしい解決策を提供してくれました。

もう 1 つのオプションは、1 つのファイル システム「A」のみに発行するように設定し、「A」のコンテンツを他のファイル システム「B」にコピーする robocopy などのツールを使用することです。

于 2012-08-27T09:45:10.747 に答える