エラーメッセージ
[00220] コマンド実行中にエラーが発生しました.エラーコード(EEXIST),詳細情報(MoveFile error , Apply File[ファイルパス] , 5). |
対象バージョンレベル
Systemwalker Centric Manager:全V/L
Systemwalker Software Delivery:全V/L
確認ポイント
連続する世代で、前バッチまたは後バッチに、同じファイル名のファイルを指定していませんか。
適用に失敗した世代の前世代の後バッチ内で、資源ファイルの削除を実施していませんか。
原因
Windowsファイルシステム(OS)の動作仕様が原因です。
ファイル削除時、ファイルシステムは削除を完了してから復帰するのでなく、ファイルに deletion のマークをつけ、[削除保留]状態(アクセス不可状態)にして復帰します。その後、すべてのファイルハンドルがクローズされた時点で[削除保留]状態が解除され、ファイルの削除が完了します。[削除保留]状態のタイミングでは、ファイルは存在していますがアクセスできない状態となっています。
資源配付の前バッチおよび後バッチは、適用先ディレクトリに展開して実行後、削除しています。そのため、連続した世代で同じファイル名の前バッチまたは後バッチが実行された場合、前世代で削除したはずの前バッチまたは後バッチのファイルが[削除保留]状態で残っていることがあり、前・後バッチが展開(置換)できないため、本現象が発生します。
また、前世代の後バッチ内で、適用先ディレクトリの資源ファイルの削除を行っている場合、同様に資源ファイルが[削除保留]状態で残っていることがあるため、適用(置換)がアクセス拒否により失敗するため、本現象となります。
対処方法
前バッチまたは後バッチのファイル名に世代識別名を含めるなど、世代毎に異なるファイル名で指定してください。
資源配付は既存ファイルついて置き換えを行います。後バッチで適用先ディレクトリの資源ファイル削除は行わないようにしてください。どうしても後バッチで資源ファイルを削除する必要がある場合は、後バッチで資源ファイル削除後に、ファイル削除が完了するよう、待ち時間を設定してください。
ファイル削除が完了するのに必要な待ち時間については、ファイルサイズ、ファイルシステムの状態、ファイルにアクセスする他のアプリケーション(アンチウィルスソフト等)の有無・状態等に依存すると考えられ、固定ではありません。余裕を持った待ち時間の設定を行うようにしてください。