Add safety guards for Model creation / cache lookup

This commit is contained in:
allegroai 2020-06-19 19:09:36 +03:00
parent 9f9452ecf4
commit 5fbfa1d6e2
2 changed files with 25 additions and 6 deletions

View File

@ -566,7 +566,7 @@ class InputModel(Model):
if task:
comment = 'Imported by task id: {}'.format(task.id) + ('\n' + comment if comment else '')
project_id = task.project
name = name or task.name
name = name or 'Imported by {}'.format(task.name or '')
# do not register the Task, because we do not want it listed after as "output model",
# the Task never actually created the Model
task_id = None
@ -931,7 +931,7 @@ class OutputModel(BaseModel):
self._floating_data = create_dummy_model(
design=_Model._wrap_design(config_text),
labels=label_enumeration or task.get_labels_enumeration(),
name=name or task.name,
name=name or self._task.name,
tags=tags,
comment='{} by task id: {}'.format('Created' if not base_model_id else 'Overwritten', task.id) +
('\n' + comment if comment else ''),
@ -946,7 +946,7 @@ class OutputModel(BaseModel):
design=self._floating_data.design,
task_id=self._task.id,
project_id=self._task.project,
name=self._floating_data.name or task.name,
name=self._floating_data.name or self._task.name,
comment=('{}\n{}'.format(_base_model.comment, self._floating_data.comment)
if (_base_model.comment and self._floating_data.comment and
self._floating_data.comment not in _base_model.comment)

View File

@ -136,7 +136,13 @@ class CacheManager(object):
def get_remote_url(local_copy_path):
if not CacheManager._local_to_remote_url_lookup:
return local_copy_path
conform_local_copy_path = StorageHelper.conform_url(local_copy_path)
# noinspection PyBroadException
try:
conform_local_copy_path = StorageHelper.conform_url(str(local_copy_path))
except Exception:
return local_copy_path
return CacheManager._local_to_remote_url_lookup.get(hash(conform_local_copy_path), local_copy_path)
@staticmethod
@ -144,10 +150,23 @@ class CacheManager(object):
# so that we can disable the cache lookup altogether
if CacheManager._local_to_remote_url_lookup is None:
return
remote_url = StorageHelper.conform_url(remote_url)
# noinspection PyBroadException
try:
remote_url = StorageHelper.conform_url(str(remote_url))
except Exception:
return
if remote_url.startswith('file://'):
return
local_copy_path = str(local_copy_path)
# noinspection PyBroadException
try:
local_copy_path = StorageHelper.conform_url(local_copy_path)
except Exception:
pass
CacheManager._local_to_remote_url_lookup[hash(local_copy_path)] = remote_url
# protect against overuse, so we do not blowup the memory
if len(CacheManager._local_to_remote_url_lookup) > CacheManager.__local_to_remote_url_lookup_max_size: