Fix access to default output destination when project can't be loaded, add warning message but do not fail

This commit is contained in:
clearml 2025-06-05 13:47:07 +03:00
parent 40bd979db1
commit d98155a4e3
2 changed files with 12 additions and 7 deletions

View File

@ -1923,7 +1923,7 @@ class Task(IdObjectBase, AccessMixin, SetupUploadMixin):
self._project_name = (self.project, res.response.project.name)
return self._project_name[1]
def get_project_object(self) -> dict:
def get_project_object(self) -> "projects.Project":
"""Get the current Task's project as a python object."""
if self.project is None:
return self._project_object[1] if self._project_object and len(self._project_object) > 1 else None
@ -1933,7 +1933,8 @@ class Task(IdObjectBase, AccessMixin, SetupUploadMixin):
res = self.send(projects.GetByIdRequest(project=self.project), raise_on_errors=False)
if not res or not res.response or not res.response.project:
return {}
self.log.warning("Project {} not found or no read access available".format(self.project))
return None
self._project_object = (self.project, res.response.project)
return self._project_object[1]

View File

@ -590,6 +590,10 @@ class Task(_Task):
)
task_type = Task.TaskTypes.__members__[str(task_type)]
def safe_project_default_output_destination(task_, default=None):
project_ = task_.get_project_object()
return project_.default_output_destination if project_ else default
is_deferred = False
try:
if not running_remotely():
@ -670,10 +674,10 @@ class Task(_Task):
Path(task._get_default_report_storage_uri()).mkdir(parents=True, exist_ok=True)
elif output_uri is not None:
if output_uri is True:
output_uri = task.get_project_object().default_output_destination or True
output_uri = safe_project_default_output_destination(task) or True
task.output_uri = output_uri
elif task.get_project_object().default_output_destination:
task.output_uri = task.get_project_object().default_output_destination
elif safe_project_default_output_destination(task):
task.output_uri = safe_project_default_output_destination(task)
elif cls.__default_output_uri:
task.output_uri = str(cls.__default_output_uri)
# store new task ID
@ -693,8 +697,8 @@ class Task(_Task):
# Setting output_uri=False argument will disable using any default when running remotely
pass
else:
if task.get_project_object().default_output_destination and not task.output_uri:
task.output_uri = task.get_project_object().default_output_destination
if safe_project_default_output_destination(task) and not task.output_uri:
task.output_uri = safe_project_default_output_destination(task)
if cls.__default_output_uri and not task.output_uri:
task.output_uri = cls.__default_output_uri
# store new task ID