mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-12-25 17:19:43 -05:00
ITS#9858 back-mdb: delay indexer task startup
until after monitor backend is set up.
This commit is contained in:
parent
0b78166a47
commit
9e5701cdd7
3 changed files with 18 additions and 5 deletions
|
|
@ -400,20 +400,20 @@ done:
|
|||
return rc;
|
||||
}
|
||||
|
||||
void
|
||||
int
|
||||
mdb_resume_index( BackendDB *be, MDB_txn *txn )
|
||||
{
|
||||
struct mdb_info *mdb = be->be_private;
|
||||
MDB_cursor *curs;
|
||||
MDB_val key, data;
|
||||
int i, rc;
|
||||
int i, rc, do_task = 0;
|
||||
unsigned short *s;
|
||||
slap_mask_t *mask;
|
||||
AttributeDescription *ad;
|
||||
|
||||
rc = mdb_cursor_open( txn, mdb->mi_idxckp, &curs );
|
||||
if ( rc )
|
||||
return;
|
||||
return 0;
|
||||
|
||||
while(( rc = mdb_cursor_get( curs, &key, &data, MDB_NEXT )) == 0) {
|
||||
s = key.mv_data;
|
||||
|
|
@ -425,11 +425,19 @@ mdb_resume_index( BackendDB *be, MDB_txn *txn )
|
|||
mask = data.mv_data;
|
||||
mdb->mi_attrs[i]->ai_indexmask = mask[0];
|
||||
mdb->mi_attrs[i]->ai_newmask = mask[1];
|
||||
do_task = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
mdb_cursor_close( curs );
|
||||
return do_task;
|
||||
}
|
||||
|
||||
void
|
||||
mdb_start_index_task( BackendDB *be )
|
||||
{
|
||||
struct mdb_info *mdb = be->be_private;
|
||||
ldap_pvt_thread_mutex_lock( &slapd_rq.rq_mutex );
|
||||
mdb->mi_index_task = ldap_pvt_runqueue_insert( &slapd_rq, 36000,
|
||||
mdb_online_index, be,
|
||||
|
|
|
|||
|
|
@ -91,6 +91,7 @@ mdb_db_open( BackendDB *be, ConfigReply *cr )
|
|||
unsigned flags;
|
||||
char *dbhome;
|
||||
MDB_txn *txn;
|
||||
int do_index = 0;
|
||||
|
||||
if ( be->be_suffix == NULL ) {
|
||||
Debug( LDAP_DEBUG_ANY,
|
||||
|
|
@ -291,7 +292,7 @@ mdb_db_open( BackendDB *be, ConfigReply *cr )
|
|||
MDB_stat st;
|
||||
rc = mdb_stat( txn, mdb->mi_idxckp, &st );
|
||||
if ( st.ms_entries )
|
||||
mdb_resume_index( be, txn );
|
||||
do_index = mdb_resume_index( be, txn );
|
||||
}
|
||||
|
||||
rc = mdb_txn_commit(txn);
|
||||
|
|
@ -311,6 +312,9 @@ mdb_db_open( BackendDB *be, ConfigReply *cr )
|
|||
|
||||
mdb->mi_flags |= MDB_IS_OPEN;
|
||||
|
||||
if ( do_index )
|
||||
mdb_start_index_task( be );
|
||||
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
|
|
|
|||
|
|
@ -64,7 +64,8 @@ void mdb_ad_unwind( struct mdb_info *mdb, int prev_ads );
|
|||
*/
|
||||
|
||||
int mdb_back_init_cf( BackendInfo *bi );
|
||||
void mdb_resume_index( BackendDB *be, MDB_txn *txn );
|
||||
int mdb_resume_index( BackendDB *be, MDB_txn *txn );
|
||||
void mdb_start_index_task( BackendDB *be );
|
||||
|
||||
/*
|
||||
* dn2entry.c
|
||||
|
|
|
|||
Loading…
Reference in a new issue