Skip to content
Snippets Groups Projects
Commit 4b520588 authored by Quanah Gibson-Mount's avatar Quanah Gibson-Mount
Browse files

ITS#5864

parent 950731a9
No related branches found
No related tags found
No related merge requests found
......@@ -20,6 +20,7 @@ OpenLDAP 2.4.14 Engineering
Fixed slapd wake_sds close on Windows (ITS#5855)
Fixed slapd-bdb/hdb dncachesize handling (ITS#5860)
Fixed slapd-bdb/hdb RFC4528 control support (ITS#5861)
Fixed slapd-bdb/hdb trickle task usage (ITS#5864)
Fixed slapd-ldap idassert-bind validity checking (ITS#5863)
Fixed slapd-ldif numerous bugs (ITS#5408)
Fixed slapd-ldif rename on same DN (ITS#5319)
......
......@@ -75,11 +75,21 @@ static ldap_pvt_thread_mutex_t bdb_tool_index_mutex;
static ldap_pvt_thread_cond_t bdb_tool_index_cond_main;
static ldap_pvt_thread_cond_t bdb_tool_index_cond_work;
#if DB_VERSION_FULL >= 0x04060000
#define USE_TRICKLE 1
#else
/* Seems to slow things down too much in BDB 4.5 */
#undef USE_TRICKLE
#endif
#ifdef USE_TRICKLE
static ldap_pvt_thread_mutex_t bdb_tool_trickle_mutex;
static ldap_pvt_thread_cond_t bdb_tool_trickle_cond;
static void * bdb_tool_index_task( void *ctx, void *ptr );
static void * bdb_tool_trickle_task( void *ctx, void *ptr );
#endif
static void * bdb_tool_index_task( void *ctx, void *ptr );
int bdb_tool_entry_open(
BackendDB *be, int mode )
......@@ -106,9 +116,11 @@ int bdb_tool_entry_open(
/* Set up for threaded slapindex */
if (( slapMode & (SLAP_TOOL_QUICK|SLAP_TOOL_READONLY)) == SLAP_TOOL_QUICK ) {
if ( !bdb_tool_info ) {
#ifdef USE_TRICKLE
ldap_pvt_thread_mutex_init( &bdb_tool_trickle_mutex );
ldap_pvt_thread_cond_init( &bdb_tool_trickle_cond );
ldap_pvt_thread_pool_submit( &connection_pool, bdb_tool_trickle_task, bdb->bi_dbenv );
#endif
ldap_pvt_thread_mutex_init( &bdb_tool_index_mutex );
ldap_pvt_thread_cond_init( &bdb_tool_index_cond_main );
......@@ -137,9 +149,11 @@ int bdb_tool_entry_close(
{
if ( bdb_tool_info ) {
slapd_shutdown = 1;
#ifdef USE_TRICKLE
ldap_pvt_thread_mutex_lock( &bdb_tool_trickle_mutex );
ldap_pvt_thread_cond_signal( &bdb_tool_trickle_cond );
ldap_pvt_thread_mutex_unlock( &bdb_tool_trickle_mutex );
#endif
ldap_pvt_thread_mutex_lock( &bdb_tool_index_mutex );
bdb_tool_index_tcount = slap_tool_thread_max - 1;
ldap_pvt_thread_cond_broadcast( &bdb_tool_index_cond_work );
......@@ -521,9 +535,11 @@ ID bdb_tool_entry_put(
goto done;
}
#ifdef USE_TRICKLE
if (( slapMode & SLAP_TOOL_QUICK ) && (( e->e_id & 0xfff ) == 0xfff )) {
ldap_pvt_thread_cond_signal( &bdb_tool_trickle_cond );
}
#endif
if ( !bdb->bi_linear_index )
rc = bdb_tool_index_add( &op, tid, e );
......@@ -1096,6 +1112,7 @@ int bdb_tool_idl_add(
}
#endif
#ifdef USE_TRICKLE
static void *
bdb_tool_trickle_task( void *ctx, void *ptr )
{
......@@ -1114,6 +1131,7 @@ bdb_tool_trickle_task( void *ctx, void *ptr )
return NULL;
}
#endif
static void *
bdb_tool_index_task( void *ctx, void *ptr )
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment