]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
Revert "objecter: don't use new tid when retrying notifies"
authorSage Weil <sage@inktank.com>
Tue, 18 Dec 2012 00:29:19 +0000 (16:29 -0800)
committerSage Weil <sage@inktank.com>
Tue, 18 Dec 2012 00:29:19 +0000 (16:29 -0800)
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>
src/osdc/Objecter.cc
src/osdc/Objecter.h

index e29d879133b427d8831b0907dde93f208f999f58..6abada8f5d8fffc030363bc7a60fbf0529e78bf2 100644 (file)
@@ -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;
index bba7e9944c213eb782062e05dfe96d700ed03309..baf600c53be5b64899b90e7d989245bb12e63b59 100644 (file)
@@ -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);