質問
「ファイル/ディレクトリー削除」コンポーネントで [ファイル/ディレクトリーが存在しない場合はエラー] のチェックを外しているにもかかわらず、`java.io.FileNotFoundException` が発生してジョブが異常終了しました。原因と対処策を教えてください。
回答
複数の実行プロセスが同一のディレクトリーに対して同時に削除操作を行ったことによるアクセス重複が原因です。
具体的な発生経緯は以下のとおりです。
1. 2つの実行プロセス(A・B)が同時にディレクトリー削除操作を開始する
2. 開始時点では両プロセスともディレクトリーの存在を確認する
3. プロセスAが先に削除操作を完了する
4. プロセスBも削除を試みるが、Aにより削除済みのため `FileNotFoundException` が発生する
対処策としては、以下のいずれかをご検討ください。
- 運用上、同一ディレクトリーへの同時アクセスを避ける
- 削除対象のファイルやディレクトリーが重複しないよう、一意な命名規則で運用する
補足
同一のファイルに対する書き込みや操作をマルチスレッドで行った場合の動作は保証されていません。
詳細は以下のマニュアルをご参照ください。
コメント
0件のコメント
記事コメントは受け付けていません。