incubator-bloodhound-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Apache Bloodhound" <bloodhound-...@incubator.apache.org>
Subject [Apache Bloodhound] #22: Infinite recursion error when initialising a plugin that extends itself
Date Tue, 03 Apr 2012 17:10:06 GMT
#22: Infinite recursion error when initialising a plugin that extends itself
-----------------------+-------------------------------------
 Reporter:  gjm        |      Owner:  gjm
     Type:  defect     |     Status:  new
 Priority:  blocker    |  Milestone:  RC1 for initial release
Component:  trac core  |    Version:
 Keywords:             |
-----------------------+-------------------------------------
 This bug might be considered as the combined fault of core trac and a
 plugin that is implemented in this way. However, it is not necessarily
 clear how a plugin should get around this and we should not see an
 infinite recursion error when it happens.

 As an example of the bug, install the [http://trac-
 hacks.org/wiki/ThemeEnginePlugin ThemeEnginePlugin] - when enabled, there
 is an infinite recursion:

 {{{
 Traceback (most recent call last):
   File "trac/web/api.py", line 496, in send_error
     data, 'text/html')
   File "trac/web/chrome.py", line 982, in render_template
     template = self.load_template(filename, method=method)
   File "trac/web/chrome.py", line 942, in load_template
     self.get_all_templates_dirs(), auto_reload=self.auto_reload,
   File "trac/web/chrome.py", line 659, in get_all_templates_dirs
     for provider in self.template_providers:
   File "trac/core.py", line 78, in extensions
     components = [component.compmgr[cls] for cls in classes]
   File "trac/core.py", line 215, in __getitem__
     component = cls(self)
   File "trac/core.py", line 154, in __call__
     self.__init__()
   File "themeengine/admin.py", line 21, in __init__
     self.system = ThemeEngineSystem(self.env)
   File "trac/core.py", line 154, in __call__
     self.__init__()
   File "themeengine/api.py", line 65, in __init__
     for provider in self.providers:
   File "trac/core.py", line 78, in extensions
     components = [component.compmgr[cls] for cls in classes]
   File "trac/core.py", line 215, in __getitem__
     component = cls(self)
   File "trac/core.py", line 154, in __call__
     self.__init__()
   File "themeengine/api.py", line 65, in __init__
     for provider in self.providers:
   File "trac/core.py", line 78, in extensions
     components = [component.compmgr[cls] for cls in classes]
   File "trac/core.py", line 215, in __getitem__
     component = cls(self)
   File "trac/core.py", line 154, in __call__
     self.__init__()
   File "themeengine/api.py", line 65, in __init__
     for provider in self.providers:
 [..]
   File "trac/core.py", line 154, in __call__
     self.__init__()
   File "themeengine/api.py", line 65, in __init__
     for provider in self.providers:
   File "trac/core.py", line 78, in extensions
     components = [component.compmgr[cls] for cls in classes]
   File "trac/core.py", line 215, in __getitem__
     component = cls(self)
 RuntimeError: maximum recursion depth exceeded while calling a Python
 object
 }}}

-- 
Ticket URL: <https://issues.apache.org/bloodhound/ticket/22>
Apache Bloodhound <https://issues.apache.org/bloodhound/>
The Apache Bloodhound (incubating) issue tracker

Mime
View raw message