2016-12-02 7 views
2

Я работаю с пользователем моего программного обеспечения, у которого возникла проблема, когда мое программное обеспечение добавляет часы для папки. Вызов register, похоже, блокируется навсегда. Вот нить свалка из машины пользователя:Должен ли WatchService блокировать регистр?

platformExecutor [01-12_10:14]" Id=56 WAITING on [email protected] 
    at java.lang.Object.wait(Native Method) 
    - waiting on [email protected] 
    at java.lang.Object.wait(Unknown Source) 
    at sun.nio.fs.AbstractPoller$Request.awaitResult(Unknown Source) 
    at sun.nio.fs.AbstractPoller.invoke(Unknown Source) 
    at sun.nio.fs.AbstractPoller.register(Unknown Source) 
    at sun.nio.fs.WindowsWatchService.register(Unknown Source) 
    at sun.nio.fs.WindowsPath.register(Unknown Source) 
    at sun.nio.fs.AbstractPath.register(Unknown Source) 
    at com.elsten.bliss.platform.storage.file.observer.filewatcher.FileWatcherFileSystemObserver$WatchingFileVisitor$$anonfun$preVisitDirectory$2.apply(FileWatcherFileSystemObserver.scala:87) 

Мы оставили его несколько часов, и призыв к register не вернулся.

Доступ к просматриваемой папке осуществляется через сеть в сетевом хранилище с использованием Wi-Fi. Я понимаю, что это менее надежно, но у меня много пользователей с аналогичной конфигурацией, и это первый раз, когда это было сообщено.

В Javadocs для register нет упоминания о возможности блокировки. Должен ли я фактически окружить этот звонок тайм-аутом?

+2

Я вижу это точно такая же проблема. В моем случае я смотрю каталог в локальной файловой системе (не подключен к сети), и мои модульные тесты периодически зависают с той же самой трассировкой стека, которую вы показываете. Я оставил его там два дня, и он все еще висел. Я бы назвал это ошибкой. – JimN

+2

Я открыл билет с поддержкой Oracle, включая воспроизводимый тестовый пример. – JimN

+1

Интересно, пожалуйста, разместите URL-адрес, если/когда вы получите правильный идентификатор ошибки. Это с Oracle или OpenJDK? –

ответ

1

Спасибо за всех, кто прокомментировал.

It looks like this is a bug, и фиксируется в 8u152 (только что выпустили) и Java 9.