(GCFE) Component Lookup error on offices

Bug #613564 reported by Jim B. Glenn
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
KARL3
Fix Released
Low
Carlos de la Guardia

Bug Description

Reported via error monitor.

ENTRY
Wed Aug 4 12:49:49 2010
Exception when processing https://csef-karl.org/offices/csef/
Traceback (most recent call last):
  File "/opt/karl/gcfe/3.0.1-1/src/karl/karl/errorlog.py", line 15, in middleware
    return app(environ, start_response)
  File "/opt/karl/gcfe/3.0.1-1/eggs/repoze.zodbconn-0.11-py2.5.egg/repoze/zodbconn/connector.py", line 21, in __call__
    result = self.next_app(environ, start_response)
  File "/opt/karl/gcfe/3.0.1-1/eggs/repoze.retry-0.9.4-py2.5.egg/repoze/retry/__init__.py", line 88, in __call__
    app_iter = self.application(environ, replace_start_response)
  File "/opt/karl/gcfe/3.0.1-1/eggs/repoze.tm2-1.0a5-py2.5.egg/repoze/tm/__init__.py", line 23, in __call__
    result = self.application(environ, save_status_and_headers)
  File "/opt/karl/gcfe/3.0.1-1/eggs/Paste-1.7.2-py2.5.egg/paste/registry.py", line 350, in __call__
    app_iter = self.application(environ, start_response)
  File "/opt/karl/gcfe/3.0.1-1/eggs/repoze.who-1.0.15-py2.5.egg/repoze/who/middleware.py", line 107, in __call__
    app_iter = app(environ, wrapper.wrap_start_response)
  File "/opt/karl/gcfe/3.0.1-1/eggs/repoze.browserid-0.3-py2.5.egg/repoze/browserid/middleware.py", line 127, in __call__
    return self.app(environ, start_response)
  File "/opt/karl/gcfe/3.0.1-1/eggs/repoze.bfg-1.2-py2.5.egg/repoze/bfg/router.py", line 130, in __call__
    response = view_callable(context, request)
  File "/opt/karl/gcfe/3.0.1-1/eggs/repoze.bfg-1.2-py2.5.egg/repoze/bfg/configuration.py", line 1753, in _secured_view
    return view(context, request)
  File "/opt/karl/gcfe/3.0.1-1/src/karl/karl/views/retail.py", line 37, in retail_view
    context.middle_portlets)
  File "/opt/karl/gcfe/3.0.1-1/src/karl/karl/views/retail.py", line 68, in _get_portlet_html
    portlet_info = getMultiAdapter((model, request), IIntranetPortlet)
  File "/opt/karl/gcfe/3.0.1-1/eggs/zope.component-3.6.0-py2.5.egg/zope/component/_api.py", line 111, in getMultiAdapter
    raise ComponentLookupError(objects, interface, name)
ComponentLookupError: ((<karl.content.models.page.Page object u'real-lives' at 0x2aaab51ee848>, <Request at 0x2aaab4bd3f90 GET https://csef-karl.org/offices/csef/>), <InterfaceClass karl.views.interface
s.IIntranetPortlet>, u'')

ENTRY
Wed Aug 4 12:49:58 2010
Exception when processing https://csef-karl.org/offices/csef/
Traceback (most recent call last):
  File "/opt/karl/gcfe/3.0.1-1/src/karl/karl/errorlog.py", line 15, in middleware
    return app(environ, start_response)
  File "/opt/karl/gcfe/3.0.1-1/eggs/repoze.zodbconn-0.11-py2.5.egg/repoze/zodbconn/connector.py", line 21, in __call__
    result = self.next_app(environ, start_response)
  File "/opt/karl/gcfe/3.0.1-1/eggs/repoze.retry-0.9.4-py2.5.egg/repoze/retry/__init__.py", line 88, in __call__
    app_iter = self.application(environ, replace_start_response)
  File "/opt/karl/gcfe/3.0.1-1/eggs/repoze.tm2-1.0a5-py2.5.egg/repoze/tm/__init__.py", line 23, in __call__
    result = self.application(environ, save_status_and_headers)
  File "/opt/karl/gcfe/3.0.1-1/eggs/Paste-1.7.2-py2.5.egg/paste/registry.py", line 350, in __call__
    app_iter = self.application(environ, start_response)
  File "/opt/karl/gcfe/3.0.1-1/eggs/repoze.who-1.0.15-py2.5.egg/repoze/who/middleware.py", line 107, in __call__
    app_iter = app(environ, wrapper.wrap_start_response)
  File "/opt/karl/gcfe/3.0.1-1/eggs/repoze.browserid-0.3-py2.5.egg/repoze/browserid/middleware.py", line 127, in __call__
    return self.app(environ, start_response)
  File "/opt/karl/gcfe/3.0.1-1/eggs/repoze.bfg-1.2-py2.5.egg/repoze/bfg/router.py", line 130, in __call__
    response = view_callable(context, request)
  File "/opt/karl/gcfe/3.0.1-1/eggs/repoze.bfg-1.2-py2.5.egg/repoze/bfg/configuration.py", line 1753, in _secured_view
    return view(context, request)
  File "/opt/karl/gcfe/3.0.1-1/src/karl/karl/views/retail.py", line 37, in retail_view
    context.middle_portlets)
  File "/opt/karl/gcfe/3.0.1-1/src/karl/karl/views/retail.py", line 68, in _get_portlet_html
    portlet_info = getMultiAdapter((model, request), IIntranetPortlet)
  File "/opt/karl/gcfe/3.0.1-1/eggs/zope.component-3.6.0-py2.5.egg/zope/component/_api.py", line 111, in getMultiAdapter
    raise ComponentLookupError(objects, interface, name)
ComponentLookupError: ((<karl.content.models.page.Page object u'real-lives' at 0x2aaab51ee848>, <Request at 0x2aaab4bd3810 GET https://csef-karl.org/offices/csef/>), <InterfaceClass karl.views.interface
s.IIntranetPortlet>, u'')

ENTRY
Wed Aug 4 12:50:05 2010
Exception when processing https://csef-karl.org/offices/csef/
Traceback (most recent call last):
  File "/opt/karl/gcfe/3.0.1-1/src/karl/karl/errorlog.py", line 15, in middleware
    return app(environ, start_response)
  File "/opt/karl/gcfe/3.0.1-1/eggs/repoze.zodbconn-0.11-py2.5.egg/repoze/zodbconn/connector.py", line 21, in __call__
    result = self.next_app(environ, start_response)
  File "/opt/karl/gcfe/3.0.1-1/eggs/repoze.retry-0.9.4-py2.5.egg/repoze/retry/__init__.py", line 88, in __call__
    app_iter = self.application(environ, replace_start_response)
  File "/opt/karl/gcfe/3.0.1-1/eggs/repoze.tm2-1.0a5-py2.5.egg/repoze/tm/__init__.py", line 23, in __call__
    result = self.application(environ, save_status_and_headers)
  File "/opt/karl/gcfe/3.0.1-1/eggs/Paste-1.7.2-py2.5.egg/paste/registry.py", line 350, in __call__
    app_iter = self.application(environ, start_response)
  File "/opt/karl/gcfe/3.0.1-1/eggs/repoze.who-1.0.15-py2.5.egg/repoze/who/middleware.py", line 107, in __call__
    app_iter = app(environ, wrapper.wrap_start_response)
  File "/opt/karl/gcfe/3.0.1-1/eggs/repoze.browserid-0.3-py2.5.egg/repoze/browserid/middleware.py", line 127, in __call__
    return self.app(environ, start_response)
  File "/opt/karl/gcfe/3.0.1-1/eggs/repoze.bfg-1.2-py2.5.egg/repoze/bfg/router.py", line 130, in __call__
    response = view_callable(context, request)
  File "/opt/karl/gcfe/3.0.1-1/eggs/repoze.bfg-1.2-py2.5.egg/repoze/bfg/configuration.py", line 1753, in _secured_view
    return view(context, request)
  File "/opt/karl/gcfe/3.0.1-1/src/karl/karl/views/retail.py", line 37, in retail_view
    context.middle_portlets)

  File "/opt/karl/gcfe/3.0.1-1/src/karl/karl/views/retail.py", line 68, in _get_portlet_html
    portlet_info = getMultiAdapter((model, request), IIntranetPortlet)
  File "/opt/karl/gcfe/3.0.1-1/eggs/zope.component-3.6.0-py2.5.egg/zope/component/_api.py", line 111, in getMultiAdapter
    raise ComponentLookupError(objects, interface, name)
ComponentLookupError: ((<karl.content.models.page.Page object u'real-lives' at 0x2aaab51ee848>, <Request at 0x2aaab4bd3f90 GET https://csef-karl.org/offices/csef/>), <InterfaceClass karl.views.interface
s.IIntranetPortlet>, u'')

Revision history for this message
Paul Everitt (paul-agendaless) wrote :

Boy, now that we can see all the intermittent errors, we're filling M45 up pretty fast. Probably need to triage.

Changed in karl3:
assignee: nobody → Chris Rossi (chris-archimedeanco)
importance: Undecided → Low
milestone: none → m45
Revision history for this message
Chris Rossi (chris-archimedeanco) wrote :

Judging by the callstack, I'm guessing that someone entered the path to a page for one of the portlets in the edit_intranet view. Since we don't have a portlet for the Page content type, this broke the office homepage. Whoever did it realized their error and undid it, because everything looks pretty ok now.

The only fix I can think of is a validation check on edit_intranet view to make sure that the paths entered for portlets actually resolve to some piece of content and that the content is of a type for which there is an IIntranetPortlet adapter registered.

Revision history for this message
Paul Everitt (paul-agendaless) wrote :

Let's put this in M46 and get Carlos to do what Chris suggested: raise a form validation error for the user on Edit Intranet portlets. Let's also consider handling the exception and putting into the portlet something that says an attempt was made to point at an id that doesn't exist.

Yes, it's obvious that my goal here is to shut up the alarm. :)

Changed in karl3:
assignee: Chris Rossi (chris-archimedeanco) → Carlos de la Guardia (cguardia)
milestone: m45 → m46
Revision history for this message
Carlos de la Guardia (cguardia) wrote :

For consistency, the ComponentLookupError exception is handled and a text is shown in the portlet place indicating that the content referenced by that path is not a portlet. This is the existing behavior for when a portlet does not exist, in which case a portlet missing message is shown.

Changed in karl3:
status: New → Fix Committed
Revision history for this message
JimPGlenn (jpglenn09) wrote :

fixed

Changed in karl3:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.