public inbox for cluster-cvs@sourceware.org
help / color / mirror / Atom feed
* cluster: RHEL5 - rgmanager: Clean up some bits during reconfig
@ 2009-03-20 19:09 Lon Hohberger
0 siblings, 0 replies; only message in thread
From: Lon Hohberger @ 2009-03-20 19:09 UTC (permalink / raw)
To: cluster-cvs-relay
Gitweb: http://git.fedorahosted.org/git/cluster.git?p=cluster.git;a=commitdiff;h=c9a1a4f5aad9a135ba135cc713a50ccaa2e4afa1
Commit: c9a1a4f5aad9a135ba135cc713a50ccaa2e4afa1
Parent: 3ae8d22b660dc6e2c778d6157afdb3785ef61a7e
Author: Lon Hohberger <lhh@redhat.com>
AuthorDate: Wed Mar 18 17:14:52 2009 -0400
Committer: Lon Hohberger <lhh@redhat.com>
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 <lhh@redhat.com>
---
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;
}
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2009-03-20 19:09 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-03-20 19:09 cluster: RHEL5 - rgmanager: Clean up some bits during reconfig Lon Hohberger
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).