# themes: Don't try to call \`fs.load_bytes\` on a directory path on rescans \(\#60399\) · gitcafe/zed

[View on GitCafe](https://git.cafe/gitcafe/zed/commit/b4d9194fce5da4d23a558684adc045c8dcf9a620)

Repository: [gitcafe/zed](https://git.cafe/gitcafe/zed)

Visibility: public

Requested revision: b4d9194fce5da4d23a558684adc045c8dcf9a620

Requested commit: b4d9194fce5da4d23a558684adc045c8dcf9a620

Commit: b4d9194fce5da4d23a558684adc045c8dcf9a620

Tree: d7b708fbe877180131287ebd8cd4728573bffdd2

Author: Remco Smits

Committer: GitHub

## Message

````
themes: Don't try to call `fs.load_bytes` on a directory path on rescans (#60399)

# Objective

Before this change, we watched the themes directory itself. During
rescans, this could generate events for the directory, causing Zed to
attempt to load `event.path` as a file via
`fs.load_bytes(&event.path).await.log_err()`. This happened because
`fs.metadata(&event.path).await.ok().flatten().is_some()` also returns
true for directories.

Since load_bytes will always fail for a directory, we can avoid the
unnecessary call by skipping it whenever `event.path` refers to a
directory.

The rescan happens when Zed lost sync with the filesystem. That will
produce the following logs:

```
2026-07-01T16:03:35+02:00 WARN  [fs::fs_watcher] filesystem watcher lost sync for many files, not logging more
2026-07-01T16:03:35+02:00 ERROR [crates/zed/src/main.rs:1891] Is a directory (os error 21)
```

## Solution

The solution is that we just can check if the `event.path` is a
directory if so we can skip the
`fs.load_bytes(&event.path).await.log_err()` part described aboth.

## Testing

All tests should still pass and there should be no impact since this
only happens on rescans when the system is under pressure with alot of
fs events.

**Note**: No regression test was added since there's nothing to test
here.

## Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content adheres to Zed's UI standards
([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
and
[icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md)
guidelines)
- [ ] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

---

Release Notes:

- N/A
````

## Parents

- [5b805ac0743660a7034c6504b49a9f10f65524c0](https://git.cafe/gitcafe/zed/commit/5b805ac0743660a7034c6504b49a9f10f65524c0?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zed/tree/b4d9194fce5da4d23a558684adc045c8dcf9a620?format=markdown)
