Unverified Commit 3dd75a8e authored by Dannon's avatar Dannon Committed by GitHub
Browse files

Merge pull request #14340 from mvdbeek/dont_hit_disk_in_serializer

[22.05] Don't hit object store when getting size
parents 57645b10 90281980
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -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,
+1 −1
Original line number Diff line number Diff line
@@ -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(
+8 −5
Original line number Diff line number Diff line
@@ -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"""
+3 −1
Original line number Diff line number Diff line
@@ -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
+1 −1
Original line number Diff line number Diff line
@@ -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()