ctdb-locking: Update current lock statistics when lock is scheduled
authorAmitay Isaacs <amitay@gmail.com>
Fri, 15 Nov 2013 07:36:09 +0000 (18:36 +1100)
committerMichael Adam <obnox@samba.org>
Wed, 27 Nov 2013 17:46:16 +0000 (18:46 +0100)
When a child process is created for a lock request, the current locks
statistics should be updated immediately.  This will provide accurate
information on number of active lock requests.

Signed-off-by: Amitay Isaacs <amitay@gmail.com>
Reviewed-by: Michael Adam <obnox@samba.org>
ctdb/server/ctdb_lock.c

index 1c333966060c3f00515a7007bf2fabe6d287d9a4..4f9e19bd28e65875e73d00b1cd635701cb68e075 100644 (file)
@@ -466,13 +466,11 @@ static void ctdb_lock_handler(struct tevent_context *ev,
 
        if (locked) {
                if (lock_ctx->ctdb_db) {
-                       CTDB_INCREMENT_STAT(lock_ctx->ctdb, locks.num_current);
                        CTDB_INCREMENT_STAT(lock_ctx->ctdb, locks.buckets[id]);
                        CTDB_UPDATE_LATENCY(lock_ctx->ctdb, lock_ctx->ctdb_db,
                                            lock_type_str[lock_ctx->type], locks.latency,
                                            lock_ctx->start_time);
 
-                       CTDB_INCREMENT_DB_STAT(lock_ctx->ctdb_db, locks.num_current);
                        CTDB_UPDATE_DB_LATENCY(lock_ctx->ctdb_db, lock_type_str[lock_ctx->type], locks.latency, t);
                        CTDB_INCREMENT_DB_STAT(lock_ctx->ctdb_db, locks.buckets[id]);
                }
@@ -877,6 +875,8 @@ static void ctdb_lock_schedule(struct ctdb_context *ctdb)
        DLIST_ADD_END(ctdb->lock_current, lock_ctx, NULL);
        if (lock_ctx->ctdb_db) {
                lock_ctx->ctdb_db->lock_num_current++;
+               CTDB_INCREMENT_STAT(lock_ctx->ctdb, locks.num_current);
+               CTDB_INCREMENT_DB_STAT(lock_ctx->ctdb_db, locks.num_current);
        }
 }