Hello community,
here is the log from the commit of package pacemaker
checked in at Sun Nov 23 09:23:00 CET 2008.
--------
--- pacemaker/pacemaker.changes 2008-11-21 14:01:39.000000000 +0100
+++ /mounts/work_src_done/STABLE/pacemaker/pacemaker.changes 2008-11-21 19:59:28.000000000 +0100
@@ -1,0 +2,7 @@
+Fri Nov 21 19:55:34 CET 2008 - abeekhof@suse.de
+
+- Update source tarball to revision: 27be064e0907
+ + High: ais: Repair and streamline service load now that OpenAIS startup functions correctly
+- Requires and is related to sr3936: Fix Bug bnc#444376 - openais segafults in lcr_ifact_release during shutdown
+
+-------------------------------------------------------------------
calling whatdependson for head-i586
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ pacemaker.spec ++++++
--- /var/tmp/diff_new_pack.RF5703/_old 2008-11-23 09:15:16.000000000 +0100
+++ /var/tmp/diff_new_pack.RF5703/_new 2008-11-23 09:15:16.000000000 +0100
@@ -37,7 +37,7 @@
Name: pacemaker
Summary: The Pacemaker scalable High-Availability cluster resource manager
Version: 1.0.1
-Release: 5
+Release: 6
License: GPL v2 or later; LGPL v2.1 or later
Url: http://www.clusterlabs.org
Group: Productivity/Clustering/HA
@@ -299,6 +299,10 @@
%changelog
* Fri Nov 21 2008 abeekhof@suse.de
+- Update source tarball to revision: 27be064e0907
+ + High: ais: Repair and streamline service load now that OpenAIS startup functions correctly
+- Requires and is related to sr3936: Fix Bug bnc#444376 - openais segafults in lcr_ifact_release during shutdown
+* Fri Nov 21 2008 abeekhof@suse.de
- Update source tarball to revision: 61d0af5c31c0
+ High: cib: Ensure configuration updates contain the correct values of admin_epoch
Otherwise the configuration can not be kept in sync across the cluster
++++++ pacemaker.tar.gz ++++++
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/pacemaker/crmd/join_dc.c new/pacemaker/crmd/join_dc.c
--- old/pacemaker/crmd/join_dc.c 2008-11-21 12:38:56.000000000 +0100
+++ new/pacemaker/crmd/join_dc.c 2008-11-21 18:42:50.000000000 +0100
@@ -352,7 +352,13 @@
}
}
- if(join_node == NULL || crm_is_member_active(join_node) == FALSE) {
+ if(join_id != current_join_id) {
+ crm_debug("Invalid response from %s: join-%d vs. join-%d",
+ join_from, join_id, current_join_id);
+ check_join_state(cur_state, __FUNCTION__);
+ return;
+
+ } else if(join_node == NULL || crm_is_member_active(join_node) == FALSE) {
crm_err("Node %s is not a member", join_from);
ack_nack_bool = FALSE;
@@ -360,12 +366,6 @@
crm_err("Generation was NULL");
ack_nack_bool = FALSE;
- } else if(join_id != current_join_id) {
- crm_debug("Invalid response from %s: join-%d vs. join-%d",
- join_from, join_id, current_join_id);
- check_join_state(cur_state, __FUNCTION__);
- return;
-
} else if(max_generation_xml == NULL) {
max_generation_xml = copy_xml(generation);
max_generation_from = crm_strdup(join_from);
@@ -622,6 +622,7 @@
const char *join_to = NULL;
const char *join_state = NULL;
xmlNode *acknak = NULL;
+ crm_node_t *join_node = NULL;
if(key == NULL || value == NULL) {
return TRUE;
@@ -633,6 +634,17 @@
/* make sure the node exists in the config section */
create_node_entry(join_to, join_to, NORMALNODE);
+ join_node = crm_get_peer(0, join_to);
+ if(crm_is_member_active(join_node) == FALSE) {
+ /*
+ * NACK'ing nodes that the membership layer doesn't know about yet
+ * simply creates more churn
+ * Better to leave them waiting and let the join restart when
+ * the new membership event comes in
+ */
+ return TRUE;
+ }
+
/* send the ack/nack to the node */
acknak = create_request(
CRM_OP_JOIN_ACKNAK, NULL, join_to,
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/pacemaker/.hg_archival.txt new/pacemaker/.hg_archival.txt
--- old/pacemaker/.hg_archival.txt 2008-11-21 12:38:56.000000000 +0100
+++ new/pacemaker/.hg_archival.txt 2008-11-21 18:42:50.000000000 +0100
@@ -1,2 +1,2 @@
repo: 8448b17e67437947c48c639c6faa4371c4a14b3b
-node: 8c15f8fb026f12689859740f416a86d5be982451
+node: 27be064e090742359bbdd1914f9d7dd363c8e0d8
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/pacemaker/lib/ais/plugin.c new/pacemaker/lib/ais/plugin.c
--- old/pacemaker/lib/ais/plugin.c 2008-11-21 12:38:56.000000000 +0100
+++ new/pacemaker/lib/ais/plugin.c 2008-11-21 18:42:50.000000000 +0100
@@ -48,9 +48,7 @@
#include
#include
-#ifdef AIS_COROSYNC
-struct corosync_api_v1 *crm_api = NULL;
-#endif
+plugin_init_type *crm_api = NULL;
int use_mgmtd = 0;
int plugin_log_level = LOG_DEBUG;
@@ -266,81 +264,18 @@
#include
#endif
-struct objdb_iface_ver0 *crm_objdb = NULL;
-
-static unsigned int get_config_section(char *name, unsigned int *top_handle)
-{
- int rc = 0;
- unsigned int objdb_handle = 0;
- *top_handle = 0;
-
-#ifdef AIS_COROSYNC
- crm_objdb->object_find_create(OBJECT_PARENT_HANDLE, name, strlen(name), top_handle);
- rc = crm_objdb->object_find_next (*top_handle, &objdb_handle);
-#endif
-
-#ifdef AIS_WHITETANK
- crm_objdb->object_find_reset (OBJECT_PARENT_HANDLE);
- rc = crm_objdb->object_find(OBJECT_PARENT_HANDLE, name, strlen (name), &objdb_handle);
-#endif
-
- if(rc < 0) {
- ais_info("No additional configuration supplied for: %s", name);
- objdb_handle = 0;
- } else {
- ais_info("Processing additional %s options...", name);
- }
- return objdb_handle;
-}
-
-
/* Create our own local copy of the config so we can navigate it */
static void process_ais_conf(void)
{
- int rc = 0;
- void *objdb_p = NULL;
- void *config_p = NULL;
char *value = NULL;
- char *config_iface = NULL;
- char *error_string = NULL;
unsigned int top_handle = 0;
- unsigned int objdb_handle = 0;
- unsigned int config_handle = 0;
- unsigned int config_version = 0;
- struct config_iface_ver0 *config = NULL;
+ unsigned int local_handle = 0;
ais_info("Reading configure");
- /*
- * Load the object database interface
- */
- rc = lcr_ifact_reference(&objdb_handle, "objdb", 0, &objdb_p, 0);
- AIS_CHECK(rc != -1, ais_err("Error loading configuration interface"); return);
-
- crm_objdb = (struct objdb_iface_ver0 *)objdb_p;
- crm_objdb->objdb_init();
+ top_handle = config_find_init(crm_api, "logging");
+ local_handle = config_find_next(crm_api, "logging", top_handle);
- /*
- * Bootstrap in the default configuration parser or use
- * the openais default built in parser if the configuration parser
- * isn't overridden
- */
- config_iface = getenv("OPENAIS_DEFAULT_CONFIG_IFACE");
- if (!config_iface) {
- config_iface = "aisparser";
- }
-
- rc = lcr_ifact_reference (
- &config_handle, config_iface, config_version, &config_p, 0);
-
- config = (struct config_iface_ver0 *)config_p;
- AIS_CHECK(rc != -1, return);
-
- rc = config->config_readconfig(crm_objdb, &error_string);
- AIS_CHECK(rc != -1, ais_err("Error reading configuration: %s", error_string); return);
-
- objdb_handle = get_config_section("logging", &top_handle);
-
- get_config_opt(objdb_handle, "debug", &value, "on");
+ get_config_opt(crm_api, local_handle, "debug", &value, "on");
if(ais_get_boolean(value)) {
plugin_log_level = LOG_DEBUG;
setenv("HA_debug", "1", 1);
@@ -350,18 +285,18 @@
setenv("HA_debug", "0", 1);
}
- get_config_opt(objdb_handle, "to_syslog", &value, "on");
+ get_config_opt(crm_api, local_handle, "to_syslog", &value, "on");
if(ais_get_boolean(value)) {
- get_config_opt(objdb_handle, "syslog_facility", &value, "daemon");
+ get_config_opt(crm_api, local_handle, "syslog_facility", &value, "daemon");
setenv("HA_logfacility", value, 1);
} else {
setenv("HA_logfacility", "none", 1);
}
- get_config_opt(objdb_handle, "to_file", &value, "off");
+ get_config_opt(crm_api, local_handle, "to_file", &value, "off");
if(ais_get_boolean(value)) {
- get_config_opt(objdb_handle, "logfile", &value, NULL);
+ get_config_opt(crm_api, local_handle, "logfile", &value, NULL);
if(value == NULL) {
ais_err("Logging to a file requested but no log file specified");
@@ -370,41 +305,32 @@
}
}
-#ifdef AIS_COROSYNC
- crm_objdb->object_find_destroy (objdb_handle);
-#endif
+ config_find_done(crm_api, local_handle);
- objdb_handle = get_config_section("service", &top_handle);
- while(objdb_handle) {
+ top_handle = config_find_init(crm_api, "service");
+ local_handle = config_find_next(crm_api, "service", top_handle);
+ while(local_handle) {
value = NULL;
- crm_objdb->object_key_get(objdb_handle, "name", strlen("name"), &value, NULL);
+ crm_api->object_key_get(local_handle, "name", strlen("name"), &value, NULL);
if(ais_str_eq("pacemaker", value)) {
break;
}
-#ifdef AIS_COROSYNC
- rc = crm_objdb->object_find_next (top_handle, &objdb_handle);
-#endif
-#ifdef AIS_WHITETANK
- rc = crm_objdb->object_find(OBJECT_PARENT_HANDLE, "service", strlen ("service"), &objdb_handle);
-#endif
- if(rc < 0) {
- objdb_handle = 0;
- }
+ local_handle = config_find_next(crm_api, "service", top_handle);
}
- get_config_opt(objdb_handle, "expected_nodes", &value, "2");
+ get_config_opt(crm_api, local_handle, "expected_nodes", &value, "2");
setenv("HA_expected_nodes", value, 1);
- get_config_opt(objdb_handle, "expected_votes", &value, "2");
+ get_config_opt(crm_api, local_handle, "expected_votes", &value, "2");
setenv("HA_expected_votes", value, 1);
- get_config_opt(objdb_handle, "quorum_votes", &value, "1");
+ get_config_opt(crm_api, local_handle, "quorum_votes", &value, "1");
setenv("HA_votes", value, 1);
- get_config_opt(objdb_handle, "use_logd", &value, "no");
+ get_config_opt(crm_api, local_handle, "use_logd", &value, "no");
setenv("HA_use_logd", value, 1);
- get_config_opt(objdb_handle, "use_mgmtd", &value, "no");
+ get_config_opt(crm_api, local_handle, "use_mgmtd", &value, "no");
if(ais_get_boolean(value) == FALSE) {
int lpc = 0;
for (; lpc < SIZEOF(crm_children); lpc++) {
@@ -416,9 +342,7 @@
}
}
-#ifdef AIS_COROSYNC
- crm_objdb->object_find_destroy (objdb_handle);
-#endif
+ config_find_done(crm_api, local_handle);
}
@@ -544,18 +468,15 @@
#include
#include
-int crm_exec_init_fn(plugin_init_type *corosync_api)
+int crm_exec_init_fn(plugin_init_type *init_with)
{
int lpc = 0;
int start_seq = 1;
static gboolean need_init = TRUE;
static int max = SIZEOF(crm_children);
- ENTER("");
-
-#ifdef AIS_COROSYNC
- crm_api = corosync_api;
-#endif
+ ENTER("");
+ crm_api = init_with;
if(need_init) {
struct passwd *pwentry = NULL;
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/pacemaker/lib/ais/utils.c new/pacemaker/lib/ais/utils.c
--- old/pacemaker/lib/ais/utils.c 2008-11-21 12:38:56.000000000 +0100
+++ new/pacemaker/lib/ais/utils.c 2008-11-21 18:42:50.000000000 +0100
@@ -531,9 +531,50 @@
return new_str;
}
-extern struct objdb_iface_ver0 *crm_objdb;
+unsigned int config_find_init(plugin_init_type *config, char *name)
+{
+ unsigned int local_handle = 0;
+#ifdef AIS_COROSYNC
+ config->object_find_create(OBJECT_PARENT_HANDLE, name, strlen(name), &local_handle);
+#endif
+
+#ifdef AIS_WHITETANK
+ config->object_find_reset (OBJECT_PARENT_HANDLE);
+#endif
+ return local_handle;
+}
+
+unsigned int config_find_next(plugin_init_type *config, char *name, unsigned int top_handle)
+{
+ int rc = 0;
+ unsigned int local_handle = 0;
+
+#ifdef AIS_COROSYNC
+ rc = config->object_find_next (top_handle, &local_handle);
+#endif
+
+#ifdef AIS_WHITETANK
+ rc = config->object_find(OBJECT_PARENT_HANDLE, name, strlen (name), &local_handle);
+#endif
+
+ if(rc < 0) {
+ ais_info("No additional configuration supplied for: %s", name);
+ local_handle = 0;
+ } else {
+ ais_info("Processing additional %s options...", name);
+ }
+ return local_handle;
+}
+
+void config_find_done(plugin_init_type *config, unsigned int local_handle)
+{
+#ifdef AIS_COROSYNC
+ config->object_find_destroy (local_handle);
+#endif
+}
int get_config_opt(
+ plugin_init_type *config,
unsigned int object_service_handle,
char *key, char **value, const char *fallback)
{
@@ -541,7 +582,7 @@
*value = NULL;
if(object_service_handle > 0) {
- crm_objdb->object_key_get(
+ config->object_key_get(
object_service_handle, key, strlen(key), (void**)value, NULL);
}
@@ -570,19 +611,6 @@
return -1;
}
-int objdb_get_int(
- unsigned int object_service_handle,
- char *key, unsigned int *int_value, const char *fallback)
-{
- char *value = NULL;
- get_config_opt(object_service_handle, key, &value, fallback);
- if (value) {
- *int_value = atoi(value);
- return 0;
- }
- return -1;
-}
-
int
ais_get_boolean(const char * value)
{
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/pacemaker/lib/ais/utils.h new/pacemaker/lib/ais/utils.h
--- old/pacemaker/lib/ais/utils.h 2008-11-21 12:38:56.000000000 +0100
+++ new/pacemaker/lib/ais/utils.h 2008-11-21 18:42:50.000000000 +0100
@@ -114,11 +114,12 @@
extern void send_member_notification(void);
extern void log_ais_message(int level, AIS_Message *msg);
-extern int objdb_get_int(unsigned int object_service_handle,
- char *key, unsigned int *int_value, const char *fallback);
-
-extern int get_config_opt(unsigned int object_service_handle,
- char *key, char **value, const char *fallback);
+extern unsigned int config_find_init(plugin_init_type *config, char *name);
+extern unsigned int config_find_next(plugin_init_type *config, char *name, unsigned int top_handle);
+extern void config_find_done(plugin_init_type *config, unsigned int local_handle);
+extern int get_config_opt(plugin_init_type *config,
+ unsigned int object_service_handle,
+ char *key, char **value, const char *fallback);
extern int ais_get_boolean(const char *s);
diff -urN --exclude=CVS --exclude=.cvsignore --exclude=.svn --exclude=.svnignore old/pacemaker/lib/common/membership.c new/pacemaker/lib/common/membership.c
--- old/pacemaker/lib/common/membership.c 2008-11-21 12:38:56.000000000 +0100
+++ new/pacemaker/lib/common/membership.c 2008-11-21 18:42:50.000000000 +0100
@@ -49,7 +49,7 @@
gboolean crm_is_member_active(const crm_node_t *node)
{
- if(safe_str_eq(node->state, CRM_NODE_MEMBER)) {
+ if(node && safe_str_eq(node->state, CRM_NODE_MEMBER)) {
return TRUE;
}
return FALSE;
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Remember to have fun...
--
To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org
For additional commands, e-mail: opensuse-commit+help@opensuse.org