Re: [Freeipa-devel] [PATCH 0106] Fix error handling for initial zone refresh in persistent search

2012-12-13 Thread Petr Spacek

On 12/13/2012 03:21 PM, Adam Tkac wrote:

On Thu, Nov 22, 2012 at 02:55:51PM +0100, Petr Spacek wrote:

>Hello,
>
> Fix error handling for initial zone refresh in persistent search.
>
> Old code terminates watcher thread in case of error. Now initial lookup
> is restarted after reconnect_interval seconds.

Ack


Pushed to master and v2: e63d78d977402289ab405c37aa39f8ca6f17bd13

--
Petr^2 Spacek

___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel


Re: [Freeipa-devel] [PATCH 0106] Fix error handling for initial zone refresh in persistent search

2012-12-13 Thread Adam Tkac
On Thu, Nov 22, 2012 at 02:55:51PM +0100, Petr Spacek wrote:
> Hello,
> 
> Fix error handling for initial zone refresh in persistent search.
> 
> Old code terminates watcher thread in case of error. Now initial lookup
> is restarted after reconnect_interval seconds.

Ack

> From 99a820736eab9ad597b193fe504ca965263b6655 Mon Sep 17 00:00:00 2001
> From: Petr Spacek 
> Date: Thu, 22 Nov 2012 14:52:08 +0100
> Subject: [PATCH] Fix error handling for initial zone refresh in persistent
>  search.
> 
> Old code terminates watcher thread in case of error. Now initial lookup
> is restarted after reconnect_interval seconds.
> 
> Signed-off-by: Petr Spacek 
> ---
>  src/ldap_helper.c | 22 +++---
>  1 file changed, 19 insertions(+), 3 deletions(-)
> 
> diff --git a/src/ldap_helper.c b/src/ldap_helper.c
> index 
> 57235de7da158b7a05de9e35fff2cdaaff74276c..28b2eb45c116572d76fefcfb9f5c1fba5411dc12
>  100644
> --- a/src/ldap_helper.c
> +++ b/src/ldap_helper.c
> @@ -3757,6 +3757,7 @@ ldap_psearch_watcher(isc_threadarg_t arg)
>  
>  restart:
>   /* Perform initial lookup */
> + ldap_query_free(ISC_TRUE, &ldap_qresult);
>   flush_required = ISC_TRUE;
>   if (inst->psearch) {
>   log_debug(1, "Sending initial psearch lookup");
> @@ -3794,15 +3795,30 @@ restart:
>   if (!sane_sleep(inst, inst->reconnect_interval))
>   goto cleanup;
>   }
> - ldap_query_free(ISC_TRUE, &ldap_qresult);
>   goto restart;
>   } else if (flush_required == ISC_TRUE) {
> + isc_boolean_t restart_needed = ISC_FALSE;
>   /* First LDAP result after (re)start was received 
> successfully:
>* Unload old zones and flush record cache.
>* We want to save cache in case of search timeout 
> during restart.
>*/
> - CHECK(refresh_zones_from_ldap(inst, ISC_TRUE));
> - CHECK(flush_ldap_cache(inst->cache));
> + if ((result = refresh_zones_from_ldap(inst, ISC_TRUE))
> +  != ISC_R_SUCCESS) {
> + log_error_r("zone refresh after initial psearch 
> lookup failed");
> + restart_needed = ISC_TRUE;
> + } else if ((result = flush_ldap_cache(inst->cache))
> + != ISC_R_SUCCESS) {
> + log_error_r("cache flush after initial psearch 
> lookup failed");
> + restart_needed = ISC_TRUE;
> + }
> +
> + if (restart_needed) {
> + if (!sane_sleep(inst, inst->reconnect_interval))
> + goto cleanup;
> +
> + goto restart;
> + }
> +
>   flush_required = ISC_FALSE;
>   }
>  
> -- 
> 1.7.11.7
> 


-- 
Adam Tkac, Red Hat, Inc.

___
Freeipa-devel mailing list
Freeipa-devel@redhat.com
https://www.redhat.com/mailman/listinfo/freeipa-devel