mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-27 09:08:14 +00:00
Improve error handling and documentation in Knowledge._check_and_reload_sources
Co-Authored-By: Joe Moura <joao@crewai.com>
This commit is contained in:
@@ -83,23 +83,56 @@ class Knowledge(BaseModel):
|
|||||||
with previously recorded values. When changes are detected, the source is reloaded and
|
with previously recorded values. When changes are detected, the source is reloaded and
|
||||||
the storage is updated with the new content.
|
the storage is updated with the new content.
|
||||||
|
|
||||||
Handles specific exceptions for file operations to provide better error reporting.
|
The method handles various file-related exceptions with specific error messages:
|
||||||
|
- FileNotFoundError: When a source file no longer exists
|
||||||
|
- PermissionError: When there are permission issues accessing a file
|
||||||
|
- IOError: When there are I/O errors reading a file
|
||||||
|
- ValueError: When there are issues with file content format
|
||||||
|
- Other unexpected exceptions are also caught and logged
|
||||||
|
|
||||||
|
Each exception is logged with appropriate context to aid in troubleshooting.
|
||||||
"""
|
"""
|
||||||
for source in self.sources:
|
for source in self.sources:
|
||||||
|
source_name = source.__class__.__name__
|
||||||
try:
|
try:
|
||||||
if hasattr(source, 'files_have_changed') and source.files_have_changed():
|
if hasattr(source, 'files_have_changed') and source.files_have_changed():
|
||||||
self._logger.log("info", f"Reloading modified source: {source.__class__.__name__}")
|
self._logger.log("info", f"Reloading modified source: {source_name}")
|
||||||
source._record_file_mtimes() # Update timestamps
|
|
||||||
source.content = source.load_content()
|
# Update file modification timestamps
|
||||||
source.add() # Reload and update storage
|
try:
|
||||||
|
source._record_file_mtimes()
|
||||||
|
except (PermissionError, IOError) as e:
|
||||||
|
self._logger.log("warning", f"Could not record file timestamps for {source_name}: {str(e)}")
|
||||||
|
|
||||||
|
try:
|
||||||
|
source.content = source.load_content()
|
||||||
|
except FileNotFoundError as e:
|
||||||
|
self._logger.log("error", f"File not found when loading content for {source_name}: {str(e)}")
|
||||||
|
continue
|
||||||
|
except PermissionError as e:
|
||||||
|
self._logger.log("error", f"Permission error when loading content for {source_name}: {str(e)}")
|
||||||
|
continue
|
||||||
|
except IOError as e:
|
||||||
|
self._logger.log("error", f"IO error when loading content for {source_name}: {str(e)}")
|
||||||
|
continue
|
||||||
|
except ValueError as e:
|
||||||
|
self._logger.log("error", f"Invalid content format in {source_name}: {str(e)}")
|
||||||
|
continue
|
||||||
|
|
||||||
|
try:
|
||||||
|
source.add()
|
||||||
|
self._logger.log("info", f"Successfully reloaded and updated {source_name}")
|
||||||
|
except Exception as e:
|
||||||
|
self._logger.log("error", f"Failed to update storage for {source_name}: {str(e)}")
|
||||||
|
|
||||||
except FileNotFoundError as e:
|
except FileNotFoundError as e:
|
||||||
self._logger.log("error", f"File not found when checking for updates: {str(e)}")
|
self._logger.log("error", f"File not found when checking for updates in {source_name}: {str(e)}")
|
||||||
except PermissionError as e:
|
except PermissionError as e:
|
||||||
self._logger.log("error", f"Permission error when checking for updates: {str(e)}")
|
self._logger.log("error", f"Permission error when checking for updates in {source_name}: {str(e)}")
|
||||||
except IOError as e:
|
except IOError as e:
|
||||||
self._logger.log("error", f"IO error when checking for updates: {str(e)}")
|
self._logger.log("error", f"IO error when checking for updates in {source_name}: {str(e)}")
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self._logger.log("error", f"Unexpected error when checking for updates: {str(e)}")
|
self._logger.log("error", f"Unexpected error when checking for updates in {source_name}: {str(e)}")
|
||||||
|
|
||||||
def add_sources(self):
|
def add_sources(self):
|
||||||
try:
|
try:
|
||||||
|
|||||||
Reference in New Issue
Block a user