Skip to content

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

@DeveloperAmrit

Description

@DeveloperAmrit

Is there an existing issue for this?

  • 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

    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

  • I agree to follow this project's Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions