From fa5b36c9a1b0e092bce8646a66abd87cb316a671 Mon Sep 17 00:00:00 2001 From: Yehuda Sadeh Date: Mon, 23 Nov 2015 19:34:18 -0800 Subject: [PATCH] rgw: start annotating coroutines status and description Signed-off-by: Yehuda Sadeh --- src/rgw/rgw_cr_rados.cc | 42 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) diff --git a/src/rgw/rgw_cr_rados.cc b/src/rgw/rgw_cr_rados.cc index fa72171e273f6..ab66ef1c7390f 100644 --- a/src/rgw/rgw_cr_rados.cc +++ b/src/rgw/rgw_cr_rados.cc @@ -200,6 +200,16 @@ RGWRadosSetOmapKeysCR::RGWRadosSetOmapKeysCR(RGWRados *_store, entries(_entries), pool(_pool), oid(_oid), cn(NULL) { + stringstream s; + s << "set omap keys dest=" << pool.name << "/" << oid << " keys=[" << s.str() << "]"; + for (auto i = entries.begin(); i != entries.end(); ++i) { + if (i != entries.begin()) { + s << ", "; + } + s << i->first; + } + s << "]"; + set_description(s.str()); } RGWRadosSetOmapKeysCR::~RGWRadosSetOmapKeysCR() @@ -217,6 +227,8 @@ int RGWRadosSetOmapKeysCR::send_request() return r; } + set_status("sending request"); + librados::ObjectWriteOperation op; op.omap_set(entries); @@ -227,6 +239,13 @@ int RGWRadosSetOmapKeysCR::send_request() int RGWRadosSetOmapKeysCR::request_complete() { + stringstream s; + int r = cn->completion()->get_return_value(); + + s << "request complete; ret=" << r; + + set_status(s.str()); + return cn->completion()->get_return_value(); } @@ -239,6 +258,9 @@ RGWRadosGetOmapKeysCR::RGWRadosGetOmapKeysCR(RGWRados *_store, entries(_entries), max_entries(_max_entries), rval(0), pool(_pool), oid(_oid), cn(NULL) { + stringstream s; + s << "set omap keys dest=" << pool.name << "/" << oid << " marker=" << marker; + set_description(s.str()); } RGWRadosGetOmapKeysCR::~RGWRadosGetOmapKeysCR() @@ -253,6 +275,8 @@ int RGWRadosGetOmapKeysCR::send_request() { return r; } + set_status("send request"); + librados::ObjectReadOperation op; op.omap_get_vals(marker, max_entries, entries, &rval); @@ -272,6 +296,8 @@ RGWSimpleRadosLockCR::RGWSimpleRadosLockCR(RGWAsyncRadosProcessor *_async_rados, pool(_pool), oid(_oid), req(NULL) { + stringstream s; + s << "rados lock dest=" << pool << "/" << oid << " lock=" << lock_name << " cookie=" << cookie << " duration=" << duration; } RGWSimpleRadosLockCR::~RGWSimpleRadosLockCR() @@ -281,6 +307,7 @@ RGWSimpleRadosLockCR::~RGWSimpleRadosLockCR() int RGWSimpleRadosLockCR::send_request() { + set_status("sending request"); rgw_obj obj = rgw_obj(pool, oid); req = new RGWAsyncLockSystemObj(stack->create_completion_notifier(), store, NULL, obj, lock_name, cookie, duration); @@ -290,6 +317,9 @@ int RGWSimpleRadosLockCR::send_request() int RGWSimpleRadosLockCR::request_complete() { + stringstream s; + s << "request complete; ret=" << req->get_ret_status(); + set_status(s.str()); return req->get_ret_status(); } @@ -303,6 +333,9 @@ RGWSimpleRadosUnlockCR::RGWSimpleRadosUnlockCR(RGWAsyncRadosProcessor *_async_ra pool(_pool), oid(_oid), req(NULL) { + stringstream s; + s << "rados unlock dest=" << pool << "/" << oid << " lock=" << lock_name << " cookie=" << cookie; + set_description(s.str()); } RGWSimpleRadosUnlockCR::~RGWSimpleRadosUnlockCR() @@ -312,6 +345,8 @@ RGWSimpleRadosUnlockCR::~RGWSimpleRadosUnlockCR() int RGWSimpleRadosUnlockCR::send_request() { + set_status("sending request"); + rgw_obj obj = rgw_obj(pool, oid); req = new RGWAsyncUnlockSystemObj(stack->create_completion_notifier(), store, NULL, obj, lock_name, cookie); @@ -321,6 +356,9 @@ int RGWSimpleRadosUnlockCR::send_request() int RGWSimpleRadosUnlockCR::request_complete() { + stringstream s; + s << "request complete; ret=" << req->get_ret_status(); + set_status(s.str()); return req->get_ret_status(); } @@ -330,18 +368,22 @@ int RGWOmapAppend::operate() { reenter(this) { for (;;) { if (!has_product() && going_down) { + set_status("going down"); break; } + set_status("waiting for product"); yield wait_for_product(); yield { string entry; while (consume(&entry)) { + set_status(string("adding entry: ") + entry); entries[entry] = bufferlist(); if (entries.size() >= OMAP_APPEND_MAX_ENTRIES) { break; } } if (entries.size() >= OMAP_APPEND_MAX_ENTRIES || going_down) { + set_status(string("flushing to omap")); call(new RGWRadosSetOmapKeysCR(store, pool, oid, entries)); entries.clear(); } -- 2.39.5