0

Solarisサーバーの1つにNFS共有をマウントしています。パス/appdata/ anpは、サーバーAからサーバーBにマウントされます。共有の下:

/appdata/anp

私はという名前のフォルダを持っています

/appdata/anp/factory

上記のディレクトリに、インポート/更新する必要のあるデータを含むファイルをデータベースに配置します。データベースにデータをインポートした後、インポートしたデータの操作結果に基づいて、ファイルを成功/失敗ディレクトリに移動します。

/appdata/anp/factory/success

/appdata/anp/factory/failure

上記のディレクトリのいずれかにファイルを移動し、次を使用してファイルの最終変更時刻を現在のシステム時刻に更新します。

file.setLastModified

これはブール値を返します。問題は、この更新操作を実行しているときはいつでも、そのファイルのタイムスタンプを現在のシステム時刻に更新できないことです。

誰かがシナリオが何であるか知っていますか

file.setLastModified

失敗を返します。NFSのアクセス許可も確認しましたが、すべて問題ないようです。setLastModifiedが失敗を返す可能性があるケースを知る方法はありますか?

私が本当にこれに私の髪を引っ張っているのを手伝ってください!:(

4

1 に答える 1

1

Unixファイルシステムでも同様の問題が発生しました。私の場合、UNIXが最後に変更されたミリ秒を切り捨て、最後に変更されたものを次のように設定していたためです。

System.currentTimeMillis()-System.currentTimeMillis()%1000

これは、ファイルを操作し、file.lastModified()を介して更新をチェックするテストケースに影響を及ぼしていました。テストケースでファイルを更新する前に、Thread.sleep(1100)を追加しただけで、すべてが解決されました。

それが次の人を助けることを願っています。

于 2011-06-24T09:11:57.837 に答える