From: Howard Chu Date: Thu, 5 Aug 2021 14:50:27 +0000 (+0100) Subject: ITS#8958 rename ldap_pvt_thread_pool_pausecheck() X-Git-Tag: OPENLDAP_REL_ENG_2_6_0~106 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5ad6ab3568b3f3c03fd3dfb40b9a2d426190d501;p=thirdparty%2Fopenldap.git ITS#8958 rename ldap_pvt_thread_pool_pausecheck() to ..._pausewait() since that's what it really does. Add ..._pausequery() that only checks and doesn't wait. --- diff --git a/include/ldap_pvt_thread.h b/include/ldap_pvt_thread.h index c0cfe9c761..be763d9a9c 100644 --- a/include/ldap_pvt_thread.h +++ b/include/ldap_pvt_thread.h @@ -279,7 +279,11 @@ ldap_pvt_thread_pool_unidle LDAP_P(( ldap_pvt_thread_pool_t *pool )); LDAP_F( int ) -ldap_pvt_thread_pool_pausecheck LDAP_P(( +ldap_pvt_thread_pool_pausequery LDAP_P(( + ldap_pvt_thread_pool_t *pool )); + +LDAP_F( int ) +ldap_pvt_thread_pool_pausewait LDAP_P(( ldap_pvt_thread_pool_t *pool )); LDAP_F( int ) diff --git a/libraries/libldap/tpool.c b/libraries/libldap/tpool.c index 1bc5e3afa8..a98b359c02 100644 --- a/libraries/libldap/tpool.c +++ b/libraries/libldap/tpool.c @@ -1236,11 +1236,26 @@ ldap_pvt_thread_pool_unidle( ldap_pvt_thread_pool_t *tpool ) * Return 1 if we waited, 0 if not, -1 at parameter error. */ int -ldap_pvt_thread_pool_pausecheck( ldap_pvt_thread_pool_t *tpool ) +ldap_pvt_thread_pool_pausewait( ldap_pvt_thread_pool_t *tpool ) { return handle_pause(tpool, PAUSE_ARG(CHECK_PAUSE)); } +/* Return 1 if a pause has been requested */ +int +ldap_pvt_thread_pool_pausequery( ldap_pvt_thread_pool_t *tpool ) +{ + struct ldap_int_thread_pool_s *pool; + if ( !tpool ) + return -1; + + pool = *tpool; + if ( !pool ) + return 0; + + return pool->ltp_pause != 0; +} + /* * Wait for a pause, from a non-pooled thread. */ diff --git a/servers/slapd/overlays/accesslog.c b/servers/slapd/overlays/accesslog.c index 1916f61a90..e0803bd4c7 100644 --- a/servers/slapd/overlays/accesslog.c +++ b/servers/slapd/overlays/accesslog.c @@ -765,7 +765,7 @@ accesslog_purge( void *ctx, void *arg ) } ch_free( pd.ndn[i].bv_val ); ch_free( pd.dn[i].bv_val ); - ldap_pvt_thread_pool_pausecheck( &connection_pool ); + ldap_pvt_thread_pool_pausewait( &connection_pool ); } ch_free( pd.ndn ); ch_free( pd.dn ); diff --git a/servers/slapd/overlays/syncprov.c b/servers/slapd/overlays/syncprov.c index 47e60f61c3..db0b9a2f82 100644 --- a/servers/slapd/overlays/syncprov.c +++ b/servers/slapd/overlays/syncprov.c @@ -2723,7 +2723,7 @@ retry: if ( slapd_shutdown ) return SLAPD_ABANDON; - if ( !ldap_pvt_thread_pool_pausecheck( &connection_pool )) + if ( !ldap_pvt_thread_pool_pausewait( &connection_pool )) ldap_pvt_thread_yield(); ldap_pvt_thread_mutex_lock( &mt->mt_mutex ); @@ -3112,7 +3112,7 @@ syncprov_op_search( Operation *op, SlapReply *rs ) ch_free( sop ); return SLAPD_ABANDON; } - if ( !ldap_pvt_thread_pool_pausecheck( &connection_pool )) + if ( !ldap_pvt_thread_pool_pausewait( &connection_pool )) ldap_pvt_thread_yield(); ldap_pvt_thread_mutex_lock( &si->si_ops_mutex ); } diff --git a/servers/slapd/syncrepl.c b/servers/slapd/syncrepl.c index cad636b0fa..3565961c35 100644 --- a/servers/slapd/syncrepl.c +++ b/servers/slapd/syncrepl.c @@ -1210,7 +1210,7 @@ get_pmutex( while ( ldap_pvt_thread_mutex_trylock( &si->si_cookieState->cs_pmutex )) { if ( slapd_shutdown ) return SYNC_SHUTDOWN; - if ( !ldap_pvt_thread_pool_pausecheck( &connection_pool )) + if ( !ldap_pvt_thread_pool_pausewait( &connection_pool )) ldap_pvt_thread_yield(); } } @@ -1972,7 +1972,7 @@ do_syncrepl( while ( ldap_pvt_thread_mutex_trylock( &si->si_mutex )) { if ( slapd_shutdown ) return NULL; - if ( !ldap_pvt_thread_pool_pausecheck( &connection_pool )) + if ( !ldap_pvt_thread_pool_pausewait( &connection_pool )) ldap_pvt_thread_yield(); }