mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-03-07 14:18:15 +08:00
ITS#9785 clear runqueue task as soon as it's getting started
This commit is contained in:
parent
209ee9b082
commit
ca19a774f6
@ -2421,6 +2421,18 @@ slap_listener_activate(
|
||||
return rc;
|
||||
}
|
||||
|
||||
static void *
|
||||
slapd_rtask_trampoline(
|
||||
void *ctx,
|
||||
void *arg )
|
||||
{
|
||||
struct re_s *rtask = arg;
|
||||
|
||||
/* invalidate pool_cookie */
|
||||
rtask->pool_cookie = NULL;
|
||||
return rtask->routine( ctx, arg );
|
||||
}
|
||||
|
||||
static void *
|
||||
slapd_daemon_task(
|
||||
void *ptr )
|
||||
@ -2784,7 +2796,7 @@ loop:
|
||||
ldap_pvt_runqueue_resched( &slapd_rq, rtask, 0 );
|
||||
ldap_pvt_thread_mutex_unlock( &slapd_rq.rq_mutex );
|
||||
ldap_pvt_thread_pool_submit2( &connection_pool,
|
||||
rtask->routine, (void *) rtask, &rtask->pool_cookie );
|
||||
slapd_rtask_trampoline, (void *) rtask, &rtask->pool_cookie );
|
||||
ldap_pvt_thread_mutex_lock( &slapd_rq.rq_mutex );
|
||||
}
|
||||
rtask = ldap_pvt_runqueue_next_sched( &slapd_rq, &cat );
|
||||
|
@ -7599,7 +7599,7 @@ syncrepl_config( ConfigArgs *c )
|
||||
ldap_pvt_runqueue_stoptask( &slapd_rq, re );
|
||||
isrunning = 1;
|
||||
}
|
||||
if ( ldap_pvt_thread_pool_retract( re->pool_cookie ) > 0 )
|
||||
if ( !re->pool_cookie || ldap_pvt_thread_pool_retract( re->pool_cookie ) > 0 )
|
||||
isrunning = 0;
|
||||
|
||||
ldap_pvt_runqueue_remove( &slapd_rq, re );
|
||||
|
Loading…
Reference in New Issue
Block a user