locking: Set lock helper path once
authorAmitay Isaacs <amitay@gmail.com>
Wed, 8 May 2013 03:45:55 +0000 (13:45 +1000)
committerAmitay Isaacs <amitay@gmail.com>
Thu, 23 May 2013 23:06:40 +0000 (09:06 +1000)
Signed-off-by: Amitay Isaacs <amitay@gmail.com>
server/ctdb_lock.c

index d2482282aa456b77160da60322eb0c40b61266d9..77b4da8885734111c23921fcf623c0f7bf269219 100644 (file)
@@ -635,9 +635,21 @@ static void ctdb_lock_schedule(struct ctdb_context *ctdb)
        int ret;
        TALLOC_CTX *tmp_ctx;
        const char *helper = BINDIR "/ctdb_lock_helper";
-       const char *prog;
+       static const char *prog = NULL;
        char **args;
 
+       if (prog == NULL) {
+               const char *t;
+
+               t = getenv("CTDB_LOCK_HELPER");
+               if (t != NULL) {
+                       prog = talloc_strdup(ctdb, t);
+               } else {
+                       prog = talloc_strdup(ctdb, helper);
+               }
+               CTDB_NO_MEMORY_VOID(ctdb, prog);
+       }
+
        if (ctdb->lock_num_current >= MAX_LOCK_PROCESSES_PER_DB) {
                return;
        }
@@ -699,11 +711,6 @@ static void ctdb_lock_schedule(struct ctdb_context *ctdb)
                return;
        }
 
-       prog = getenv("CTDB_LOCK_HELPER");
-       if (prog == NULL) {
-               prog = helper;
-       }
-
        lock_ctx->child = ctdb_fork(ctdb);
 
        if (lock_ctx->child == (pid_t)-1) {