From: Sofia Papagiannaki Date: Fri, 9 Sep 2011 15:15:36 +0000 (+0300) Subject: fix nested db transaction issue in move_object X-Git-Tag: pithos/v0.7.8~80 X-Git-Url: https://code.grnet.gr/git/pithos/commitdiff_plain/dff7b6f1fefdcf8f9afa27e84fd2cd5db4ca71b7 fix nested db transaction issue in move_object --- diff --git a/pithos/backends/modular.py b/pithos/backends/modular.py index a65da33..54fc340 100644 --- a/pithos/backends/modular.py +++ b/pithos/backends/modular.py @@ -493,11 +493,7 @@ class ModularBackend(BaseBackend): self.permissions.access_set(path, permissions) return dest_version_id - @backend_method - def copy_object(self, user, account, src_container, src_name, dest_container, dest_name, dest_meta={}, replace_meta=False, permissions=None, src_version=None): - """Copy an object's data and metadata.""" - - logger.debug("copy_object: %s %s %s %s %s %s %s %s %s", account, src_container, src_name, dest_container, dest_name, dest_meta, replace_meta, permissions, src_version) + def _copy_object(self, user, account, src_container, src_name, dest_container, dest_name, dest_meta={}, replace_meta=False, permissions=None, src_version=None): if permissions is not None and user != account: raise NotAllowedError self._can_read(user, account, src_container, src_name) @@ -518,19 +514,22 @@ class ModularBackend(BaseBackend): return dest_version_id @backend_method + def copy_object(self, user, account, src_container, src_name, dest_container, dest_name, dest_meta={}, replace_meta=False, permissions=None, src_version=None): + """Copy an object's data and metadata.""" + + logger.debug("copy_object: %s %s %s %s %s %s %s %s %s", account, src_container, src_name, dest_container, dest_name, dest_meta, replace_meta, permissions, src_version) + return self._copy_object(user, account, src_container, src_name, dest_container, dest_name, dest_meta, replace_meta, permissions, src_version) + + @backend_method def move_object(self, user, account, src_container, src_name, dest_container, dest_name, dest_meta={}, replace_meta=False, permissions=None): """Move an object's data and metadata.""" logger.debug("move_object: %s %s %s %s %s %s %s %s", account, src_container, src_name, dest_container, dest_name, dest_meta, replace_meta, permissions) - dest_version_id = self.copy_object(user, account, src_container, src_name, dest_container, dest_name, dest_meta, replace_meta, permissions, None) - self.delete_object(user, account, src_container, src_name) + dest_version_id = self._copy_object(user, account, src_container, src_name, dest_container, dest_name, dest_meta, replace_meta, permissions, None) + self._delete_object(user, account, src_container, src_name) return dest_version_id - @backend_method - def delete_object(self, user, account, container, name, until=None): - """Delete/purge an object.""" - - logger.debug("delete_object: %s %s %s %s", account, container, name, until) + def _delete_object(self, user, account, container, name, until=None): if user != account: raise NotAllowedError @@ -557,6 +556,13 @@ class ModularBackend(BaseBackend): self.permissions.access_clear(path) @backend_method + def delete_object(self, user, account, container, name, until=None): + """Delete/purge an object.""" + + logger.debug("delete_object: %s %s %s %s", account, container, name, until) + self._delete_object(user, account, container, name, until) + + @backend_method def list_versions(self, user, account, container, name): """Return a list of all (version, version_timestamp) tuples for an object."""