← Back to team overview

openstack team mailing list archive

Re: Swift questions


Thank you for the responses Chuck.

As part of a rebalance, the replicator, I would assume, copies the object from the old partition to the new partition, and then deletes it from the old partition. Is that a fair assumption?

Also, is there anything that explains in more detail how the handoff node is picked? What if the ring changes and the data still lives on the handoff node? 

-- Mark

 From: Chuck Thier <cthier@xxxxxxxxx>
To: Mark Brown <ntdeveloper2002@xxxxxxxxx> 
Cc: Openstack <openstack@xxxxxxxxxxxxxxxxxxx> 
Sent: Tuesday, May 21, 2013 6:53 PM
Subject: Re: [Openstack] Swift questions

Hi Mark,

On Tue, May 21, 2013 at 6:46 PM, Mark Brown <ntdeveloper2002@xxxxxxxxx> wrote:

>I had a few more basic Swift questions..
>1. In Swift, when a rebalance is happening, does the client have write access to the object? Does Swift have a mechanism to lock down one copy which it is moving, and allow updates to the remaining two copies and do a final sync somehow? What is the mechanism?
When the ring rebalances, it is allowed to only move one replica of a partition.  This guarantees that you still have 2 available while replication is moving the partitions around.

2. I did see that Swift has a configurable number of replicas. Can it be set to 1? If it is set to 1, how does it work for the question above w.r.t rebalance? I do understand a single replica does not make sense, I did want to understand what it does in that case though.

It can be set to 1, and I think the default devstack install may do exactly that. Pretty much any guarantees of swift go out the window with 1 replica.  I would expect that the partitions that are being moved would not be available until replication has moved them.
3. If one of the nodes returns an error during a PUT(say, disk full), the request is sent to the handoff node, but how is the handoff node configured in the ring? Is it a special entry, or is it picked based on some algorithm or something else? 

There is an algorithm in the ring code that deterministically determines the handoff nodes.


Follow ups