Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Panic when watching auto-rebulding blog #73

Closed
matklad opened this issue Mar 22, 2024 · 1 comment
Closed

Panic when watching auto-rebulding blog #73

matklad opened this issue Mar 22, 2024 · 1 comment

Comments

@matklad
Copy link

matklad commented Mar 22, 2024

This is probably a bug in notify, and it really warrants more investigation on my side, but I don't have time for this right now, so I'll log the issue as I've got it.

Feel free to ignore this! While I am sure it is actionable (there's an honest-to-god panic), I bet this'll be fiddly to debug.

When running deno task watch & live-server --port 8080 in https://github.com/matklad/matklad.github.io, I got the following panic:

src/main.ts watch
[2024-03-22T10:28:45Z INFO  live_server::server] Listening on http://172.20.10.6:8080/
[2024-03-22T10:28:45Z INFO  live_server::watcher] Listening on /home/matklad/p/matklad.github.io
thread 'tokio-runtime-worker' panicked at /home/matklad/.cargo/registry/src/index.crates.io-6f17d22bba15001f/live-server-0.7.0/src/watcher.rs:74:10:
called `Result::unwrap()` on an `Err` value: Error { kind: Io(Os { code: 2, kind: NotFound, message: "No such file or directory" }), paths: ["/home/matklad/p/matklad.github.io/out/res/2021/11/07"] }
stack backtrace:
Watcher Process started.
   0: rust_begin_unwind
             at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/std/src/panicking.rs:645:5
   1: core::panicking::panic_fmt
             at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/core/src/panicking.rs:72:14
   2: core::result::unwrap_failed
             at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/core/src/result.rs:1649:5
   3: live_server::watcher::watch::{{closure}}
   4: std::panicking::try
   5: tokio::runtime::task::harness::Harness<T,S>::poll
   6: tokio::runtime::scheduler::multi_thread::worker::Context::run_task
   7: tokio::runtime::scheduler::multi_thread::worker::Context::run
   8: tokio::runtime::context::scoped::Scoped<T>::set
   9: tokio::runtime::context::runtime::enter_runtime
  10: tokio::runtime::scheduler::multi_thread::worker::run
  11: <tokio::runtime::blocking::task::BlockingTask<T> as core::future::future::Future>::poll
  12: tokio::runtime::task::core::Core<T,S>::poll
  13: tokio::runtime::task::harness::Harness<T,S>::poll
  14: tokio::runtime::blocking::pool::Inner::run
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
thread 'main' panicked at /home/matklad/.cargo/registry/src/index.crates.io-6f17d22bba15001f/live-server-0.7.0/src/main.rs:43:28:
called `Result::unwrap()` on an `Err` value: JoinError::Panic(Id(22), ...)
stack backtrace:
   0: rust_begin_unwind
             at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/std/src/panicking.rs:645:5
   1: core::panicking::panic_fmt
             at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/core/src/panicking.rs:72:14
   2: core::result::unwrap_failed
             at /rustc/07dca489ac2d933c78d3c5158e3f43beefeb02ce/library/core/src/result.rs:1649:5
   3: tokio::runtime::park::CachedParkThread::block_on::{{closure}}
   4: tokio::runtime::context::blocking::BlockingRegionGuard::block_on
   5: tokio::runtime::context::runtime::enter_runtime
   6: tokio::runtime::runtime::Runtime::block_on
   7: live_server::main
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

Notably, the "root" path there should be /home/matklad/p/matklad.github.io/! The out directory is the one that's deleted and re-created by deno task watch part.

So, it looks like what's happening here is that you ask notify to watch ./, it interanlly races to read ./out/res/2021/11/07, and that fails. This is normal: we are watching fs for changes, of course we are expected files to go out of existence from under our nose! What is strage is that notify propagates this error all the way up to watcher creation, and fails the entire operation.

Thanks for live-server by the way, its best in class from what I can tell, no nonsense, does exactly what I need it to!

@matklad
Copy link
Author

matklad commented Mar 22, 2024

welp, spend 10 more seconds looking at the source code and debugged this! Let me file an issue on notify...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant