@ -107,7 +116,11 @@ void KV_BtreeArray::purge_some(unsigned long long QCnow_ms, bool aggressive) {
QC_entry_t*qce;
unsignedlonglongaccess_ms_min=0;
unsignedlonglongaccess_ms_max=0;
spin_rdlock(&lock);
#ifdef PROXYSQL_QC_PTHREAD_MUTEX
pthread_rwlock_rdlock(&lock);
#else
spin_rdlock(&lock);
#endif
for(i=0;i<ptrArray->len;i++){
qce=(QC_entry_t*)ptrArray->index(i);
if(aggressive){// we have been asked to do aggressive purging
@ -133,7 +146,11 @@ void KV_BtreeArray::purge_some(unsigned long long QCnow_ms, bool aggressive) {
}
}
freeable_memory=_size;
#ifdef PROXYSQL_QC_PTHREAD_MUTEX
pthread_rwlock_unlock(&lock);
#else
spin_rdunlock(&lock);
#endif
boolcond_freeable_memory=false;
if(aggressive==false){
uint64_ttotal_freeable_memory=0;
@ -150,7 +167,11 @@ void KV_BtreeArray::purge_some(unsigned long long QCnow_ms, bool aggressive) {
if(aggressive){
access_ms_lower_mark=access_ms_min+(access_ms_max-access_ms_min)*0.1;// hardcoded for now. Remove the entries with access time in the 10% range closest to access_ms_min
}
#ifdef PROXYSQL_QC_PTHREAD_MUTEX
pthread_rwlock_wrlock(&lock);
#else
spin_wrlock(&lock);
#endif
for(i=0;i<ptrArray->len;i++){
qce=(QC_entry_t*)ptrArray->index(i);
booldrop_entry=false;
@ -181,7 +202,11 @@ void KV_BtreeArray::purge_some(unsigned long long QCnow_ms, bool aggressive) {