From 0dc5fbe92439229a3c4f1be093f8a711410ce99e Mon Sep 17 00:00:00 2001 From: Quanah Gibson-Mount Date: Sat, 21 Nov 2009 04:23:32 +0000 Subject: [PATCH] Improved debugging Revert commit that broke test054 Serialize! --- servers/slapd/overlays/syncprov.c | 16 +++++++------- servers/slapd/syncrepl.c | 35 +++++++++++++++++++++---------- 2 files changed, 31 insertions(+), 20 deletions(-) diff --git a/servers/slapd/overlays/syncprov.c b/servers/slapd/overlays/syncprov.c index 5f626c95db..c34e90bc42 100644 --- a/servers/slapd/overlays/syncprov.c +++ b/servers/slapd/overlays/syncprov.c @@ -792,15 +792,13 @@ syncprov_sendresp( Operation *op, opcookie *opc, syncops *so, } #ifdef LDAP_DEBUG - if ( !BER_BVISNULL( &cookie )) { - if ( so->s_sid > 0 ) { - Debug( LDAP_DEBUG_SYNC, "syncprov_sendresp: to=%03x, cookie=%s\n", - so->s_sid, cookie.bv_val , 0 ); - } else { - Debug( LDAP_DEBUG_SYNC, "syncprov_sendresp: cookie=%s\n", - cookie.bv_val, 0, 0 ); - } - } + if ( so->s_sid > 0 ) { + Debug( LDAP_DEBUG_SYNC, "syncprov_sendresp: to=%03x, cookie=%s\n", + so->s_sid, cookie.bv_val ? cookie.bv_val : "", 0 ); + } else { + Debug( LDAP_DEBUG_SYNC, "syncprov_sendresp: cookie=%s\n", + cookie.bv_val ? cookie.bv_val : "", 0, 0 ); + } #endif e_uuid.e_attrs = &a_uuid; diff --git a/servers/slapd/syncrepl.c b/servers/slapd/syncrepl.c index c36ead68e9..aadf33b79c 100644 --- a/servers/slapd/syncrepl.c +++ b/servers/slapd/syncrepl.c @@ -768,7 +768,7 @@ do_syncrep2( Modifications *modlist = NULL; - int match, m; + int match, m, punlock = 0; struct timeval *tout_p = NULL; struct timeval tout = { 0, 0 }; @@ -851,8 +851,9 @@ do_syncrep2( if ( ber_peek_tag( ber, &len ) == LDAP_TAG_SYNC_COOKIE ) { ber_scanf( ber, /*"{"*/ "m}", &cookie ); - Debug( LDAP_DEBUG_SYNC, "do_syncrep2: cookie=%s\n", - BER_BVISNULL( &cookie ) ? "" : cookie.bv_val, 0, 0 ); + Debug( LDAP_DEBUG_SYNC, "do_syncrep2: %s cookie=%s\n", + si->si_ridtxt, + BER_BVISNULL( &cookie ) ? "" : cookie.bv_val, 0 ); if ( !BER_BVISNULL( &cookie ) ) { ch_free( syncCookie.octet_str.bv_val ); @@ -877,7 +878,14 @@ do_syncrep2( } } /* check pending CSNs too */ - ldap_pvt_thread_mutex_lock( &si->si_cookieState->cs_pmutex ); + while ( ldap_pvt_thread_mutex_trylock( &si->si_cookieState->cs_pmutex )) { + if ( slapd_shutdown ) { + rc = -2; + goto done; + } + if ( !ldap_pvt_thread_pool_pausecheck( &connection_pool )) + ldap_pvt_thread_yield(); + } for ( i =0; isi_cookieState->cs_pnum; i++ ) { if ( si->si_cookieState->cs_psids[i] == sid ) { if ( ber_bvcmp( syncCookie.ctxcsn, &si->si_cookieState->cs_pvals[i] ) <= 0 ) { @@ -900,7 +908,7 @@ do_syncrep2( si->si_cookieState->cs_psids = ch_realloc( si->si_cookieState->cs_psids, si->si_cookieState->cs_pnum * sizeof(int)); si->si_cookieState->cs_psids[i] = sid; } - ldap_pvt_thread_mutex_unlock( &si->si_cookieState->cs_pmutex ); + punlock = 1; } op->o_controls[slap_cids.sc_LDAPsync] = &syncCookie; } @@ -934,6 +942,8 @@ do_syncrep2( rc = syncrepl_updateCookie( si, op, &syncCookie ); } } + if ( punlock ); + ldap_pvt_thread_mutex_unlock( &si->si_cookieState->cs_pmutex ); ldap_controls_free( rctrls ); if ( modlist ) { slap_mods_free( modlist, 1 ); @@ -999,8 +1009,9 @@ do_syncrep2( if ( ber_peek_tag( ber, &len ) == LDAP_TAG_SYNC_COOKIE ) { ber_scanf( ber, "m", &cookie ); - Debug( LDAP_DEBUG_SYNC, "do_syncrep2: cookie=%s\n", - BER_BVISNULL( &cookie ) ? "" : cookie.bv_val, 0, 0 ); + Debug( LDAP_DEBUG_SYNC, "do_syncrep2: %s cookie=%s\n", + si->si_ridtxt, + BER_BVISNULL( &cookie ) ? "" : cookie.bv_val, 0 ); if ( !BER_BVISNULL( &cookie ) ) { ch_free( syncCookie.octet_str.bv_val ); @@ -1109,8 +1120,9 @@ do_syncrep2( { ber_scanf( ber, "m", &cookie ); - Debug( LDAP_DEBUG_SYNC, "do_syncrep2: cookie=%s\n", - BER_BVISNULL( &cookie ) ? "" : cookie.bv_val, 0, 0 ); + Debug( LDAP_DEBUG_SYNC, "do_syncrep2: %s cookie=%s\n", + si->si_ridtxt, + BER_BVISNULL( &cookie ) ? "" : cookie.bv_val, 0 ); if ( !BER_BVISNULL( &cookie ) ) { ch_free( syncCookie.octet_str.bv_val ); @@ -1145,8 +1157,9 @@ do_syncrep2( { ber_scanf( ber, "m", &cookie ); - Debug( LDAP_DEBUG_SYNC, "do_syncrep2: cookie=%s\n", - BER_BVISNULL( &cookie ) ? "" : cookie.bv_val, 0, 0 ); + Debug( LDAP_DEBUG_SYNC, "do_syncrep2: %s cookie=%s\n", + si->si_ridtxt, + BER_BVISNULL( &cookie ) ? "" : cookie.bv_val, 0 ); if ( !BER_BVISNULL( &cookie ) ) { ch_free( syncCookie.octet_str.bv_val ); -- 2.39.5