From: Sage Weil Date: Tue, 18 Dec 2012 00:29:19 +0000 (-0800) Subject: Revert "objecter: don't use new tid when retrying notifies" X-Git-Tag: v0.56~46 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=1b67a43891c66475e08c44871b6dde54b2ba510c;p=ceph.git Revert "objecter: don't use new tid when retrying notifies" This reverts commit c3107009f66bc06b5e14c465142e14120f9a4412. This appears to be causing problems in the objecter by corrupting the stack. Until that is resolved, let's revert. Signed-off-by: Sage Weil --- diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc index e29d879133b4..6abada8f5d8f 100644 --- a/src/osdc/Objecter.cc +++ b/src/osdc/Objecter.cc @@ -267,7 +267,7 @@ void Objecter::send_linger(LingerOp *info) o->snapid = info->snap; // do not resend this; we will send a new op to reregister - o->should_resend = !info->is_watch; + o->should_resend = false; if (info->session) { int r = recalc_op_target(o); @@ -278,7 +278,7 @@ void Objecter::send_linger(LingerOp *info) if (info->register_tid) { // repeat send. cancel old registeration op, if any. - if (info->is_watch && ops.count(info->register_tid)) { + if (ops.count(info->register_tid)) { Op *o = ops[info->register_tid]; cancel_op(o); } @@ -335,11 +335,6 @@ void Objecter::unregister_linger(uint64_t linger_id) } } -/** - * Note that this is meant to handle a watch OR a notify, but not both in the same ObjectOperation. - * This is because watches need to be resent with a new tid on map changes, while notifies - * need to resend using the old tid. - */ tid_t Objecter::linger(const object_t& oid, const object_locator_t& oloc, ObjectOperation& op, snapid_t snap, bufferlist& inbl, bufferlist *poutbl, int flags, @@ -354,18 +349,6 @@ tid_t Objecter::linger(const object_t& oid, const object_locator_t& oloc, info->snap = snap; info->flags = flags; info->ops = op.ops; - bool saw_notify = false; - for (vector::const_iterator it = info->ops.begin(); - it != info->ops.end(); ++it) { - if (it->op.op == CEPH_OSD_OP_WATCH) - info->is_watch = true; - if (it->op.op == CEPH_OSD_OP_NOTIFY) - saw_notify = true; - if (info->is_watch) - assert(it->op.op != CEPH_OSD_OP_NOTIFY); - if (saw_notify) - assert(it->op.op != CEPH_OSD_OP_WATCH); - } info->inbl = inbl; info->poutbl = poutbl; info->pobjver = objver; diff --git a/src/osdc/Objecter.h b/src/osdc/Objecter.h index bba7e9944c21..baf600c53be5 100644 --- a/src/osdc/Objecter.h +++ b/src/osdc/Objecter.h @@ -815,14 +815,13 @@ public: tid_t register_tid; epoch_t map_dne_bound; - bool is_watch; LingerOp() : linger_id(0), flags(0), poutbl(NULL), pobjver(NULL), registered(false), on_reg_ack(NULL), on_reg_commit(NULL), session(NULL), session_item(this), register_tid(0), - map_dne_bound(0), is_watch(false) {} + map_dne_bound(0) {} // no copy! const LingerOp &operator=(const LingerOp& r);