/* cache.c - routines to maintain an in-core cache of entries */
/* $OpenLDAP$ */
-/*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
- * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
+ *
+ * Copyright 1998-2005 The OpenLDAP Foundation.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted only as authorized by the OpenLDAP
+ * Public License.
+ *
+ * A copy of this license is available in the file LICENSE in the
+ * top-level directory of the distribution or, alternatively, at
+ * <http://www.OpenLDAP.org/license.html>.
*/
#include "portable.h"
ID id;
int refcnt, freeit = 1;
+ if ( slapMode != SLAP_SERVER_MODE ) {
+ return;
+ }
+
/* set cache mutex */
ldap_pvt_thread_mutex_lock( &cache->c_mutex );
/* free cache mutex */
ldap_pvt_thread_mutex_unlock( &cache->c_mutex );
-#ifdef NEW_LOGGING
- LDAP_LOG( CACHE, DETAIL1,
- "cache_return_entry_rw: return (%ld):%s, refcnt=%d\n",
- id, rw ? "w" : "r", refcnt );
-#else
Debug( LDAP_DEBUG_TRACE,
"====> cache_return_entry_%s( %ld ): created (%d)\n",
rw ? "w" : "r", id, refcnt );
-#endif
} else if ( LEI(e)->lei_state == CACHE_ENTRY_DELETED ) {
if( refcnt > 0 ) {
/* free cache mutex */
ldap_pvt_thread_mutex_unlock( &cache->c_mutex );
-#ifdef NEW_LOGGING
- LDAP_LOG( CACHE, DETAIL1,
- "cache_return_entry_rw: %ld, delete pending (%d).\n",
- id, refcnt, 0 );
-#else
Debug( LDAP_DEBUG_TRACE,
"====> cache_return_entry_%s( %ld ): delete pending (%d)\n",
rw ? "w" : "r", id, refcnt );
-#endif
} else {
cache_entry_private_destroy( e );
/* free cache mutex */
ldap_pvt_thread_mutex_unlock( &cache->c_mutex );
-#ifdef NEW_LOGGING
- LDAP_LOG( CACHE, DETAIL1,
- "cache_return_entry_rw: (%ld): deleted (%d)\n", id, refcnt, 0 );
-#else
Debug( LDAP_DEBUG_TRACE,
"====> cache_return_entry_%s( %ld ): deleted (%d)\n",
rw ? "w" : "r", id, refcnt );
-#endif
}
} else {
/* free cache mutex */
ldap_pvt_thread_mutex_unlock( &cache->c_mutex );
-#ifdef NEW_LOGGING
- LDAP_LOG( CACHE, DETAIL1,
- "cache_return_entry_rw: ID %ld:%s returned (%d)\n",
- id, rw ? "w": "r", refcnt );
-#else
Debug( LDAP_DEBUG_TRACE,
"====> cache_return_entry_%s( %ld ): returned (%d)\n",
rw ? "w" : "r", id, refcnt);
-#endif
}
}
int i, rc;
Entry *ee;
-#ifdef NEW_LOGGING
- LDAP_LOG( CACHE, ENTRY,
- "cache_add_entry_rw: add (%s):%s to cache\n",
- e->e_dn, rw ? "w" : "r", 0 );
-#endif
/* set cache mutex */
ldap_pvt_thread_mutex_lock( &cache->c_mutex );
/* free cache mutex */
ldap_pvt_thread_mutex_unlock( &cache->c_mutex );
-#ifdef NEW_LOGGING
- LDAP_LOG( CACHE, ERR,
- "cache_add_entry_rw: add (%s):%ld private init failed!\n",
- e->e_dn, e->e_id, 0 );
-#else
Debug( LDAP_DEBUG_ANY,
"====> cache_add_entry( %ld ): \"%s\": private init failed!\n",
e->e_id, e->e_dn, 0 );
-#endif
return( -1 );
}
if ( avl_insert( &cache->c_dntree, (caddr_t) e,
- (AVL_CMP) entry_dn_cmp, avl_dup_error ) != 0 )
+ entry_dn_cmp, avl_dup_error ) != 0 )
{
/* free cache mutex */
ldap_pvt_thread_mutex_unlock( &cache->c_mutex );
-#ifdef NEW_LOGGING
- LDAP_LOG( CACHE, DETAIL1,
- "cache_add_entry: (%s):%ld already in cache.\n",
- e->e_dn, e->e_id, 0 );
-#else
Debug( LDAP_DEBUG_TRACE,
"====> cache_add_entry( %ld ): \"%s\": already in dn cache\n",
e->e_id, e->e_dn, 0 );
-#endif
cache_entry_private_destroy(e);
/* id tree */
if ( avl_insert( &cache->c_idtree, (caddr_t) e,
- (AVL_CMP) entry_id_cmp, avl_dup_error ) != 0 )
+ entry_id_cmp, avl_dup_error ) != 0 )
{
-#ifdef NEW_LOGGING
- LDAP_LOG( CACHE, DETAIL1,
- "cache_add_entry: (%s):%ls already in cache.\n",
- e->e_dn, e->e_id, 0 );
-#else
Debug( LDAP_DEBUG_ANY,
"====> cache_add_entry( %ld ): \"%s\": already in id cache\n",
e->e_id, e->e_dn, 0 );
-#endif
/* delete from dn tree inserted above */
if ( avl_delete( &cache->c_dntree, (caddr_t) e,
- (AVL_CMP) entry_dn_cmp ) == NULL )
+ entry_dn_cmp ) == NULL )
{
-#ifdef NEW_LOGGING
- LDAP_LOG( CACHE, INFO,
- "cache_add_entry: can't delete (%s) from cache.\n",
- e->e_dn, 0, 0 );
-#else
Debug( LDAP_DEBUG_ANY, "====> can't delete from dn cache\n",
0, 0, 0 );
-#endif
}
cache_entry_private_destroy(e);
assert( e->e_private );
if ( avl_insert( &cache->c_dntree, (caddr_t) e,
- (AVL_CMP) entry_dn_cmp, avl_dup_error ) != 0 )
+ entry_dn_cmp, avl_dup_error ) != 0 )
{
-#ifdef NEW_LOGGING
- LDAP_LOG( CACHE, DETAIL1,
- "cache_update_entry: (%s):%ld already in dn cache\n",
- e->e_dn, e->e_id, 0 );
-#else
Debug( LDAP_DEBUG_TRACE,
"====> cache_update_entry( %ld ): \"%s\": already in dn cache\n",
e->e_id, e->e_dn, 0 );
-#endif
/* free cache mutex */
ldap_pvt_thread_mutex_unlock( &cache->c_mutex );
/* id tree */
if ( avl_insert( &cache->c_idtree, (caddr_t) e,
- (AVL_CMP) entry_id_cmp, avl_dup_error ) != 0 )
+ entry_id_cmp, avl_dup_error ) != 0 )
{
-#ifdef NEW_LOGGING
- LDAP_LOG( CACHE, DETAIL1,
- "cache_update_entry: (%s)%ld already in id cache\n",
- e->e_dn, e->e_id, 0 );
-#else
Debug( LDAP_DEBUG_ANY,
"====> cache_update_entry( %ld ): \"%s\": already in id cache\n",
e->e_id, e->e_dn, 0 );
-#endif
/* delete from dn tree inserted above */
if ( avl_delete( &cache->c_dntree, (caddr_t) e,
- (AVL_CMP) entry_dn_cmp ) == NULL )
+ entry_dn_cmp ) == NULL )
{
-#ifdef NEW_LOGGING
- LDAP_LOG( CACHE, INFO,
- "cache_update_entry: can't delete (%s)%ld from dn cache.\n",
- e->e_dn, e->e_id, 0 );
-#else
Debug( LDAP_DEBUG_ANY, "====> can't delete from dn cache\n",
0, 0, 0 );
-#endif
}
/* free cache mutex */
ldap_pvt_thread_mutex_lock( &cache->c_mutex );
if ( (ep = (Entry *) avl_find( cache->c_dntree, (caddr_t) &e,
- (AVL_CMP) entry_dn_cmp )) != NULL )
+ entry_dn_cmp )) != NULL )
{
int state;
count++;
/* free cache mutex */
ldap_pvt_thread_mutex_unlock( &cache->c_mutex );
-#ifdef NEW_LOGGING
- LDAP_LOG( CACHE, INFO,
- "cache_find_entry_dn2id: (%s) %ld not ready: %d\n",
- ndn->bv_val, id, state );
-#else
Debug(LDAP_DEBUG_TRACE,
- "====> cache_find_entry_dn2id(\"%s\"): %ld (not ready) %d\n",
+ "====> cache_find_entry_ndn2id(\"%s\"): %ld (not ready) %d\n",
ndn->bv_val, id, state);
-#endif
ldap_pvt_thread_yield();
goto try_again;
/* free cache mutex */
ldap_pvt_thread_mutex_unlock( &cache->c_mutex );
-#ifdef NEW_LOGGING
- LDAP_LOG( CACHE, DETAIL1,
- "cache_find_entry_dn2id: (%s): %ld %d tries\n",
- ndn->bv_val, id, count );
-#else
Debug(LDAP_DEBUG_TRACE,
- "====> cache_find_entry_dn2id(\"%s\"): %ld (%d tries)\n",
+ "====> cache_find_entry_ndn2id(\"%s\"): %ld (%d tries)\n",
ndn->bv_val, id, count);
-#endif
} else {
/* free cache mutex */
ldap_pvt_thread_mutex_lock( &cache->c_mutex );
if ( (ep = (Entry *) avl_find( cache->c_idtree, (caddr_t) &e,
- (AVL_CMP) entry_id_cmp )) != NULL )
+ entry_id_cmp )) != NULL )
{
int state;
ID ep_id;
/* free cache mutex */
ldap_pvt_thread_mutex_unlock( &cache->c_mutex );
-#ifdef NEW_LOGGING
- LDAP_LOG( CACHE, INFO,
- "cache_find_entry_id: (%ld)->%ld not ready (%d).\n",
- id, ep_id, state );
-
-#else
Debug(LDAP_DEBUG_TRACE,
"====> cache_find_entry_id( %ld ): %ld (not ready) %d\n",
id, ep_id, state);
-#endif
ldap_pvt_thread_yield();
goto try_again;
/* free cache mutex */
ldap_pvt_thread_mutex_unlock( &cache->c_mutex );
-#ifdef NEW_LOGGING
- LDAP_LOG( CACHE, DETAIL1,
- "cache_find_entry_id: %ld -> %s found %d tries.\n",
- ep_id, ep->e_dn, count );
-#else
Debug(LDAP_DEBUG_TRACE,
"====> cache_find_entry_id( %ld ) \"%s\" (found) (%d tries)\n",
ep_id, ep->e_dn, count);
-#endif
return( ep );
}
assert( e->e_private );
-#ifdef NEW_LOGGING
- LDAP_LOG( CACHE, ENTRY,
- "cache_delete_entry: delete %ld.\n", e->e_id, 0, 0 );
-#else
Debug( LDAP_DEBUG_TRACE, "====> cache_delete_entry( %ld )\n",
e->e_id, 0, 0 );
-#endif
rc = cache_delete_entry_internal( cache, e );
int rc = 0; /* return code */
/* dn tree */
- if ( avl_delete( &cache->c_dntree, (caddr_t) e, (AVL_CMP) entry_dn_cmp )
- == NULL )
+ if ( avl_delete( &cache->c_dntree, (caddr_t) e, entry_dn_cmp ) == NULL )
{
rc = -1;
}
/* id tree */
- if ( avl_delete( &cache->c_idtree, (caddr_t) e, (AVL_CMP) entry_id_cmp )
- == NULL )
+ if ( avl_delete( &cache->c_idtree, (caddr_t) e, entry_id_cmp ) == NULL )
{
rc = -1;
}
/* set cache mutex */
ldap_pvt_thread_mutex_lock( &cache->c_mutex );
-#ifdef NEW_LOGGING
- LDAP_LOG( CACHE, ENTRY, "cache_release_all: enter\n" , 0, 0, 0);
-#else
Debug( LDAP_DEBUG_TRACE, "====> cache_release_all\n", 0, 0, 0 );
-#endif
while ( (e = cache->c_lrutail) != NULL && LEI(e)->lei_refcnt == 0 ) {
}
if ( cache->c_cursize ) {
-#ifdef NEW_LOGGING
- LDAP_LOG( CACHE, INFO,
- "cache_release_all: Entry cache could not be emptied.\n", 0, 0, 0);
-#else
Debug( LDAP_DEBUG_TRACE, "Entry-cache could not be emptied\n", 0, 0, 0 );
-#endif
}
/* free cache mutex */