From f50316f1418da4b5fb7e1486bf081ebef7b611ee Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Wed, 1 Feb 2006 19:31:35 +0000 Subject: [PATCH] Use LDAP_DEBUG_CACHE instead of TRACE. Delete remove_mutex. --- servers/slapd/overlays/pcache.c | 91 +++++++++++++++------------------ 1 file changed, 41 insertions(+), 50 deletions(-) diff --git a/servers/slapd/overlays/pcache.c b/servers/slapd/overlays/pcache.c index 0fc10352e1..e41ee6ddaf 100644 --- a/servers/slapd/overlays/pcache.c +++ b/servers/slapd/overlays/pcache.c @@ -132,7 +132,6 @@ typedef struct cache_manager_s { void *cc_arg; ldap_pvt_thread_mutex_t cache_mutex; - ldap_pvt_thread_mutex_t remove_mutex; query_manager* qm; /* query cache managed by the cache manager */ } cache_manager; @@ -264,7 +263,7 @@ add_query_on_top (query_manager* qm, CachedQuery* qc) qc->lru_down = top; qc->lru_up = NULL; - Debug( LDAP_DEBUG_TRACE, "Base of added query = %s\n", + Debug( LDAP_DEBUG_CACHE, "Base of added query = %s\n", q->base.bv_val, 0, 0 ); } @@ -493,7 +492,7 @@ query_containment(Operation *op, query_manager *qm, MatchingRule* mrule = NULL; if (inputf != NULL) { - Debug( LDAP_DEBUG_TRACE, "Lock QC index = %d\n", + Debug( LDAP_DEBUG_CACHE, "Lock QC index = %d\n", template_index, 0, 0 ); ldap_pvt_thread_rdwr_rlock(&(templa[template_index].t_rwlock)); for(qc=templa[template_index].query; qc != NULL; qc= qc->next) { @@ -524,7 +523,7 @@ query_containment(Operation *op, query_manager *qm, &(fs->f_ava->aa_value), &text); if (rc != LDAP_SUCCESS) { ldap_pvt_thread_rdwr_runlock(&(templa[template_index].t_rwlock)); - Debug( LDAP_DEBUG_TRACE, + Debug( LDAP_DEBUG_CACHE, "Unlock: Exiting QC index=%d\n", template_index, 0, 0 ); return NULL; @@ -595,7 +594,7 @@ query_containment(Operation *op, query_manager *qm, } } } - Debug( LDAP_DEBUG_TRACE, + Debug( LDAP_DEBUG_CACHE, "Not answerable: Unlock QC index=%d\n", template_index, 0, 0 ); ldap_pvt_thread_rdwr_runlock(&(templa[template_index].t_rwlock)); @@ -637,7 +636,7 @@ static void add_query( } new_cached_query->lru_up = NULL; new_cached_query->lru_down = NULL; - Debug( LDAP_DEBUG_TRACE, "Added query expires at %ld\n", + Debug( LDAP_DEBUG_CACHE, "Added query expires at %ld\n", (long) new_cached_query->expiry_time, 0, 0 ); new_query = (Query*)new_cached_query; @@ -647,7 +646,7 @@ static void add_query( new_query->attrs = query->attrs; /* Adding a query */ - Debug( LDAP_DEBUG_TRACE, "Lock AQ index = %d\n", + Debug( LDAP_DEBUG_CACHE, "Lock AQ index = %d\n", template_index, 0, 0 ); ldap_pvt_thread_rdwr_wlock(&templ->t_rwlock); if (templ->query == NULL) @@ -658,10 +657,10 @@ static void add_query( new_cached_query->prev = NULL; templ->query = new_cached_query; templ->no_of_queries++; - Debug( LDAP_DEBUG_TRACE, "TEMPLATE %d QUERIES++ %d\n", + Debug( LDAP_DEBUG_CACHE, "TEMPLATE %d QUERIES++ %d\n", template_index, templ->no_of_queries, 0 ); - Debug( LDAP_DEBUG_TRACE, "Unlock AQ index = %d \n", + Debug( LDAP_DEBUG_CACHE, "Unlock AQ index = %d \n", template_index, 0, 0 ); ldap_pvt_thread_rdwr_wunlock(&templ->t_rwlock); @@ -703,7 +702,7 @@ static void cache_replacement(query_manager* qm, struct berval *result) result->bv_len = 0; if (!bottom) { - Debug ( LDAP_DEBUG_TRACE, + Debug ( LDAP_DEBUG_CACHE, "Cache replacement invoked without " "any query in LRU list\n", 0, 0, 0 ); ldap_pvt_thread_mutex_unlock(&qm->lru_mutex); @@ -717,12 +716,12 @@ static void cache_replacement(query_manager* qm, struct berval *result) *result = bottom->q_uuid; bottom->q_uuid.bv_val = NULL; - Debug( LDAP_DEBUG_TRACE, "Lock CR index = %d\n", temp_id, 0, 0 ); + Debug( LDAP_DEBUG_CACHE, "Lock CR index = %d\n", temp_id, 0, 0 ); ldap_pvt_thread_rdwr_wlock(&(qm->templates[temp_id].t_rwlock)); remove_from_template(bottom, (qm->templates+temp_id)); - Debug( LDAP_DEBUG_TRACE, "TEMPLATE %d QUERIES-- %d\n", + Debug( LDAP_DEBUG_CACHE, "TEMPLATE %d QUERIES-- %d\n", temp_id, qm->templates[temp_id].no_of_queries, 0 ); - Debug( LDAP_DEBUG_TRACE, "Unlock CR index = %d\n", temp_id, 0, 0 ); + Debug( LDAP_DEBUG_CACHE, "Unlock CR index = %d\n", temp_id, 0, 0 ); ldap_pvt_thread_rdwr_wunlock(&(qm->templates[temp_id].t_rwlock)); free_query(bottom); } @@ -815,7 +814,7 @@ remove_query_data ( op->o_req_ndn = qi->xdn; if ( qi->del) { - Debug( LDAP_DEBUG_TRACE, "DELETING ENTRY TEMPLATE=%s\n", + Debug( LDAP_DEBUG_CACHE, "DELETING ENTRY TEMPLATE=%s\n", query_uuid->bv_val, 0, 0 ); op->o_tag = LDAP_REQ_DELETE; @@ -837,7 +836,7 @@ remove_query_data ( mod.sml_values = vals; mod.sml_nvalues = NULL; mod.sml_next = NULL; - Debug( LDAP_DEBUG_TRACE, + Debug( LDAP_DEBUG_CACHE, "REMOVING TEMP ATTR : TEMPLATE=%s\n", query_uuid->bv_val, 0, 0 ); @@ -979,35 +978,32 @@ cache_entries( op_tmp.o_dn = cm->db.be_rootdn; op_tmp.o_ndn = cm->db.be_rootndn; - Debug( LDAP_DEBUG_TRACE, "UUID for query being added = %s\n", + Debug( LDAP_DEBUG_CACHE, "UUID for query being added = %s\n", uuidbuf, 0, 0 ); for ( e=si->head; e; e=si->head ) { si->head = e->e_private; e->e_private = NULL; - Debug( LDAP_DEBUG_NONE, "LOCKING REMOVE MUTEX\n", 0, 0, 0 ); - ldap_pvt_thread_mutex_lock(&cm->remove_mutex); - Debug( LDAP_DEBUG_NONE, "LOCKED REMOVE MUTEX\n", 0, 0, 0); while ( cm->cur_entries > (cm->max_entries) ) { qm->crfunc(qm, &crp_uuid); if (crp_uuid.bv_val) { - Debug( LDAP_DEBUG_TRACE, + Debug( LDAP_DEBUG_CACHE, "Removing query UUID %s\n", crp_uuid.bv_val, 0, 0 ); return_val = remove_query_data(&op_tmp, rs, &crp_uuid); - Debug( LDAP_DEBUG_TRACE, + Debug( LDAP_DEBUG_CACHE, "QUERY REMOVED, SIZE=%d\n", return_val, 0, 0); ldap_pvt_thread_mutex_lock( &cm->cache_mutex ); cm->cur_entries -= return_val; cm->num_cached_queries--; - Debug( LDAP_DEBUG_TRACE, + Debug( LDAP_DEBUG_CACHE, "STORED QUERIES = %lu\n", cm->num_cached_queries, 0, 0 ); ldap_pvt_thread_mutex_unlock( &cm->cache_mutex ); - Debug( LDAP_DEBUG_TRACE, + Debug( LDAP_DEBUG_CACHE, "QUERY REMOVED, CACHE =" "%d entries\n", cm->cur_entries, 0, 0 ); @@ -1015,10 +1011,9 @@ cache_entries( } return_val = merge_entry(&op_tmp, e, query_uuid); - ldap_pvt_thread_mutex_unlock(&cm->remove_mutex); ldap_pvt_thread_mutex_lock(&cm->cache_mutex); cm->cur_entries += return_val; - Debug( LDAP_DEBUG_TRACE, + Debug( LDAP_DEBUG_CACHE, "ENTRY ADDED/MERGED, CACHED ENTRIES=%d\n", cm->cur_entries, 0, 0 ); return_val = 0; @@ -1079,7 +1074,7 @@ pcache_response( ldap_pvt_thread_mutex_lock(&cm->cache_mutex); cm->num_cached_queries++; - Debug( LDAP_DEBUG_TRACE, "STORED QUERIES = %lu\n", + Debug( LDAP_DEBUG_CACHE, "STORED QUERIES = %lu\n", cm->num_cached_queries, 0, 0 ); ldap_pvt_thread_mutex_unlock(&cm->cache_mutex); @@ -1182,7 +1177,7 @@ pcache_chk_controls( /* fallthru */ case SLAP_CONTROL_CRITICAL: - Debug( LDAP_DEBUG_TRACE, "%s: " + Debug( LDAP_DEBUG_CACHE, "%s: " "%scritical pagedResults control " "disabled with proxy cache%s.\n", op->o_log_prefix, non, stripped ); @@ -1233,7 +1228,7 @@ pcache_op_search( return SLAP_CB_CONTINUE; } - Debug( LDAP_DEBUG_TRACE, "query template of incoming query = %s\n", + Debug( LDAP_DEBUG_CACHE, "query template of incoming query = %s\n", tempstr.bv_val, 0, 0 ); /* FIXME: cannot cache/answer requests with pagedResults control */ @@ -1278,7 +1273,7 @@ pcache_op_search( BackendDB *save_bd = op->o_bd; slap_callback *save_cb = op->o_callback; - Debug( LDAP_DEBUG_TRACE, "QUERY ANSWERABLE\n", 0, 0, 0 ); + Debug( LDAP_DEBUG_CACHE, "QUERY ANSWERABLE\n", 0, 0, 0 ); op->o_tmpfree( filter_attrs, op->o_tmpmemctx ); ldap_pvt_thread_rdwr_runlock(&qm->templates[i].t_rwlock); if ( BER_BVISNULL( &answerable->q_uuid )) { @@ -1295,7 +1290,7 @@ pcache_op_search( return i; } - Debug( LDAP_DEBUG_TRACE, "QUERY NOT ANSWERABLE\n", 0, 0, 0 ); + Debug( LDAP_DEBUG_CACHE, "QUERY NOT ANSWERABLE\n", 0, 0, 0 ); ldap_pvt_thread_mutex_lock(&cm->cache_mutex); if (cm->num_cached_queries >= cm->max_queries) { @@ -1307,7 +1302,7 @@ pcache_op_search( slap_callback *cb; struct search_info *si; - Debug( LDAP_DEBUG_TRACE, "QUERY CACHEABLE\n", 0, 0, 0 ); + Debug( LDAP_DEBUG_CACHE, "QUERY CACHEABLE\n", 0, 0, 0 ); query.filter = filter_dup(op->ors_filter, NULL); add_filter_attrs(op, &query.attrs, &qm->attr_sets[attr_set], filter_attrs, fattr_cnt, fattr_got_oc); @@ -1344,7 +1339,7 @@ pcache_op_search( } } else { - Debug( LDAP_DEBUG_TRACE, "QUERY NOT CACHEABLE\n", + Debug( LDAP_DEBUG_CACHE, "QUERY NOT CACHEABLE\n", 0, 0, 0); } @@ -1423,33 +1418,32 @@ consistency_check( query = templ->query_last; if ( query ) pause = 0; op->o_time = slap_get_time(); - ldap_pvt_thread_mutex_lock(&cm->remove_mutex); while (query && (query->expiry_time < op->o_time)) { - ldap_pvt_thread_mutex_lock(&qm->lru_mutex); - remove_query(qm, query); - ldap_pvt_thread_mutex_unlock(&qm->lru_mutex); - Debug( LDAP_DEBUG_TRACE, "Lock CR index = %d\n", + Debug( LDAP_DEBUG_CACHE, "Lock CR index = %d\n", i, 0, 0 ); ldap_pvt_thread_rdwr_wlock(&templ->t_rwlock); remove_from_template(query, templ); - Debug( LDAP_DEBUG_TRACE, "TEMPLATE %d QUERIES-- %d\n", + Debug( LDAP_DEBUG_CACHE, "TEMPLATE %d QUERIES-- %d\n", i, templ->no_of_queries, 0 ); - Debug( LDAP_DEBUG_TRACE, "Unlock CR index = %d\n", + Debug( LDAP_DEBUG_CACHE, "Unlock CR index = %d\n", i, 0, 0 ); ldap_pvt_thread_rdwr_wunlock(&templ->t_rwlock); + ldap_pvt_thread_mutex_lock(&qm->lru_mutex); + remove_query(qm, query); + ldap_pvt_thread_mutex_unlock(&qm->lru_mutex); if ( BER_BVISNULL( &query->q_uuid )) return_val = 0; else return_val = remove_query_data(op, &rs, &query->q_uuid); - Debug( LDAP_DEBUG_TRACE, "STALE QUERY REMOVED, SIZE=%d\n", + Debug( LDAP_DEBUG_CACHE, "STALE QUERY REMOVED, SIZE=%d\n", return_val, 0, 0 ); ldap_pvt_thread_mutex_lock(&cm->cache_mutex); cm->cur_entries -= return_val; cm->num_cached_queries--; - Debug( LDAP_DEBUG_TRACE, "STORED QUERIES = %lu\n", + Debug( LDAP_DEBUG_CACHE, "STORED QUERIES = %lu\n", cm->num_cached_queries, 0, 0 ); ldap_pvt_thread_mutex_unlock(&cm->cache_mutex); - Debug( LDAP_DEBUG_TRACE, + Debug( LDAP_DEBUG_CACHE, "STALE QUERY REMOVED, CACHE =" "%d entries\n", cm->cur_entries, 0, 0 ); @@ -1457,7 +1451,6 @@ consistency_check( query = query->prev; free_query(query_prev); } - ldap_pvt_thread_mutex_unlock(&cm->remove_mutex); } ldap_pvt_thread_mutex_lock( &slapd_rq.rq_mutex ); if ( ldap_pvt_runqueue_isrunning( &slapd_rq, rtask )) { @@ -1732,7 +1725,7 @@ pc_cf_gen( ConfigArgs *c ) return( 1 ); } cm->cc_period = (time_t)t; - Debug( LDAP_DEBUG_TRACE, + Debug( LDAP_DEBUG_CACHE, "Total # of attribute sets to be cached = %d.\n", cm->numattrsets, 0, 0 ); qm->attr_sets = ( struct attr_set * )ch_calloc( cm->numattrsets, @@ -1833,15 +1826,15 @@ pc_cf_gen( ConfigArgs *c ) temp->no_of_queries = 0; ber_str2bv( c->argv[1], 0, 1, &temp->querystr ); - Debug( LDAP_DEBUG_TRACE, "Template:\n", 0, 0, 0 ); - Debug( LDAP_DEBUG_TRACE, " query template: %s\n", + Debug( LDAP_DEBUG_CACHE, "Template:\n", 0, 0, 0 ); + Debug( LDAP_DEBUG_CACHE, " query template: %s\n", temp->querystr.bv_val, 0, 0 ); temp->attr_set_index = i; qm->attr_sets[i].flags |= PC_REFERENCED; - Debug( LDAP_DEBUG_TRACE, " attributes: \n", 0, 0, 0 ); + Debug( LDAP_DEBUG_CACHE, " attributes: \n", 0, 0, 0 ); if ( ( attrarray = qm->attr_sets[i].attrs ) != NULL ) { for ( i=0; attrarray[i].an_name.bv_val; i++ ) - Debug( LDAP_DEBUG_TRACE, "\t%s\n", + Debug( LDAP_DEBUG_CACHE, "\t%s\n", attrarray[i].an_name.bv_val, 0, 0 ); } temp++; @@ -1933,7 +1926,6 @@ pcache_db_init( ldap_pvt_thread_mutex_init(&qm->lru_mutex); ldap_pvt_thread_mutex_init(&cm->cache_mutex); - ldap_pvt_thread_mutex_init(&cm->remove_mutex); return 0; } @@ -2069,7 +2061,6 @@ pcache_db_destroy( ldap_pvt_thread_mutex_destroy( &qm->lru_mutex ); ldap_pvt_thread_mutex_destroy( &cm->cache_mutex ); - ldap_pvt_thread_mutex_destroy( &cm->remove_mutex ); free( qm ); free( cm ); -- 2.39.5