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
の呼び出しが返されませんでした。
監視対象のフォルダは、ネットワーク接続されたストレージ上のネットワーク上で、wifiを使用してアクセスされます。これは信頼性が低いと認識していますが、同様の構成のユーザーが多数おり、これが初めて報告されたのです。
register
のJavadocでは、ブロックする可能性については言及していません。私は実際に何らかのタイムアウトでこのコールを囲むべきですか?
私はこれと同じ問題を見ています。私の場合は、ローカルのファイルシステム上のディレクトリ(ネットワークに接続されていない)を見ています。私のユニットテストは断続的に同じスタックトレースでハングアップします。私は2日間それを残し、それはまだ掛かっています。私は間違いなくこれをバグと呼んでいます。 – JimN
再現可能なテストケースを含め、オラクル社のサポートを受けたチケットをオープンしました。 – JimN
興味深いのは、適切なバグIDを取得したときにURLを投稿してください。これはOracleかOpenJDKか? –