setLastModified не работает на общей папке NFS - PullRequest
0 голосов
/ 02 февраля 2011

У меня есть общий ресурс NFS, смонтированный на одном из моих серверов Solaris. Путь / appdata / anp монтируется с сервера A на сервер B. Под общим ресурсом:

/appdata/anp

У меня есть папка с именем

/appdata/anp/factory

В указанном выше каталоге я помещаю файлы, в которых есть данные, которые необходимо импортировать / обновить в базе данных. После импорта данных в базу данных я перемещаю файл в каталог успеха / неудачи на основе результата операции импортированных данных.

/appdata/anp/factory/success

/appdata/anp/factory/failure

Я перемещаю файл в любой из вышеуказанных каталогов и обновляю время последнего изменения файла до текущего системного времени, используя:

file.setLastModified

, который возвращает логическое значение. Проблема заключается в том, что всякий раз, когда я выполняю эту операцию обновления, она не обновляет отметку времени этого файла до текущего системного времени.

Кто-нибудь знает, каковы сценарии, в которых

file.setLastModified

возвращает ошибку. Я даже проверил разрешения NFS, и мне кажется, что все в порядке. Можно ли как-нибудь узнать случаи, когда setLastModified может вернуть ошибку?

Пожалуйста, помогите мне, я действительно тяну волосы за это !! (

1 Ответ

1 голос
/ 24 июня 2011

У меня была похожая проблема в файловой системе Unix.В моем случае это произошло потому, что unix урезал последние измененные миллисекунды и установил для последнего измененного значения:

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

Это влияло на тестслучай, который манипулировал файлом, а затем проверял наличие обновлений через file.lastModified ().Я просто добавил Thread.sleep (1100) перед обновлением файла в моем тестовом примере, и все было решено.

Надеюсь, что это поможет следующему человеку.

...