diff options
author | Sage Weil <sage@inktank.com> | 2012-12-17 16:29:19 -0800 |
---|---|---|
committer | Sage Weil <sage@inktank.com> | 2012-12-17 16:29:19 -0800 |
commit | 1b67a43891c66475e08c44871b6dde54b2ba510c (patch) | |
tree | b5fc09fc3d6024ccc04e8ea9a86c9acb44776924 | |
parent | bdc998ef4c6c5967e1e807584dac2f6d69bc5a5a (diff) | |
download | ceph-1b67a43891c66475e08c44871b6dde54b2ba510c.tar.gz |
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 <sage@inktank.com>
-rw-r--r-- | src/osdc/Objecter.cc | 21 | ||||
-rw-r--r-- | src/osdc/Objecter.h | 3 |
2 files changed, 3 insertions, 21 deletions
diff --git a/src/osdc/Objecter.cc b/src/osdc/Objecter.cc index e29d879133b..6abada8f5d8 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<OSDOp>::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 bba7e9944c2..baf600c53be 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); |