[Openstack] [Swift] Container DB update after object PUT

Shao, Minglong Minglong.Shao at netapp.com
Thu Nov 28 05:24:35 UTC 2013


Thanks for your reply!
I understand the three PUTs by the proxy server and how the replicator works.

What I don’t understand is the update of the container DB. The update is sent by individual object servers which don’t know whether a PUT (from the client’s perspective) succeeds.
Consider the following scenario:

  1.  Proxy server sends three requests to three object servers.
  2.  One object server writes the object successfully, sends an update to the container DB and an “OK” reply to the proxy server. But the other two fail, so they send “failed” to the proxy server.
  3.  The proxy server sends back “failed” to the client because it doesn’t meet the quorum. But the container DB still gets the update to insert an entry of this object.

I must have missed something. Thanks for your help!

From: Kuo Hugo <tonytkdk at gmail.com<mailto:tonytkdk at gmail.com>>
Date: Thursday, November 28, 2013 at 12:31 PM
To: Minglong Shao <minglong.shao at netapp.com<mailto:minglong.shao at netapp.com>>
Cc: "openstack at lists.openstack.org<mailto:openstack at lists.openstack.org>" <openstack at lists.openstack.org<mailto:openstack at lists.openstack.org>>
Subject: Re: [Openstack] [Swift] Container DB update after object PUT

Proxy sends requests to *three* replicas's object servers simultaneously.
A successful PUT request depends on at least 1/2 replicas were success. Or Proxy will return PUT failed to user.

If 1/3 replica is not there, the replicator will handle it later.
It won't have any problem with container DB.




+Hugo Kuo+
(+886) 935004793
SwiftStack Inc.


2013/11/28 Shao, Minglong <Minglong.Shao at netapp.com<mailto:Minglong.Shao at netapp.com>>
Hi there,

After an object server writes an object in the local file system, it updates the container DB asynchronously (send a message to insert an entry in the object table). But the object server doesn’t really know whether the object PUT is considered successful or not because the other two replicas could fail. In this case, the container DB could have an entry for an object which is not successfully PUT. Can someone shed some light on this? Am I missing something?

Many thanks!

_______________________________________________
Mailing list: http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack
Post to     : openstack at lists.openstack.org<mailto:openstack at lists.openstack.org>
Unsubscribe : http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openstack.org/pipermail/openstack/attachments/20131128/7caa3334/attachment.html>


More information about the Openstack mailing list