summaryrefslogtreecommitdiff
path: root/ctdb
diff options
context:
space:
mode:
authorAmitay Isaacs <amitay@gmail.com>2017-05-18 10:15:01 +1000
committerAmitay Isaacs <amitay@samba.org>2017-05-24 17:03:27 +0200
commita50b25d0ebbe731a766f8d2ce1924b34d6041668 (patch)
tree8cbb532f5c042893fc19bc12536c360fc0fb93c4 /ctdb
parent02a76d86db0cbe79fcaf1a500630e24d961fa149 (diff)
downloadsamba-a50b25d0ebbe731a766f8d2ce1924b34d6041668.tar.gz
Revert "ctdb-readonly: Avoid a tight loop waiting for revoke to complete"
BUG: https://bugzilla.samba.org/show_bug.cgi?id=12697 This reverts commit ad758cb869ac83534993caa212abc9fe9905ec68. This is an incomplete fix and introduces a regression. Signed-off-by: Amitay Isaacs <amitay@gmail.com> Reviewed-by: Martin Schwenke <martin@meltin.net>
Diffstat (limited to 'ctdb')
-rw-r--r--ctdb/server/ctdb_call.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/ctdb/server/ctdb_call.c b/ctdb/server/ctdb_call.c
index 3b84e754008..ed0817db1cb 100644
--- a/ctdb/server/ctdb_call.c
+++ b/ctdb/server/ctdb_call.c
@@ -1609,6 +1609,7 @@ static int deferred_call_destructor(struct revokechild_deferred_call *deferred_c
{
struct ctdb_context *ctdb = deferred_call->ctdb;
struct revokechild_requeue_handle *requeue_handle = talloc(ctdb, struct revokechild_requeue_handle);
+ struct ctdb_req_call_old *c = (struct ctdb_req_call_old *)deferred_call->hdr;
requeue_handle->ctdb = ctdb;
requeue_handle->hdr = deferred_call->hdr;
@@ -1616,12 +1617,9 @@ static int deferred_call_destructor(struct revokechild_deferred_call *deferred_c
requeue_handle->ctx = deferred_call->ctx;
talloc_steal(requeue_handle, requeue_handle->hdr);
- /* Always delay revoke requests. Either wait for the read/write
- * operation to complete, or if revoking failed wait for recovery to
- * complete
- */
+ /* when revoking, any READONLY requests have 1 second grace to let read/write finish first */
tevent_add_timer(ctdb->ev, requeue_handle,
- timeval_current_ofs(1, 0),
+ timeval_current_ofs(c->flags & CTDB_WANT_READONLY ? 1 : 0, 0),
deferred_call_requeue, requeue_handle);
return 0;