]> git.sur5r.net Git - openldap/commitdiff
Avoid deadlocks on reader txns
authorHoward Chu <hyc@openldap.org>
Wed, 27 Aug 2008 22:28:16 +0000 (22:28 +0000)
committerHoward Chu <hyc@openldap.org>
Wed, 27 Aug 2008 22:28:16 +0000 (22:28 +0000)
servers/slapd/back-bdb/cache.c
servers/slapd/back-bdb/init.c

index 9c7d4f8949433c6067be404511e55c7fdc850d20..438ae9587d426b3a6787811611c0fb5b84360a81 100644 (file)
@@ -1481,7 +1481,7 @@ bdb_reader_get( Operation *op, DB_ENV *env, DB_TXN **txn )
 
        if ( ldap_pvt_thread_pool_getkey( ctx, env, &data, NULL ) ) {
                for ( i=0, rc=1; rc != 0 && i<4; i++ ) {
-                       rc = TXN_BEGIN( env, NULL, txn, DB_READ_COMMITTED );
+                       rc = TXN_BEGIN( env, NULL, txn, DB_READ_COMMITTED | DB_TXN_NOWAIT );
                        if (rc) ldap_pvt_thread_yield();
                }
                if ( rc != 0) {
index 69746e5127a0df8921f657672dd298562bd5fe78..14bd1b1bfcf14e4c579a02bec4e846a0a59a3b13 100644 (file)
@@ -61,7 +61,7 @@ bdb_db_init( BackendDB *be, ConfigReply *cr )
 
        /* DBEnv parameters */
        bdb->bi_dbenv_home = ch_strdup( SLAPD_DEFAULT_DB_DIR );
-       bdb->bi_dbenv_xflags = 0;
+       bdb->bi_dbenv_xflags = DB_TIME_NOTGRANTED;
        bdb->bi_dbenv_mode = SLAPD_DEFAULT_DB_MODE;
 
        bdb->bi_cache.c_maxsize = DEFAULT_CACHE_SIZE;
@@ -503,7 +503,7 @@ shm_retry:
        }
 
        if ( !quick ) {
-               TXN_BEGIN(bdb->bi_dbenv, NULL, &bdb->bi_cache.c_txn, DB_READ_COMMITTED);
+               TXN_BEGIN(bdb->bi_dbenv, NULL, &bdb->bi_cache.c_txn, DB_READ_COMMITTED | DB_TXN_NOWAIT);
        }
 
        entry_prealloc( bdb->bi_cache.c_maxsize );