2016-12-02 1 views
2

Ich arbeite mit einem Benutzer meiner Software, bei dem ein Problem auftritt, wenn meine Software eine Uhr für einen Ordner hinzufügt. Der Aufruf an register scheint für immer zu blockieren. Hier ist ein Thread-Dump aus der Maschine des Benutzers:Soll WatchService bei der Registrierung blockiert werden?

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) 

Wir ließen es mehrere Stunden, und der Anruf an register kam nicht zurück.

Auf den überwachten Ordner wird über ein Netzwerk im Netzwerkspeicher mit WLAN zugegriffen. Ich weiß, das ist weniger zuverlässig, aber ich habe viele Benutzer mit einer ähnlichen Konfiguration und dies ist das erste Mal, dass dies gemeldet wurde.

In den Javadocs für register wird das Potenzial für die Blockierung nicht erwähnt. Sollte ich diesen Anruf tatsächlich in einer Art Timeout umschließen?

+2

ich genau dieses gleiche Problem zu sehen bin. In meinem Fall beobachte ich ein Verzeichnis auf dem lokalen Dateisystem (nicht an das Netzwerk angeschlossen), und meine Unit-Tests hängen zeitweise mit genau der gleichen Stack-Kurve, die Sie anzeigen. Ich habe es für zwei Tage dort gelassen und es hängt immer noch. Ich würde das definitiv einen Fehler nennen. – JimN

+2

Ich öffnete ein Ticket mit Oracle-Unterstützung, einschließlich eines reproduzierbaren Testfalls. – JimN

+1

Interessant, bitte posten Sie die URL wenn/wenn Sie eine korrekte Bug ID bekommen. Ist das mit Oracle oder OpenJDK? –

Antwort

Verwandte Themen