On Wed, 11 Feb 2015, Samuel Just wrote: > Well, the transaction is atomic, so if the key is set twice, you can > certainly ignore the first one.
It's probably worth looking at what is generating the dup keys, though, yeah? sage > -Sam > > On Wed, Feb 11, 2015 at 2:20 PM, Somnath Roy <somnath....@sandisk.com> wrote: > > Hi, > > My code had a bug during printing log. I was using map to store the > > attribute keys in sorted order and that was discarding the duplicates :-) > > > > This is what I found out coming during transaction. > > > > 2015-02-05 15:58:12.311738 7f27b5429700 0 queue_transactions :: before > > _do_transactions > > 2015-02-05 15:58:12.311754 7f27b5429700 0 _do_transactions::before > > _do_transaction > > 2015-02-05 15:58:12.311770 7f27b5429700 0 Transaction::OP_WRITE::cid = > > 1.a3_head oid = 680256a3/rbd_data.100974b0dc51.0000000000000631/head//1 > > offset = 3997696 len = 65536 > > 2015-02-05 15:58:12.311800 7f27b5429700 0 Transaction::OP_SETATTR::cid = > > 1.a3_head oid = 680256a3/rbd_data.100974b0dc51.0000000000000631/head//1 > > attr_name = _ attr_value_len = 273 > > 2015-02-05 15:58:12.311822 7f27b5429700 0 Transaction::OP_SETATTR::cid = > > 1.a3_head oid = 680256a3/rbd_data.100974b0dc51.0000000000000631/head//1 > > attr_name = snapset attr_value_len = 31 > > 2015-02-05 15:58:12.311840 7f27b5429700 0 > > Transaction::OP_OMAP_SETKEYS::cid = 1.a3_head oid = a3//head//1 > > 2015-02-05 15:58:12.311845 7f27b5429700 0 OMAP_KEY = > > 0000000102.00000000000000001592 Value = buffer::list(len=178, > > buffer::ptr(0~4 0x3efc21000 in raw 0x3efc21000 len 4096 nref 6), > > buffer::ptr(0~170 0x3d74840 in raw 0x3d74840 len 688 nref 3), > > buffer::ptr(4~4 0x3efc21004 in raw 0x3efc21000 len 4096 nref 6) > > ) > > 2015-02-05 15:58:12.311931 7f27b5429700 0 > > Transaction::OP_OMAP_SETKEYS::cid = 1.a3_head oid = a3//head//1 > > 2015-02-05 15:58:12.311938 7f27b5429700 0 OMAP_KEY = _epoch Value = > > buffer::list(len=4, > > buffer::ptr(0~4 0x3efc1f000 in raw 0x3efc1f000 len 4096 nref 3) > > ) > > 2015-02-05 15:58:12.311943 7f27b5429700 0 OMAP_KEY = _info Value = > > buffer::list(len=713, > > buffer::ptr(0~713 0x3efc1e000 in raw 0x3efc1e000 len 4096 nref 3) > > ) > > 2015-02-05 15:58:12.311965 7f27b5429700 0 > > Transaction::OP_OMAP_SETKEYS::cid = 1.a3_head oid = a3//head//1 > > 2015-02-05 15:58:12.311969 7f27b5429700 0 OMAP_KEY = > > 0000000102.00000000000000001592 Value = buffer::list(len=178, > > buffer::ptr(0~4 0x3d75e40 in raw 0x3d75e40 len 688 nref 6), > > buffer::ptr(0~170 0x3d75b80 in raw 0x3d75b80 len 688 nref 3), > > buffer::ptr(4~4 0x3d75e44 in raw 0x3d75e40 len 688 nref 6) > > ) > > 2015-02-05 15:58:12.311980 7f27b5429700 0 OMAP_KEY = can_rollback_to Value > > = buffer::list(len=12, > > buffer::ptr(0~12 0x3efc25000 in raw 0x3efc25000 len 4096 nref 3) > > ) > > 2015-02-05 15:58:12.311985 7f27b5429700 0 OMAP_KEY = > > rollback_info_trimmed_to Value = buffer::list(len=12, > > buffer::ptr(0~12 0x3efc24000 in raw 0x3efc24000 len 4096 nref 3) > > ) > > > > > > > > So, the OMAP_KEY = 0000000102.00000000000000001592 is coming twice ! > > > > Is there any reason, why ? What is this attribute by the way ? > > Can we safely discard the first OP_OMAP_SETKEYS call for the same key ? > > > > Thanks & Regards > > Somnath > > > > -----Original Message----- > > From: Somnath Roy > > Sent: Tuesday, February 10, 2015 4:36 PM > > To: 'Sage Weil'; Gregory Farnum > > Cc: sj...@redhat.com; Haomai Wang (haomaiw...@gmail.com); Ceph Development > > Subject: RE: K/V interface buffer transaction > > > > Thanks Greg/Sam/Sage ! > > For now, we will be doing our testing by sorting the keys and will keep an > > eye on the duplicates. > > Another point, why do we need the K/V store thread pool for processing > > transactions anymore ? > > I got rid of that and calling _do_transaction() directly from the > > ::queue_trasaction , this is giving me ~3X performance improvement. > > > > Regards > > Somnath > > > > -----Original Message----- > > From: Sage Weil [mailto:sw...@redhat.com] > > Sent: Tuesday, February 10, 2015 10:44 AM > > To: Gregory Farnum > > Cc: Somnath Roy; sj...@redhat.com; Haomai Wang (haomaiw...@gmail.com); Ceph > > Development > > Subject: Re: K/V interface buffer transaction > > > > On Tue, 10 Feb 2015, Gregory Farnum wrote: > >> On Tue, Feb 10, 2015 at 10:26 AM, Sage Weil <sw...@redhat.com> wrote: > >> > On Tue, 10 Feb 2015, Somnath Roy wrote: > >> >> Thanks Sam ! > >> >> So, is it safe to do ordering if in a transaction *no* > >> >> remove/truncate/create/add call ? > >> >> For example, do we need to preserve ordering in case of the below > >> >> transaction ? > >> >> It will be helpful if you can give some insight in what scenario > >> >> preserving order is *must*. > >> > > >> > If I'm not mistaken teh only time ordering would matter at all in an > >> > transaction is when the same key is updated twice, right? The whole > >> > thing is committed atomically. If there *are* dups, then the order > >> > there obviously should be preserved. > >> > > >> > Maybe a first pass would be add an assert or something that there > >> > are no dup keys and see if anything every falls out of that... > >> > hopefully there are none! > >> > >> I'm pretty sure some of the transaction analysis discussions people > >> have had say that we do double-updates at times. IIRC it might have > >> been the pglog head getting set twice in most transactions? > > > > Oh yeah, could be. There was the snapset xattr update, but that was > > resetting it to an existing value (not the same value inside the same txn). > > I forget if there were others. > > > > sage > > > > ________________________________ > > > > PLEASE NOTE: The information contained in this electronic mail message is > > intended only for the use of the designated recipient(s) named above. If > > the reader of this message is not the intended recipient, you are hereby > > notified that you have received this message in error and that any review, > > dissemination, distribution, or copying of this message is strictly > > prohibited. If you have received this communication in error, please notify > > the sender by telephone or e-mail (as shown above) immediately and destroy > > any and all copies of this message in your possession (whether hard copies > > or electronically stored copies). > > > -- > To unsubscribe from this list: send the line "unsubscribe ceph-devel" in > the body of a message to majord...@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html > > -- To unsubscribe from this list: send the line "unsubscribe ceph-devel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html