1
0
Эх сурвалжийг харах

Ticket 48195 - Slow replication when deleting large quantities of multi-valued attributes

https://fedorahosted.org/389/ticket/48195

In update resoultion for entry deletion, there is still use of valuearray_find() to find an existingvalue to update its csn.
with the fix for ticket #346 there exists slapi_valueset_find() which uses the possibility to do a binary search on the
values.
Fix: do not use valuearray_find

Review: Rich, Thanks
Ludwig Krispenz 10 жил өмнө
parent
commit
09ab8c799f

+ 4 - 4
ldap/servers/slapd/valueset.c

@@ -1411,12 +1411,12 @@ valueset_update_csn_for_valuearray_ext(Slapi_ValueSet *vs, const Slapi_Attr *a,
 		int del_index = -1, del_count = 0;
 		for (i=0;valuestoupdate[i]!=NULL;++i)
 		{
-			int index= valuearray_find(a, vs->va, valuestoupdate[i]);
-			if(index!=-1)
+			Slapi_Value *v = slapi_valueset_find(a, vs, valuestoupdate[i]);
+			if(v)
 			{
-				value_update_csn(vs->va[index],t,csn);
+				value_update_csn(v,t,csn);
 				if (csnref_updated)
-					valuestoupdate[i]->v_csnset = (CSNSet *)value_get_csnset(vs->va[index]);
+					valuestoupdate[i]->v_csnset = (CSNSet *)value_get_csnset(v);
 				valuearrayfast_add_value_passin(&vaf_valuesupdated,valuestoupdate[i]);
 				valuestoupdate[i]= NULL;
 				del_count++;