From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 13917 invoked by alias); 20 Mar 2009 19:09:08 -0000 Received: (qmail 13904 invoked by alias); 20 Mar 2009 19:09:07 -0000 X-SWARE-Spam-Status: No, hits=-1.6 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_43,SPF_HELO_PASS X-Spam-Status: No, hits=-1.6 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_43,SPF_HELO_PASS X-Spam-Check-By: sourceware.org X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on bastion.fedora.phx.redhat.com Subject: cluster: RHEL5 - rgmanager: Clean up some bits during reconfig To: cluster-cvs-relay@redhat.com X-Project: Cluster Project X-Git-Module: cluster.git X-Git-Refname: refs/heads/RHEL5 X-Git-Reftype: branch X-Git-Oldrev: 3ae8d22b660dc6e2c778d6157afdb3785ef61a7e X-Git-Newrev: c9a1a4f5aad9a135ba135cc713a50ccaa2e4afa1 From: Lon Hohberger Message-Id: <20090320190814.0A12B1202D3@lists.fedorahosted.org> Date: Fri, 20 Mar 2009 19:09:00 -0000 X-Scanned-By: MIMEDefang 2.58 on 172.16.52.254 Mailing-List: contact cluster-cvs-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Post: List-Help: , Sender: cluster-cvs-owner@sourceware.org X-SW-Source: 2009-q1/txt/msg00849.txt.bz2 Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=c9a1a4f5aad9a135ba135cc713a50ccaa2e4afa1 Commit: c9a1a4f5aad9a135ba135cc713a50ccaa2e4afa1 Parent: 3ae8d22b660dc6e2c778d6157afdb3785ef61a7e Author: Lon Hohberger AuthorDate: Wed Mar 18 17:14:52 2009 -0400 Committer: Lon Hohberger CommitterDate: Fri Mar 20 15:07:40 2009 -0400 rgmanager: Clean up some bits during reconfig * Ignore additional reconfiguration events after the first for a given config version. * Always ensure we call init_resource_groups with the correct number of parameters. Signed-off-by: Lon Hohberger --- rgmanager/include/resgroup.h | 1 + rgmanager/src/daemons/groups.c | 24 +++++++++++++++++++----- rgmanager/src/daemons/main.c | 3 +-- rgmanager/src/daemons/nodeevent.c | 1 - rgmanager/src/daemons/rg_event.c | 10 ++-------- 5 files changed, 23 insertions(+), 16 deletions(-) diff --git a/rgmanager/include/resgroup.h b/rgmanager/include/resgroup.h index 41eea76..a4b53fe 100644 --- a/rgmanager/include/resgroup.h +++ b/rgmanager/include/resgroup.h @@ -131,6 +131,7 @@ int group_migrate(char *groupname, int target); int rg_status(const char *resgroupname); int group_op(char *rgname, int op); void rg_init(void); +int init_resource_groups(int reconfig, int do_init, int cfg_version); /* Basic service operations */ int svc_start(char *svcName, int req); diff --git a/rgmanager/src/daemons/groups.c b/rgmanager/src/daemons/groups.c index d973e73..2c23cd5 100644 --- a/rgmanager/src/daemons/groups.c +++ b/rgmanager/src/daemons/groups.c @@ -1579,7 +1579,7 @@ do_condstarts(void) int -check_config_update(int *new, int *old) +check_config_update(int *old, int *new) { int newver = 0, fd, ret = 0; char *val = NULL; @@ -1622,7 +1622,7 @@ dump_config_version(FILE *fp) resource group modification. */ int -init_resource_groups(int reconfigure, int do_init) +init_resource_groups(int reconfigure, int do_init, int new_config_version) { int fd, x, y, cnt; @@ -1634,8 +1634,17 @@ init_resource_groups(int reconfigure, int do_init) event_t *evp; char *val; - if (reconfigure) + if (reconfigure) { + x = 0; + pthread_mutex_lock(&config_mutex); + if (new_config_version == config_version) + x = 1; + pthread_mutex_unlock(&config_mutex); + if (x == 1) + return 0; clulog(LOG_NOTICE, "Reconfiguring\n"); + } + clulog(LOG_INFO, "Loading Service Data\n"); clulog(LOG_DEBUG, "Loading Resource Rules\n"); if (load_resource_rules(RESOURCE_ROOTDIR, &rulelist) != 0) { @@ -1708,13 +1717,18 @@ init_resource_groups(int reconfigure, int do_init) cnt += y; } } - clulog(LOG_DEBUG, "%d events defined\n", x); - + clulog(LOG_DEBUG, "%d events defined\n", y); /* Reconfiguration done */ ccs_unlock(fd); + if (reconfigure) { + pthread_mutex_lock(&config_mutex); + clulog(LOG_INFO, "Applying new configuration #%d\n", + config_version); + + pthread_mutex_unlock(&config_mutex); /* Calc tree deltas */ pthread_rwlock_wrlock(&resource_lock); resource_delta(&_resources, &reslist); diff --git a/rgmanager/src/daemons/main.c b/rgmanager/src/daemons/main.c index cd65c33..6a5a8b4 100644 --- a/rgmanager/src/daemons/main.c +++ b/rgmanager/src/daemons/main.c @@ -50,7 +50,6 @@ int configure_rgmanager(int ccsfd, int debug); void node_event(int, int, int, int); void node_event_q(int, int, int, int); int daemon_init(char *); -int init_resource_groups(int, int); void kill_resource_groups(void); void set_my_id(int); void flag_shutdown(int sig); @@ -1065,7 +1064,7 @@ main(int argc, char **argv) configure_rgmanager(-1, debug); clulog(LOG_NOTICE, "Resource Group Manager Starting\n"); - if (init_resource_groups(0, do_init) != 0) { + if (init_resource_groups(0, do_init, 0) != 0) { clulog(LOG_CRIT, "#8: Couldn't initialize services\n"); return -1; } diff --git a/rgmanager/src/daemons/nodeevent.c b/rgmanager/src/daemons/nodeevent.c index 078dbf3..95418c2 100644 --- a/rgmanager/src/daemons/nodeevent.c +++ b/rgmanager/src/daemons/nodeevent.c @@ -46,7 +46,6 @@ static int transition_throttling = 5; int ne_queue_request(int local, int nodeid, int state); void hard_exit(void); -int init_resource_groups(int); void flag_shutdown(int sig); void flag_reconfigure(int sig); diff --git a/rgmanager/src/daemons/rg_event.c b/rgmanager/src/daemons/rg_event.c index d2c7cd3..9ac9de9 100644 --- a/rgmanager/src/daemons/rg_event.c +++ b/rgmanager/src/daemons/rg_event.c @@ -54,7 +54,6 @@ static int _xid = 0; static event_master_t *mi = NULL; void hard_exit(void); -int init_resource_groups(int); void flag_shutdown(int sig); void flag_reconfigure(int sig); @@ -111,7 +110,7 @@ node_event(int local, int nodeID, int nodeStatus, } if (!rg_initialized()) { - if (init_resource_groups(0) != 0) { + if (init_resource_groups(0, 0, 0) != 0) { clulog(LOG_ERR, "#36: Cannot initialize services\n"); hard_exit(); @@ -424,12 +423,7 @@ _event_thread_f(void __attribute__ ((unused)) *arg) pthread_mutex_unlock(&event_queue_mutex); if (ev->ev_type == EVENT_CONFIG) { - /* - clulog(LOG_NOTICE, "Config Event: %d -> %d\n", - ev->ev.config.cfg_oldversion, - ev->ev.config.cfg_version); - */ - init_resource_groups(1); + init_resource_groups(1, 1, ev->ev.config.cfg_version); free(ev); continue; }