[Freeipa-devel] Caching ldap limits for whole connection (performance)
Martin Basti
mbasti at redhat.com
Tue Nov 17 09:37:52 UTC 2015
On 16.11.2015 20:18, Rob Crittenden wrote:
> 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
I missed that part there, thank you.
Martin
More information about the Freeipa-devel
mailing list