AOSSIE-Org / AOSSIE-Org/PictoPy

BUG: Sync-service: Watcher Service Permanently Dies on Unhandled Exception

Offen
#1,032 3 Kommentare 0 Reaktionen 1 zugewiesene Person Beansprucht von @DeveloperAmrit Auf GitHub ansehen
backend bug
Vorherrschende Sprache
Python
Sterne
283
Forks
679
Ø Merge
7 T. 2 Std.
Gemergte PRs (30 T.)
3

Beschreibung

### Is there an existing issue for this?

- [x] I have searched the existing issues

### What happened?

### Description
The file watching service is fragile. If a single unhandled exception occurs during file processing (e.g., a network timeout contacting the backend or a permission error), the entire watching process terminates and does not restart.

### How to reproduce
1. Start the service
2. Modify `watcher_util_handle_file_changes()` function in `utils/watcher.py` to raise a value error `raise ValueError("For testing")`
3. Trigger a file change in a watched folder.
4. Observe that the watcher logs the error and the thread terminates. The service is now effectively dead and receives no further updates.

### Root cause
In `watcher.py`, the entire watchfiles lteration loop is wrapped in a single try...except block
```try:
for changes in watch(...):
# ... logic ...
except Exception as e:
logger.error(...)
finally:
logger.info("Watcher stopped")
```
When an exception is caught, the loop is exited, and the function returns. There is no supervisor loop to restart the worker thread.

### Screenshot
Image

### Potential fix
1. Move the try...except block inside the for loop so that a single bad event doesn't break the loop.
2. Implement a supervisor pattern: if the thread dies unexpectedly, restart it.

I would like to work on this issue.

### Record

- [x] I agree to follow this project's Code of Conduct

Beitragsleitfaden

Beitragsleitfaden öffnen

Bewertung

Dieses Issue wurde noch nicht bewertet.

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.