[tahoe-lafs-trac-stream] [Tahoe-LAFS] #2206: S3 cloud container AttributeError when retrying an operation: S3Container instance has no attribute '_reactor'

Tahoe-LAFS trac at tahoe-lafs.org
Tue Mar 25 03:09:23 UTC 2014


#2206: S3 cloud container AttributeError when retrying an operation: S3Container
instance has no attribute '_reactor'
------------------------------+--------------------------
     Reporter:  daira         |      Owner:  daira
         Type:  defect        |     Status:  assigned
     Priority:  major         |  Milestone:  soon
    Component:  code-storage  |    Version:  cloud-branch
   Resolution:                |   Keywords:  cloud s3
Launchpad Bug:                |
------------------------------+--------------------------
Changes (by daira):

 * owner:   => daira
 * status:  new => assigned


Old description:

> The retry handling for S3 containers in the cloud backend is broken.
>
> In [ticket at 2116#comment:27], we have a traceback ending with:
> {{{
> >   File
> \"/home/customer/LAFS_source/src/allmydata/storage/backends/cloud/cloud_common.py\",
> line 370, in _retry
> >     d2 = self._handle_error(f, 1, None, description, operation, *args,
> **kwargs)
> >   File
> \"/home/customer/LAFS_source/src/allmydata/storage/backends/cloud/cloud_common.py\",
> line 417, in _handle_error
> >     d = task.deferLater(self._reactor,
> BACKOFF_SECONDS_BEFORE_RETRY[trynum-1], operation, *args, **kwargs)
> > exceptions.AttributeError: S3Container instance has no attribute
> '_reactor'
> }}}
>
> This is a bug introduced during the refactoring that added
> `allmydata.storage.backends.cloud.cloud_common.CommonContainerMixin`.
> `self._reactor` is now set in the constructor inherited from
> `CommonContainerMixin`, but `S3Container` does not inherit from
> `CommonContainerMixin` and so does not call that constructor.

New description:

 The retry handling for S3 containers in the cloud backend is broken.

 In [ticket:2116#comment:27], we have a traceback ending with:
 {{{
 >   File
 \"/home/customer/LAFS_source/src/allmydata/storage/backends/cloud/cloud_common.py\",
 line 370, in _retry
 >     d2 = self._handle_error(f, 1, None, description, operation, *args,
 **kwargs)
 >   File
 \"/home/customer/LAFS_source/src/allmydata/storage/backends/cloud/cloud_common.py\",
 line 417, in _handle_error
 >     d = task.deferLater(self._reactor,
 BACKOFF_SECONDS_BEFORE_RETRY[trynum-1], operation, *args, **kwargs)
 > exceptions.AttributeError: S3Container instance has no attribute
 '_reactor'
 }}}

 This is a bug introduced during the refactoring that added
 `allmydata.storage.backends.cloud.cloud_common.CommonContainerMixin`.
 `self._reactor` is now set in the constructor inherited from
 `CommonContainerMixin`, but `S3Container` does not inherit from
 `CommonContainerMixin` and so does not call that constructor.

--

--
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2206#comment:1>
Tahoe-LAFS <https://Tahoe-LAFS.org>
secure decentralized storage


More information about the tahoe-lafs-trac-stream mailing list