From 94b361ed45f342e97d405dd7236257cdf4c414ca Mon Sep 17 00:00:00 2001 From: =?utf8?q?Ond=C5=99ej=20Kuzn=C3=ADk?= Date: Thu, 29 Jul 2021 13:23:28 +0100 Subject: [PATCH] ITS#9620 Freeze cache while we search --- servers/slapd/back-monitor/search.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/servers/slapd/back-monitor/search.c b/servers/slapd/back-monitor/search.c index d23497a7ad..49702788f8 100644 --- a/servers/slapd/back-monitor/search.c +++ b/servers/slapd/back-monitor/search.c @@ -215,6 +215,9 @@ monitor_back_search( Operation *op, SlapReply *rs ) return rs->sr_err; } + /* Freeze the cache while we're using it */ + ldap_pvt_thread_rdwr_rlock( &mi->mi_cache_rwlock ); + rs->sr_attrs = op->oq_search.rs_attrs; switch ( op->oq_search.rs_scope ) { case LDAP_SCOPE_BASE: @@ -260,6 +263,8 @@ monitor_back_search( Operation *op, SlapReply *rs ) monitor_cache_release( mi, e ); } + ldap_pvt_thread_rdwr_runlock( &mi->mi_cache_rwlock ); + rs->sr_attrs = NULL; rs->sr_err = rc; if ( rs->sr_err != SLAPD_ABANDON ) { -- 2.47.3