On Tue, 20 Sep 2011, Henry C Chang wrote: > 2011/9/20 Yehuda Sadeh Weinraub <yehudasa@xxxxxxxxx>: > > On Tue, Sep 20, 2011 at 1:36 AM, Henry C Chang <henry.cy.chang@xxxxxxxxx> wrote: > >> Hi, > >> > >> I have a question about the radosgw. > >> > >> The radosgw uses an object to record the buckets owned by one user > >> account. However, suppose that the user account is shared by multiple > >> users, and these users connect to the radosgw concurrently. If, say, > >> user A creates bucket B1 and user B deletes bucket B2 at the same > >> time, they will both update the object. Since it seems radosgw has no > >> lock mechanism for object update, the problems would occurs - either > >> the created bucket will be lost or the deleted bucket can still be > >> listed but dne actually. > >> > >> I know it may be a rare case, just wondering if there is away to > >> handle this situation. > >> > > > > The RADOS gateway uses RADOS tmap atomic operations for modifying this > > object. The tmap operations allows it to either add, remove, or modify > > entries in this object without the need for locking and without > > possible race conditions. > > > > Yehuda > > > > That's cool. If possible, could you briefly explain how tmap operation > works or is there any document I can refer to? The best reference is probably librados.h. That describes the current interface, at least. You'll find the implementation in osd/ReplicatedPG.cc.. search for TMAP on do_osd_ops(). https://github.com/NewDreamNetwork/ceph/blob/master/src/include/rados/librados.h sage -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html