mirror of
https://git.openldap.org/openldap/openldap.git
synced 2026-01-30 02:19:26 -05:00
ITS#5745 long-lived TXNs must be closed before DBs
This commit is contained in:
parent
4a1db6067f
commit
9d5de25b5b
1 changed files with 11 additions and 7 deletions
|
|
@ -584,6 +584,17 @@ bdb_db_close( BackendDB *be, ConfigReply *cr )
|
|||
ber_bvarray_free( bdb->bi_db_config );
|
||||
bdb->bi_db_config = NULL;
|
||||
|
||||
if( bdb->bi_dbenv ) {
|
||||
/* Free cache locker if we enabled locking.
|
||||
* TXNs must all be closed before DBs...
|
||||
*/
|
||||
if ( !( slapMode & SLAP_TOOL_QUICK ) && bdb->bi_cache.c_txn ) {
|
||||
TXN_ABORT( bdb->bi_cache.c_txn );
|
||||
bdb->bi_cache.c_txn = NULL;
|
||||
}
|
||||
bdb_reader_flush( bdb->bi_dbenv );
|
||||
}
|
||||
|
||||
while( bdb->bi_databases && bdb->bi_ndatabases-- ) {
|
||||
db = bdb->bi_databases[bdb->bi_ndatabases];
|
||||
rc = db->bdi_db->close( db->bdi_db, 0 );
|
||||
|
|
@ -614,13 +625,6 @@ bdb_db_close( BackendDB *be, ConfigReply *cr )
|
|||
|
||||
/* close db environment */
|
||||
if( bdb->bi_dbenv ) {
|
||||
/* Free cache locker if we enabled locking */
|
||||
if ( !( slapMode & SLAP_TOOL_QUICK ) && bdb->bi_cache.c_txn ) {
|
||||
TXN_ABORT( bdb->bi_cache.c_txn );
|
||||
bdb->bi_cache.c_txn = NULL;
|
||||
}
|
||||
bdb_reader_flush( bdb->bi_dbenv );
|
||||
|
||||
/* force a checkpoint, but not if we were ReadOnly,
|
||||
* and not in Quick mode since there are no transactions there.
|
||||
*/
|
||||
|
|
|
|||
Loading…
Reference in a new issue