mirror of
https://github.com/galaxyproject/galaxy.git
synced 2026-09-24 16:30:27 +08:00
Merge pull request #14340 from mvdbeek/dont_hit_disk_in_serializer
[22.05] Don't hit object store when getting size
This commit is contained in:
@@ -190,7 +190,7 @@ class DatasetSerializer(base.ModelSerializer[DatasetManager], deletable.Purgable
|
||||
"extra_files_path": self.serialize_extra_files_path,
|
||||
"permissions": self.serialize_permissions,
|
||||
"total_size": lambda item, key, **context: int(item.get_total_size()),
|
||||
"file_size": lambda item, key, **context: int(item.get_size()),
|
||||
"file_size": lambda item, key, **context: int(item.get_size(calculate_size=False)),
|
||||
}
|
||||
self.serializers.update(serializers)
|
||||
|
||||
@@ -522,9 +522,9 @@ class _UnflattenedMetadataDatasetAssociationSerializer(base.ModelSerializer[T],
|
||||
"extra_files_path": self._proxy_to_dataset(serializer=self.dataset_serializer.serialize_extra_files_path),
|
||||
"permissions": self._proxy_to_dataset(serializer=self.dataset_serializer.serialize_permissions),
|
||||
# TODO: do the sizes proxy accurately/in the same way?
|
||||
"size": lambda item, key, **context: int(item.get_size()),
|
||||
"size": lambda item, key, **context: int(item.get_size(calculate_size=False)),
|
||||
"file_size": lambda item, key, **context: self.serializers["size"](item, key, **context),
|
||||
"nice_size": lambda item, key, **context: item.get_size(nice_size=True),
|
||||
"nice_size": lambda item, key, **context: item.get_size(nice_size=True, calculate_size=False),
|
||||
# common to lddas and hdas - from mapping.py
|
||||
"copied_from_history_dataset_association_id": self.serialize_id,
|
||||
"copied_from_library_dataset_dataset_association_id": self.serialize_id,
|
||||
|
||||
@@ -242,7 +242,7 @@ class LibraryDatasetsManager(datasets.DatasetAssociationManager):
|
||||
rval["deleted"] = ld.deleted
|
||||
rval["folder_id"] = f"F{rval['folder_id']}"
|
||||
rval["full_path"] = full_path
|
||||
rval["file_size"] = util.nice_size(int(ldda.get_size()))
|
||||
rval["file_size"] = util.nice_size(int(ldda.get_size(calculate_size=False)))
|
||||
rval["date_uploaded"] = ldda.create_time.isoformat()
|
||||
rval["update_time"] = ldda.update_time.isoformat()
|
||||
rval["can_user_modify"] = trans.user_is_admin or trans.app.security_agent.can_modify_library_item(
|
||||
|
||||
@@ -3568,18 +3568,21 @@ class Dataset(Base, StorableObject, Serializable, _HasTable):
|
||||
else:
|
||||
return self.object_store.size(self)
|
||||
|
||||
def get_size(self, nice_size=False):
|
||||
def get_size(self, nice_size=False, calculate_size=True):
|
||||
"""Returns the size of the data on disk"""
|
||||
if self.file_size:
|
||||
if nice_size:
|
||||
return galaxy.util.nice_size(self.file_size)
|
||||
else:
|
||||
return self.file_size
|
||||
else:
|
||||
elif calculate_size:
|
||||
# Hopefully we only reach this branch in sessionless mode
|
||||
if nice_size:
|
||||
return galaxy.util.nice_size(self._calculate_size())
|
||||
else:
|
||||
return self._calculate_size()
|
||||
else:
|
||||
return self.file_size or 0
|
||||
|
||||
def set_size(self, no_extra_files=False):
|
||||
"""Sets the size of the data on disk.
|
||||
@@ -4018,11 +4021,11 @@ class DatasetInstance(UsesCreateAndUpdateTime, _HasTable):
|
||||
self.clear_associated_files()
|
||||
_get_datatypes_registry().change_datatype(self, new_ext)
|
||||
|
||||
def get_size(self, nice_size=False):
|
||||
def get_size(self, nice_size=False, calculate_size=True):
|
||||
"""Returns the size of the data on disk"""
|
||||
if nice_size:
|
||||
return galaxy.util.nice_size(self.dataset.get_size())
|
||||
return self.dataset.get_size()
|
||||
return galaxy.util.nice_size(self.dataset.get_size(calculate_size=calculate_size))
|
||||
return self.dataset.get_size(calculate_size=calculate_size)
|
||||
|
||||
def set_size(self, **kwds):
|
||||
"""Sets and gets the size of the data on disk"""
|
||||
|
||||
@@ -357,7 +357,9 @@ class LibraryDatasetsController(BaseGalaxyAPIController, UsesVisualizationMixin,
|
||||
trans.sa_session.flush()
|
||||
|
||||
rval = trans.security.encode_all_ids(library_dataset.to_dict())
|
||||
nice_size = util.nice_size(int(library_dataset.library_dataset_dataset_association.get_size()))
|
||||
nice_size = util.nice_size(
|
||||
int(library_dataset.library_dataset_dataset_association.get_size(calculate_size=False))
|
||||
)
|
||||
rval["file_size"] = nice_size
|
||||
rval["update_time"] = library_dataset.update_time.strftime("%Y-%m-%d %I:%M %p")
|
||||
rval["deleted"] = library_dataset.deleted
|
||||
|
||||
@@ -128,7 +128,7 @@ class LibraryFolderContentsService(ServiceBase, UsesLibraryMixinItems):
|
||||
current_user_roles, content_item.library_dataset_dataset_association.dataset
|
||||
)
|
||||
)
|
||||
raw_size = int(content_item.library_dataset_dataset_association.get_size())
|
||||
raw_size = int(content_item.library_dataset_dataset_association.get_size(calculate_size=False))
|
||||
nice_size = util.nice_size(raw_size)
|
||||
update_time = content_item.library_dataset_dataset_association.update_time.isoformat()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user