← Back to team overview

openstack team mailing list archive

Re: Some Debian fixes I pushed in the launchpad bzr

 

I think you may have just hit an edge case in the ring-builder code.  I
don't think it likes it if you remove all the devices from the ring.  There
is also another edge case where some operations (like rebalancing) will fail
if you have less than 3 zones.

BTW, the easiest way to test a working installation would be to follow the
all in one instructions (http://swift.openstack.org/development_saio.html).
 This will allow you to also run the suite of functional tests.

--
Chuck

On Tue, Apr 5, 2011 at 4:18 AM, Thomas Goirand <zigo@xxxxxxxxxx> wrote:

> On 04/05/2011 05:27 AM, Chuck Thier wrote:
> >  Swift *should* work on any device that has a supported file system
> > (such as XFS).  We use loopback devices often on our development
> > machines.  What specific problem are you running into?
>
> I got this:
>
> root@GPLHost:node3320>_ /etc/swift# swift-ring-builder account.builder
> account.builder, build version 1
> 262144 partitions, 3 replicas, 1 zones, 1 devices, 100.00 balance
> The minimum number of hours before a partition can be reassigned is 1
> Devices:    id  zone      ip address  port      name weight partitions
> balance meta
>             0     1   87.98.215.249  6002 node3320vg0/swift1 100.00
>      0 -100.00
> root@GPLHost:node3320>_ /etc/swift# swift-ring-builder account.builder
> remove d0
> Traceback (most recent call last):
>  File "/usr/bin/swift-ring-builder", line 571, in <module>
>    Commands.__dict__.get(command, Commands.unknown)()
>  File "/usr/bin/swift-ring-builder", line 428, in remove
>    builder.remove_dev(dev['id'])
>  File "/usr/lib/pymodules/python2.6/swift/common/ring/builder.py", line
> 178, in remove_dev
>    self._set_parts_wanted()
>  File "/usr/lib/pymodules/python2.6/swift/common/ring/builder.py", line
> 322, in _set_parts_wanted
>    sum(d['weight'] for d in self.devs if d is not None)
> ZeroDivisionError: integer division or modulo by zero
>
> According to the doc in the code of that Python script (which I also
> translated into a man page), the syntax I'm using should be correct.
> What's wrong here?
>
> Thomas
>

References