[Freeipa-devel] [PATCH] 0015 Don't try to remove auxiliary nodes from internal RBT

Adam Tkac atkac at redhat.com
Wed Apr 4 08:26:08 UTC 2012


On Tue, Apr 03, 2012 at 03:06:31PM +0200, Petr Spacek wrote:
> Hello,
> 
> this patch optimizes code for removing deleted zones from BIND
> instance little bit.
> 
> In some cases there are auxiliary zones (= not really served zones)
> in internal Red-Black tree. Current code tries to remove these
> auxiliary zones on each zone_refresh attempt.
> 
> Everything works fine, because auxiliary zones are detected deeper
> in zone deletion code.
> Now plugin prints very confusing message "Zone '%s' has been removed
> from database." each 'zone_refresh' seconds, again and again. This
> patch prevents this.
> 
> I think it's very very confusing. I spent a lot of time while
> debugging before I realized where is the problem.

The patch is OK, please push it.

Regards, Adam

> Petr^2 Spacek

> From ce620e1e4bb888d784b8cdfac5ba75182d45b6c3 Mon Sep 17 00:00:00 2001
> From: Petr Spacek <pspacek at redhat.com>
> Date: Tue, 3 Apr 2012 14:50:12 +0200
> Subject: [PATCH] Don't try to remove auxiliary nodes from internal RBT
>  Signed-off-by: Petr Spacek <pspacek at redhat.com>
> 
> ---
>  src/ldap_helper.c |   10 ++++++++--
>  1 files changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/src/ldap_helper.c b/src/ldap_helper.c
> index d0cde9d..df8b01e 100644
> --- a/src/ldap_helper.c
> +++ b/src/ldap_helper.c
> @@ -1192,6 +1192,14 @@ refresh_zones_from_ldap(ldap_instance_t *ldap_inst)
>  			goto next;	
>  		}
>  
> +		/* Do not remove auxilitary (= non-zone) nodes. */
> +		char buf[DNS_NAME_FORMATSIZE];
> +		dns_name_format(&aname, buf, DNS_NAME_FORMATSIZE);
> +		if (!node->data) {
> +			log_debug(5,"auxilitary zone/node '%s' will not be removed", buf);
> +			goto next;
> +		}
> +
>  		DECLARE_BUFFERED_NAME(foundname);
>  		INIT_BUFFERED_NAME(foundname);
>  		
> @@ -1201,8 +1209,6 @@ refresh_zones_from_ldap(ldap_instance_t *ldap_inst)
>  			goto next;		
>  		}
>  		/* Log zone removing. */
> -		char buf[255];
> -		dns_name_format(&aname, buf, 255);
>  		log_debug(1, "Zone '%s' has been removed from database.", buf);
>  		
>  		delete = ISC_TRUE;
> -- 
> 1.7.7.6
> 


-- 
Adam Tkac, Red Hat, Inc.




More information about the Freeipa-devel mailing list