Your message dated Wed, 12 Oct 2016 14:37:52 +0200
with message-id <87y41tyc7z....@lant.ki.iif.hu>
and subject line Re: pacemaker: attrd never updates CIB when attributes are 
updated more frequently than their timeout setting
has caused the Debian Bug report #641730,
regarding pacemaker: attrd never updates CIB when attributes are updated more 
frequently than their timeout setting
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact ow...@bugs.debian.org
immediately.)


-- 
641730: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=641730
Debian Bug Tracking System
Contact ow...@bugs.debian.org with problems
--- Begin Message ---
Package: pacemaker
Version: 1.0.9.1+hg15626-1
Severity: normal
Tags: patch

Whenever the attrd_local_callback routine in attrd.c is invoked with
an updated value which differs from either the current value of
the corresponding hash entry or its stored value it will copy
the updated value to the current value of this hash entry, kill
an existing scheduled CIB updated and schedule a new one. If the
frequency of these updates is higher than the CIB update frequency
resulting from the hash entry timeout, the CIB update will thus
never be executed because the corresponding will always be killed
and rescheduled before it fired.

-- System Information:
Debian Release: 6.0.2
  APT prefers stable
  APT policy: (500, 'stable')
Architecture: amd64 (x86_64)

Kernel: Linux 2.6.36.4-v3 (SMP w/4 CPU cores)
Locale: LANG=C, LC_CTYPE=C (charmap=ANSI_X3.4-1968)
Shell: /bin/sh linked to /bin/bash
--- pacemaker-deb/tools/attrd.c	14 Sep 2011 21:04:04 -0000	1.1.1.1
+++ pacemaker-deb/tools/attrd.c	14 Sep 2011 21:17:17 -0000	1.2
@@ -764,44 +764,47 @@ attrd_local_callback(xmlNode * msg)
 	
 	crm_debug("Supplied: %s, Current: %s, Stored: %s",
 		  value, hash_entry->value, hash_entry->stored_value);
-	
-	if(safe_str_eq(value, hash_entry->value)
-	   && safe_str_eq(value, hash_entry->stored_value)) {
-	    crm_debug_2("Ignoring non-change");
-	    return;
-
-	} else if(value) {
-	    int offset = 1;
-	    int int_value = 0;
-	    int value_len = strlen(value);
-	    if(value_len < (plus_plus_len + 2)
-	       || value[plus_plus_len] != '+'
-	       || (value[plus_plus_len+1] != '+' && value[plus_plus_len+1] != '=')) {
-		goto set_unexpanded;
-	    }
-	    
-	    int_value = char2score(hash_entry->value);
-	    if(value[plus_plus_len+1] != '+') {
-		const char *offset_s = value+(plus_plus_len+2);
-		offset = char2score(offset_s);
-	    }
-	    int_value += offset;
+
+	if (!safe_str_eq(value, hash_entry->value)) {
+		if (value) {
+			int offset = 1;
+			int int_value = 0;
+			int value_len = strlen(value);
+			if(value_len < (plus_plus_len + 2)
+			   || value[plus_plus_len] != '+'
+			   || (value[plus_plus_len+1] != '+' && value[plus_plus_len+1] != '=')) {
+				goto set_unexpanded;
+			}
 	    
-	    if(int_value > INFINITY) {
-		int_value = INFINITY;
-	    }
+			int_value = char2score(hash_entry->value);
+			if(value[plus_plus_len+1] != '+') {
+				const char *offset_s = value+(plus_plus_len+2);
+				offset = char2score(offset_s);
+			}
+			int_value += offset;
+			
+			if(int_value > INFINITY) {
+				int_value = INFINITY;
+			}
 	    
-	    crm_info("Expanded %s=%s to %d", attr, value, int_value);
-	    crm_xml_add_int(msg, F_ATTRD_VALUE, int_value);
-	    value = crm_element_value(msg, F_ATTRD_VALUE);
-	}
-
-  set_unexpanded:
-	crm_free(hash_entry->value);
-	hash_entry->value = NULL;
-	if(value != NULL) {
-		hash_entry->value = crm_strdup(value);
-		crm_debug("New value of %s is %s", attr, value);
+			crm_info("Expanded %s=%s to %d", attr, value, int_value);
+			crm_xml_add_int(msg, F_ATTRD_VALUE, int_value);
+			value = crm_element_value(msg, F_ATTRD_VALUE);
+		}
+		
+	set_unexpanded:
+		crm_free(hash_entry->value);
+		hash_entry->value = NULL;
+		if(value != NULL) {
+			hash_entry->value = crm_strdup(value);
+			crm_debug("New value of %s is %s", attr, value);
+		}
+	} else if (safe_str_eq(value, hash_entry->stored_value)) {
+		crm_debug_2("Ignoring non-change");
+		return;
+	} else if (hash_entry->timer_id != 0) {
+		crm_debug_2("Update already scheduled");
+		return;
 	}
 	
 	stop_attrd_timer(hash_entry);
--- pacemaker-deb/tools/attrd.c	14 Sep 2011 21:04:04 -0000	1.1.1.1
+++ pacemaker-deb/tools/attrd.c	14 Sep 2011 21:17:17 -0000	1.2
@@ -764,44 +764,47 @@ attrd_local_callback(xmlNode * msg)
 	
 	crm_debug("Supplied: %s, Current: %s, Stored: %s",
 		  value, hash_entry->value, hash_entry->stored_value);
-	
-	if(safe_str_eq(value, hash_entry->value)
-	   && safe_str_eq(value, hash_entry->stored_value)) {
-	    crm_debug_2("Ignoring non-change");
-	    return;
-
-	} else if(value) {
-	    int offset = 1;
-	    int int_value = 0;
-	    int value_len = strlen(value);
-	    if(value_len < (plus_plus_len + 2)
-	       || value[plus_plus_len] != '+'
-	       || (value[plus_plus_len+1] != '+' && value[plus_plus_len+1] != '=')) {
-		goto set_unexpanded;
-	    }
-	    
-	    int_value = char2score(hash_entry->value);
-	    if(value[plus_plus_len+1] != '+') {
-		const char *offset_s = value+(plus_plus_len+2);
-		offset = char2score(offset_s);
-	    }
-	    int_value += offset;
+
+	if (!safe_str_eq(value, hash_entry->value)) {
+		if (value) {
+			int offset = 1;
+			int int_value = 0;
+			int value_len = strlen(value);
+			if(value_len < (plus_plus_len + 2)
+			   || value[plus_plus_len] != '+'
+			   || (value[plus_plus_len+1] != '+' && value[plus_plus_len+1] != '=')) {
+				goto set_unexpanded;
+			}
 	    
-	    if(int_value > INFINITY) {
-		int_value = INFINITY;
-	    }
+			int_value = char2score(hash_entry->value);
+			if(value[plus_plus_len+1] != '+') {
+				const char *offset_s = value+(plus_plus_len+2);
+				offset = char2score(offset_s);
+			}
+			int_value += offset;
+			
+			if(int_value > INFINITY) {
+				int_value = INFINITY;
+			}
 	    
-	    crm_info("Expanded %s=%s to %d", attr, value, int_value);
-	    crm_xml_add_int(msg, F_ATTRD_VALUE, int_value);
-	    value = crm_element_value(msg, F_ATTRD_VALUE);
-	}
-
-  set_unexpanded:
-	crm_free(hash_entry->value);
-	hash_entry->value = NULL;
-	if(value != NULL) {
-		hash_entry->value = crm_strdup(value);
-		crm_debug("New value of %s is %s", attr, value);
+			crm_info("Expanded %s=%s to %d", attr, value, int_value);
+			crm_xml_add_int(msg, F_ATTRD_VALUE, int_value);
+			value = crm_element_value(msg, F_ATTRD_VALUE);
+		}
+		
+	set_unexpanded:
+		crm_free(hash_entry->value);
+		hash_entry->value = NULL;
+		if(value != NULL) {
+			hash_entry->value = crm_strdup(value);
+			crm_debug("New value of %s is %s", attr, value);
+		}
+	} else if (safe_str_eq(value, hash_entry->stored_value)) {
+		crm_debug_2("Ignoring non-change");
+		return;
+	} else if (hash_entry->timer_id != 0) {
+		crm_debug_2("Update already scheduled");
+		return;
 	}
 	
 	stop_attrd_timer(hash_entry);
--- pacemaker-deb/tools/attrd.c	14 Sep 2011 21:04:04 -0000	1.1.1.1
+++ pacemaker-deb/tools/attrd.c	14 Sep 2011 21:17:17 -0000	1.2
@@ -764,44 +764,47 @@ attrd_local_callback(xmlNode * msg)
 	
 	crm_debug("Supplied: %s, Current: %s, Stored: %s",
 		  value, hash_entry->value, hash_entry->stored_value);
-	
-	if(safe_str_eq(value, hash_entry->value)
-	   && safe_str_eq(value, hash_entry->stored_value)) {
-	    crm_debug_2("Ignoring non-change");
-	    return;
-
-	} else if(value) {
-	    int offset = 1;
-	    int int_value = 0;
-	    int value_len = strlen(value);
-	    if(value_len < (plus_plus_len + 2)
-	       || value[plus_plus_len] != '+'
-	       || (value[plus_plus_len+1] != '+' && value[plus_plus_len+1] != '=')) {
-		goto set_unexpanded;
-	    }
-	    
-	    int_value = char2score(hash_entry->value);
-	    if(value[plus_plus_len+1] != '+') {
-		const char *offset_s = value+(plus_plus_len+2);
-		offset = char2score(offset_s);
-	    }
-	    int_value += offset;
+
+	if (!safe_str_eq(value, hash_entry->value)) {
+		if (value) {
+			int offset = 1;
+			int int_value = 0;
+			int value_len = strlen(value);
+			if(value_len < (plus_plus_len + 2)
+			   || value[plus_plus_len] != '+'
+			   || (value[plus_plus_len+1] != '+' && value[plus_plus_len+1] != '=')) {
+				goto set_unexpanded;
+			}
 	    
-	    if(int_value > INFINITY) {
-		int_value = INFINITY;
-	    }
+			int_value = char2score(hash_entry->value);
+			if(value[plus_plus_len+1] != '+') {
+				const char *offset_s = value+(plus_plus_len+2);
+				offset = char2score(offset_s);
+			}
+			int_value += offset;
+			
+			if(int_value > INFINITY) {
+				int_value = INFINITY;
+			}
 	    
-	    crm_info("Expanded %s=%s to %d", attr, value, int_value);
-	    crm_xml_add_int(msg, F_ATTRD_VALUE, int_value);
-	    value = crm_element_value(msg, F_ATTRD_VALUE);
-	}
-
-  set_unexpanded:
-	crm_free(hash_entry->value);
-	hash_entry->value = NULL;
-	if(value != NULL) {
-		hash_entry->value = crm_strdup(value);
-		crm_debug("New value of %s is %s", attr, value);
+			crm_info("Expanded %s=%s to %d", attr, value, int_value);
+			crm_xml_add_int(msg, F_ATTRD_VALUE, int_value);
+			value = crm_element_value(msg, F_ATTRD_VALUE);
+		}
+		
+	set_unexpanded:
+		crm_free(hash_entry->value);
+		hash_entry->value = NULL;
+		if(value != NULL) {
+			hash_entry->value = crm_strdup(value);
+			crm_debug("New value of %s is %s", attr, value);
+		}
+	} else if (safe_str_eq(value, hash_entry->stored_value)) {
+		crm_debug_2("Ignoring non-change");
+		return;
+	} else if (hash_entry->timer_id != 0) {
+		crm_debug_2("Update already scheduled");
+		return;
 	}
 	
 	stop_attrd_timer(hash_entry);
--- pacemaker-deb/tools/attrd.c	14 Sep 2011 21:04:04 -0000	1.1.1.1
+++ pacemaker-deb/tools/attrd.c	14 Sep 2011 21:17:17 -0000	1.2
@@ -764,44 +764,47 @@ attrd_local_callback(xmlNode * msg)
 	
 	crm_debug("Supplied: %s, Current: %s, Stored: %s",
 		  value, hash_entry->value, hash_entry->stored_value);
-	
-	if(safe_str_eq(value, hash_entry->value)
-	   && safe_str_eq(value, hash_entry->stored_value)) {
-	    crm_debug_2("Ignoring non-change");
-	    return;
-
-	} else if(value) {
-	    int offset = 1;
-	    int int_value = 0;
-	    int value_len = strlen(value);
-	    if(value_len < (plus_plus_len + 2)
-	       || value[plus_plus_len] != '+'
-	       || (value[plus_plus_len+1] != '+' && value[plus_plus_len+1] != '=')) {
-		goto set_unexpanded;
-	    }
-	    
-	    int_value = char2score(hash_entry->value);
-	    if(value[plus_plus_len+1] != '+') {
-		const char *offset_s = value+(plus_plus_len+2);
-		offset = char2score(offset_s);
-	    }
-	    int_value += offset;
+
+	if (!safe_str_eq(value, hash_entry->value)) {
+		if (value) {
+			int offset = 1;
+			int int_value = 0;
+			int value_len = strlen(value);
+			if(value_len < (plus_plus_len + 2)
+			   || value[plus_plus_len] != '+'
+			   || (value[plus_plus_len+1] != '+' && value[plus_plus_len+1] != '=')) {
+				goto set_unexpanded;
+			}
 	    
-	    if(int_value > INFINITY) {
-		int_value = INFINITY;
-	    }
+			int_value = char2score(hash_entry->value);
+			if(value[plus_plus_len+1] != '+') {
+				const char *offset_s = value+(plus_plus_len+2);
+				offset = char2score(offset_s);
+			}
+			int_value += offset;
+			
+			if(int_value > INFINITY) {
+				int_value = INFINITY;
+			}
 	    
-	    crm_info("Expanded %s=%s to %d", attr, value, int_value);
-	    crm_xml_add_int(msg, F_ATTRD_VALUE, int_value);
-	    value = crm_element_value(msg, F_ATTRD_VALUE);
-	}
-
-  set_unexpanded:
-	crm_free(hash_entry->value);
-	hash_entry->value = NULL;
-	if(value != NULL) {
-		hash_entry->value = crm_strdup(value);
-		crm_debug("New value of %s is %s", attr, value);
+			crm_info("Expanded %s=%s to %d", attr, value, int_value);
+			crm_xml_add_int(msg, F_ATTRD_VALUE, int_value);
+			value = crm_element_value(msg, F_ATTRD_VALUE);
+		}
+		
+	set_unexpanded:
+		crm_free(hash_entry->value);
+		hash_entry->value = NULL;
+		if(value != NULL) {
+			hash_entry->value = crm_strdup(value);
+			crm_debug("New value of %s is %s", attr, value);
+		}
+	} else if (safe_str_eq(value, hash_entry->stored_value)) {
+		crm_debug_2("Ignoring non-change");
+		return;
+	} else if (hash_entry->timer_id != 0) {
+		crm_debug_2("Update already scheduled");
+		return;
 	}
 	
 	stop_attrd_timer(hash_entry);

--- End Message ---
--- Begin Message ---
Looks like nobody is pushing this feature request at the moment,
closing it for now.
-- 
Feri

--- End Message ---

Reply via email to