On Tue, Mar 17, 2015 at 8:20 PM, Yehuda Sadeh-Weinraub <yehuda@xxxxxxxxxx> wrote: > > > ----- Original Message ----- >> From: "Abhishek Dixit" <dixitabhi@xxxxxxxxx> >> To: "Yehuda Sadeh-Weinraub" <yehuda@xxxxxxxxxx>, "ZHOU Yuan" <dunk007@xxxxxxxxx> >> Cc: "ceph-devel" <ceph-devel@xxxxxxxxxxxxxxx> >> Sent: Monday, March 16, 2015 11:31:55 PM >> Subject: Re: RGW : Transaction Id in response? >> >> On Sat, Feb 28, 2015 at 6:54 AM, ZHOU Yuan <dunk007@xxxxxxxxx> wrote: >> > On Fri, Feb 27, 2015 at 6:31 PM, Abhishek Dixit <dixitabhi@xxxxxxxxx> >> > wrote: >> >> On Thu, Feb 26, 2015 at 10:51 PM, Yehuda Sadeh-Weinraub >> >> <yehuda@xxxxxxxxxx> wrote: >> >>> >> >>> >> >>> ----- Original Message ----- >> >>>> From: "Abhishek Dixit" <dixitabhi@xxxxxxxxx> >> >>>> To: "ceph-devel" <ceph-devel@xxxxxxxxxxxxxxx> >> >>>> Sent: Wednesday, February 25, 2015 8:35:40 PM >> >>>> Subject: RGW : Transaction Id in response? >> >>>> >> >>>> Hi, >> >>>> >> >>>> I was doing comparison of Open Stack Swift response headers and Ceph >> >>>> RGW response. >> >>>> This is in regard to X-Trans-Id header in response from Open Stack >> >>>> Swift storage. >> >>>> Swift response to a request always have the header "X-Trans-Id". >> >>>> X-Trans-Id : A unique transaction identifier for this request. >> >>>> >> >>>> X-Trans-Id seems to serve two purpose: >> >>>> 1. Every log messages for a request will carry this and aid in >> >>>> debugging/analyzing. >> >>>> 2. Benchmarking for latency. >> >>>> >> >>>> So, do we have similar unique identifier in Ceph RGW response which >> >>>> associates with each request? >> >>>> >> >>>> Or do we need add support for this? >> >>>> >> >>> >> >>> At the moment there is no such identifier. We can leverage the rados >> >>> client instance id that each radosgw instance gets when connecting to >> >>> the backend, and there's also a unique running number that we use to >> >>> identify each request within that gateway. We can probably concatenate >> >>> these and return it as the unique identifier. >> >>> >> >>> Yehuda >> >>> >> >> >> >> >> >> Hi Yehuda, >> >> >> >> I will add "X-Trans-Id" as per you suggested approach. >> >> I have opened a new issue particularly for adding "X-Trans-Id" as many >> >> other issues report absence of this header. >> >> >> >> I have assigned this to myself. >> >> http://tracker.ceph.com/issues/10970 >> >> >> > >> > >> > Hi Yehuda, Abhishek, >> > >> > may be we should follow the swift way considering the goal is to keep >> > compatible with swift? This might make the log analysis a bit easier >> > for swift cluster operators. >> > >> > def generate_trans_id(trans_id_suffix): >> > return 'tx%s-%010x%s' % ( >> > uuid.uuid4().hex[:21], time.time(), quote(trans_id_suffix)) >> > >> > The trans_id_suffix is configurable in swift setup. >> > >> > Thanks, -yuan >> > >> >> Thanks >> >> Abhishek Dixit >> >> -- >> >> 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 >> >> >> Hi Yehuda, Yuan >> >> req_state already has req_id generated by concatenating instance_id >> and RGWRequest id field >> But this RGWRequest id field is not set when new RGWRequest is done in >> civetweb_callback function. >> So, id remains as zero. >> For "new RGWLoadGenRequest" and "new RGWFCGXRequest" id is updated to >> max_req_id. >> So do we need to fix req->id for new RGWRequest of civetweb_callback >> as at this point only, request are generated in my setup? > > We definitely need to fix that. req->id is set as ++max_req_id. Is it possible for requests to be routed through any of RGWFCGXFrontend or RGWLoadGenFrontend in a singe RGW instance ? I mean are all these front-ends available simultaneously so all requests can flow through either of these? In case it is, then I think, we have chance of having duplicate req->id as each of RGWLoadGenProcess and RGWFCGXProcess have own copy of max_req_id. Also, max_req_id is unaccessible from civetweb_callback. If possible, please advise on how to proceed for this. Thanks Abhishek Dixit > >> >> Also, I have added uuid field in RGWRequest, from which we derive >> trans_id field added in struct req_state. >> This field trans_id of struct req_state is used when we are sending >> Swift response. >> I have concatenated trans_id with current time in milliseconds to >> generate X-Trans-Id header in Swift response. >> >> I have created a pull request on above lines. >> https://github.com/ceph/ceph/pull/4023 > > Thank you, I will take a look. > > Yehuda > >> >> Thanks >> Abhishek >> -- >> 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 >> -- 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