]> git.sur5r.net Git - openldap/commitdiff
Add DBFLAG_CLEAN for a DB that was cleanly shut down; don't bother
authorHoward Chu <hyc@openldap.org>
Sun, 2 Nov 2008 23:06:10 +0000 (23:06 +0000)
committerHoward Chu <hyc@openldap.org>
Sun, 2 Nov 2008 23:06:10 +0000 (23:06 +0000)
scanning to verify contextCSN for clean shutdowns (ITS#5640)

servers/slapd/back-bdb/init.c
servers/slapd/overlays/syncprov.c
servers/slapd/slap.h

index 20b5fe9a66e8bf1b9c035915de37178ed652ec49..5de029303bc6cb0984a1c4bac16f876535db9271 100644 (file)
@@ -168,6 +168,8 @@ bdb_db_open( BackendDB *be, ConfigReply *cr )
                        be->be_suffix[0].bv_val, 0, 0 );
                return -1;
        }
+       if ( rc == ALOCK_CLEAN )
+               be->be_flags |= SLAP_DBFLAG_CLEAN;
 
        /*
         * The DB_CONFIG file may have changed. If so, recover the
index a7cf44b74b57d23653fb526ff0cd19a6ca7bd229..ab0ef885a84b6899869db46080f9a186343ccf01 100644 (file)
@@ -2733,7 +2733,7 @@ syncprov_db_open(
                        si->si_sids = slap_parse_csn_sids( si->si_ctxcsn, a->a_numvals, NULL );
                }
                overlay_entry_release_ov( op, e, 0, on );
-               if ( si->si_ctxcsn ) {
+               if ( si->si_ctxcsn && !SLAP_DBCLEAN( be )) {
                        op->o_req_dn = be->be_suffix[0];
                        op->o_req_ndn = be->be_nsuffix[0];
                        op->ors_scope = LDAP_SCOPE_SUBTREE;
index 8564e3b310d3be1771c3adee83e94baf533c5a33..fa72448deaefaf129e220165e09725d8397799d1 100644 (file)
@@ -1792,6 +1792,7 @@ struct BackendDB {
 #define SLAP_DBFLAG_SINGLE_SHADOW      0x4000U /* a single-master shadow */
 #define SLAP_DBFLAG_SYNC_SHADOW                0x1000U /* a sync shadow */
 #define SLAP_DBFLAG_SLURP_SHADOW       0x2000U /* a slurp shadow */
+#define SLAP_DBFLAG_CLEAN              0x10000U /* was cleanly shutdown */
        slap_mask_t     be_flags;
 #define SLAP_DBFLAGS(be)                       ((be)->be_flags)
 #define SLAP_NOLASTMOD(be)                     (SLAP_DBFLAGS(be) & SLAP_DBFLAG_NOLASTMOD)
@@ -1816,6 +1817,7 @@ struct BackendDB {
 #define SLAP_SLURP_SHADOW(be)                  (SLAP_DBFLAGS(be) & SLAP_DBFLAG_SLURP_SHADOW)
 #define SLAP_SINGLE_SHADOW(be)                 (SLAP_DBFLAGS(be) & SLAP_DBFLAG_SINGLE_SHADOW)
 #define SLAP_MULTIMASTER(be)                   (!SLAP_SINGLE_SHADOW(be))
+#define SLAP_DBCLEAN(be)                       (SLAP_DBFLAGS(be) & SLAP_DBFLAG_CLEAN)
 
        slap_mask_t     be_restrictops;         /* restriction operations */
 #define SLAP_RESTRICT_OP_ADD           0x0001U