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;
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 );
}
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) {
&(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;
}
}
}
- 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));
}
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;
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)
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);
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);
*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);
}
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;
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 );
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 );
}
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;
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);
/* 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 );
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 */
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 )) {
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) {
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);
}
} else {
- Debug( LDAP_DEBUG_TRACE, "QUERY NOT CACHEABLE\n",
+ Debug( LDAP_DEBUG_CACHE, "QUERY NOT CACHEABLE\n",
0, 0, 0);
}
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 );
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 )) {
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,
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++;
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;
}
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 );