現在の RecommendedWatcher(ネイティブ監視)一本の実装を拡張し、ネットワーク FS 対応・パフォーマンス改善・エラーハンドリング強化を行う。
関連仕様: 14_folder_monitor.md
多くのネットワーク FS(SMB/CIFS・NFS 等)では RecommendedWatcher のネイティブ通知が発火しない(notify Known Problems)。WSL 上で Windows パスを監視する場合も同様。
RecommendedWatcher が使えない環境では PollWatcher にフォールバックする。
| 条件 | Watcher |
|---|---|
| ローカル FS | RecommendedWatcher(ネイティブ) |
| SMB/CIFS・NFS 等 | PollWatcher(poll_interval: 30s) |
| WSL 上の Windows パス | PollWatcher |
以下のいずれかで判定する:
\\(UNC)、Linux の /mnt/・/media/、macOS の /Volumes/RecommendedWatcher の watch() 失敗時、または一定時間イベントが来ない場合にフォールバック/proc/mounts(Linux)、getfsstat(macOS)等で判定(任意の拡張)| オプション | 用途 | 想定値 |
|---|---|---|
with_poll_interval(dur) |
再スキャン間隔 | 30 秒(大容量ツリーは 60 秒) |
with_compare_contents(bool) |
mtime が信用できない FS 向け(/proc 等) |
通常 false |
モニター先追加時の初期スキャンは再帰走査 + 逐次取込のため、大量ファイルがあると長時間かかる。
yield して他の処理をブロックしない)監視対象フォルダへの読み取り権限がない場合、watch() や read_dir() がエラーを返すが、ユーザーへの通知が log::warn のみ。
シンボリックリンク・ジャンクション・バインドマウントを経由した場合、同一ファイルが異なるパスで検知され、二重登録になる可能性がある。
std::fs::canonicalize() でパスを正規化してから DB パスと照合Config::with_follow_symlinks(false) でリンクをたどらない選択肢| 項目 | 優先度 |
|---|---|
| PollWatcher フォールバック | 中 |
| 大容量フォルダ初期スキャン | 低 |
| 権限エラー UI | 低 |
| パス正規化 | 低 |