The branch, 1.2.40 has been updated
       via  c51154b79be94198324c321aaaa037045bb85cd9 (commit)
      from  0a52799f85de9c9dc0ac8ae62e7f2829a30eb8bb (commit)

http://gitweb.samba.org/?p=ctdb.git;a=shortlog;h=1.2.40


- Log -----------------------------------------------------------------
commit c51154b79be94198324c321aaaa037045bb85cd9
Author: Ronnie Sahlberg <ronniesahlb...@gmail.com>
Date:   Fri Mar 2 10:52:00 2012 +1100

    READONLY: only send a control to schedule fast-vacuuming from child context 
iff we have a connection open to the main daemon
    
    there are some child processes where we do not create a connection to the 
main daemon (switch_from_server_to_client()) because it is expensive to set up 
and we normally might not need to talk to the daemon at all via a domainsocket.
    but we might want to still call to ctdb_ltdb_store() from such chil 
processes.

-----------------------------------------------------------------------

Summary of changes:
 client/ctdb_client.c   |    4 +++-
 common/ctdb_util.c     |    1 +
 include/ctdb_private.h |    3 +++
 server/ctdb_vacuum.c   |    8 ++++++++
 4 files changed, 15 insertions(+), 1 deletions(-)


Changeset truncated at 500 lines:

diff --git a/client/ctdb_client.c b/client/ctdb_client.c
index 487989c..8b9df42 100644
--- a/client/ctdb_client.c
+++ b/client/ctdb_client.c
@@ -4087,7 +4087,9 @@ int switch_from_server_to_client(struct ctdb_context 
*ctdb, const char *fmt, ...
                return -1;
        }
 
-        return 0;
+       ctdb->can_send_controls = true;
+
+       return 0;
 }
 
 /*
diff --git a/common/ctdb_util.c b/common/ctdb_util.c
index 1ff4c1f..061c16d 100644
--- a/common/ctdb_util.c
+++ b/common/ctdb_util.c
@@ -346,6 +346,7 @@ pid_t ctdb_fork(struct ctdb_context *ctdb)
                if (ctdb->do_setsched) {
                        ctdb_restore_scheduler(ctdb);
                }
+               ctdb->can_send_controls = false;
        }
        return pid;
 }
diff --git a/include/ctdb_private.h b/include/ctdb_private.h
index 7d0a6d8..8180722 100644
--- a/include/ctdb_private.h
+++ b/include/ctdb_private.h
@@ -499,6 +499,9 @@ struct ctdb_context {
 
        /* list of event script callback functions that are active */
        struct event_script_callback *script_callbacks;
+
+       /* if we are a child process, do we have a domain socket to send 
controls on */
+       bool can_send_controls;
 };
 
 struct ctdb_db_context {
diff --git a/server/ctdb_vacuum.c b/server/ctdb_vacuum.c
index 181393b..bb71be7 100644
--- a/server/ctdb_vacuum.c
+++ b/server/ctdb_vacuum.c
@@ -1371,6 +1371,14 @@ int32_t ctdb_local_schedule_for_deletion(struct 
ctdb_db_context *ctdb_db,
                return ret;
        }
 
+       /* if we dont have a connection to the daemon we can not send
+          a control. For example sometimes from update_record control child
+          process.
+       */
+       if (!ctdb_db->ctdb->can_send_controls) {
+               return -1;
+       }
+
        /* child process: send the main daemon a control */
 
        indata.dsize = offsetof(struct ctdb_control_schedule_for_deletion, key) 
+ key.dsize;


-- 
CTDB repository

Reply via email to