[Freeipa-devel] Caching ldap limits for whole connection (performance)
Rob Crittenden
rcritten at redhat.com
Mon Nov 16 19:18:23 UTC 2015
Martin Basti wrote:
>
>
> On 16.11.2015 18:57, Martin Basti wrote:
>> How does this code work (IMO it doesn't), ldap2.py
>>
>> def find_entries(self, filter=None, attrs_list=None, base_dn=None,
>> scope=_ldap.SCOPE_SUBTREE, time_limit=None,
>> size_limit=None, search_refs=False,
>> paged_search=False):
>>
>> def _get_limits():
>> """Get configured global limits, caching them for more
>> calls"""
>> if not _lims:
>> config = self.get_ipa_config()
>> _lims['time'] = int(config.get('ipasearchtimelimit',
>> [None])[0])
>> _lims['size'] =
>> int(config.get('ipasearchrecordslimit', [None])[0])
>> return _lims
>> _lims = {}
>>
>> if time_limit is None:
>> time_limit = _get_limits()['time']
>> if size_limit is None:
>> size_limit = _get_limits()['size']
>>
>> Code above is supposed to do caching, but it doesn't do it. This might
>> work if _lims were self._lims.
>> I tried similar code to test this behavior:
>>
>> class test:
>> def __init__(self):
>> pass
>>
>> def cached_call(self):
>> """configured global limits"""
>> _lims = {}
>> def _get_limits():
>> if not _lims:
>> _lims['t']='oujeee'
>> print 'getting limits'
>> return _lims
>>
>> print "Limits:", _get_limits()['t']
>>
>> t = test()
>> t.cached_call()
>> t.cached_call()
>> t.cached_call()
>> t.cached_call()
>>
>> Output:
>> $ python testcaching.py
>> Limits: getting limits
>> oujeee
>> Limits: getting limits
>> oujeee
>> Limits: getting limits
>> oujeee
>> Limits: getting limits
>> oujeee
>>
>> So it does not do caching, or am I wrong?
>> Martin^2
>>
> That code works, the whole caching is just for the second call of
> _get_limits()
>
> Can we instead just caching limits for second use, do caching for whole
> connection?
> This may be effective for methods/commands that calls search and show
> several times.
>
> Is there something that prevents us to do that?
>
It already is cached. See get_ipa_config().
rob
More information about the Freeipa-devel
mailing list