From 16d5fdbfbda8724f64595726879589fcb301f508 Mon Sep 17 00:00:00 2001 From: Howard Chu Date: Fri, 10 Jun 2011 03:27:40 -0700 Subject: [PATCH] ITS#6944 limit op cache to 10 ops per thread --- servers/slapd/operation.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/servers/slapd/operation.c b/servers/slapd/operation.c index 5707396dd9..ae7b4a8a72 100644 --- a/servers/slapd/operation.c +++ b/servers/slapd/operation.c @@ -127,10 +127,21 @@ slap_op_free( Operation *op, void *ctx ) op->o_controls = opbuf->ob_controls; if ( ctx ) { - void *op2 = NULL; + Operation *op2 = NULL; ldap_pvt_thread_pool_setkey( ctx, (void *)slap_op_free, op, slap_op_q_destroy, &op2, NULL ); LDAP_STAILQ_NEXT( op, o_next ) = op2; + if ( op2 ) { + op->o_tincr = op2->o_tincr + 1; + /* No more than 10 ops on per-thread free list */ + if ( op->o_tincr > 10 ) { + ldap_pvt_thread_pool_setkey( ctx, (void *)slap_op_free, + op2, slap_op_q_destroy, NULL, NULL ); + ber_memfree_x( op, NULL ); + } + } else { + op->o_tincr = 1; + } } else { ber_memfree_x( op, NULL ); } -- 2.39.5