FileSystemWatcher reports incorrect sequence of events on MacOS
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 45/100
- Issue type
- Bug
- Clarity
- Mostly clear
- Activity status
- Stale
- Tech stack
- csharp
- Domain
- operating-systems
Research direction
Start with FileSystemWatcher and dotnet-watch, then follow the reproduction details in dotnet/sdk issue 47912 to reproduce the macOS event ordering. Investigate why the Updated event arrives before Added, and verify completion when dotnet-watch reports Added, Updated, then Deleted consistently on macOS without changing the Windows or Linux behavior.
Written by the indexing model from the issue text.
Description
Description
dotnet-watch uses FileSystemWatcher to watch for changes in source files.
In some scenarios on MacOS donet-watch receives the following sequence of events:
File Updated
File Added
File Deleted
i.e. the file was updated before it was added.
We don't see this behavior on Windows or Linux.
Reproduction Steps
See https://github.com/dotnet/sdk/issues/47912
Expected behavior
Following sequence of events reported by dotnet-watch:
dotnet watch ⌚ Added '/xxx/Blazor9/wwwroot/app.css~'.
dotnet watch ⌚ Updated '/xxx/Blazor9/wwwroot/app.css~'.
dotnet watch ⌚ Deleted '/xxx/Blazor9/wwwroot/app.css~'.
Actual behavior
Following sequence of events reported by dotnet-watch:
dotnet watch ⌚ Updated '/xxx/Blazor9/wwwroot/app.css~'.
dotnet watch ⌚ Added '/xxx/Blazor9/wwwroot/app.css~'.
dotnet watch ⌚ Deleted '/xxx/Blazor9/wwwroot/app.css~'.
Regression?
No response
Known Workarounds
No response
Configuration
No response
Other information
No response
- Dominant language
- C#
- Stars
- 18.3k
- Forks
- 5.6k
- PR merge metrics
- PR metrics pending
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from dotnet/runtime
-
agentic-workflows untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
area-System.Reflection blocking-clean-ci-optional Known Build Error os-mac-os-x untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
-
area-CodeGen-coreclr untriaged
Difficulty 1/5 Under an hour Newbie friendliness 92/100
-
agentic-workflows untriaged
Difficulty 1/5 Under an hour Newbie friendliness 78/100
-
area-VM-meta-mono untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
-
:watch: Not Triaged 11.0 fundamentals/subsvc
Difficulty 2/5 1-3 hours Newbie friendliness 92/100
dotnet/AspNetCore.Docs#37699 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
SubtitleEdit/subtitleedit#15108 · 1 comment ·
-
area/docs-content Bug pulumi/docs
Difficulty 1/5 1-3 hours Newbie friendliness 94/100
-
Create parent directories only after the containment check in InstallHelper.TryExtractToDirectory Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
PowerShell/PSResourceGet#2056 ·