#2246: buildbot.status.builder.BuilderStatus uses slow LRU implementation
---------------------+------------------------
Reporter:  szager    |       Owner:
    Type:  defect    |      Status:  new
Priority:  critical  |   Milestone:  undecided
 Version:  0.8.6     |  Resolution:
Keywords:            |
---------------------+------------------------

Comment (by szager):

 After looking at this a bit more carefully, I'm not sure that
 AsyncLRUCache is the right way to go.

 Looking at the call counts in my profiling data, this change would
 cause an increase in the number of defer.Deferred callback sequences
 by approximately a factor of 10.

 That's no mistake: BuilderStatus.touchBuildCache() is called several
 hundred times per second, about ten times more frequently than
 defer.Deferred.callback().  I'm wary of blithely adding that amount of
 complexity to a method called so frequently.

 From what I can tell, the AsyncLRUCache implementation uses Deferred's
 primarily to
 accomodate concurrent access to the cache.  That's probably overkill
 for this purpose (after all, the existing implementation of
 BuilderStatus.touchBuildCache has no such protection).  I think a
 better approach will be to use the basic LRU logic from AsyncLRUCache
 (which looks pretty sound), minus the concurrency protections.

 Please let me know if that sounds reasonable.  I'm going to cook up an
 implementation to use for our project (we are in dire straits right now),
 and I can report back on the outcome.

 Thanks,

 Stefan

-- 
Ticket URL: <http://trac.buildbot.net/ticket/2246#comment:2>
Buildbot <http://buildbot.net/>
Buildbot: build/test automation
------------------------------------------------------------------------------
This SF email is sponsosred by:
Try Windows Azure free for 90 days Click Here 
http://p.sf.net/sfu/sfd2d-msazure
_______________________________________________
Buildbot-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/buildbot-commits

Reply via email to