#709: Troubleshoot DB upgrades to detect product names in product column
(0.8-dev)
---------------------+---------------
Reporter: olemis | Owner:
Type: defect | Status: new
Priority: major | Version:
Resolution: |
---------------------+---------------
Initially the value of product column was assigned with product name .
This was changed afterwards to use product prefix . In an instance
upgraded from 0.5 up to 0.8-dev I noticed this error.
[[span(Log entry, class=label label-info)]]
{{{
2013-11-04 19:52:34,287 Trac[web_ui] ERROR: - f9068b8c-84fd-4c5f-
a5a5-47c7b4968428 - Error rendering widget TicketQuery with options
{'args': {'max': 10, 'query':
'status=!closed&group=product&col=id&col=summary&col=owner&col=status&col=priority&order=priority&col=milestone',
'title': 'Active Tickets'}}
}}}
[[span(Traceback, class=label label-info)]]
{{{#!py
Traceback (most recent call last):
File "/path/to/bloodhound/bloodhound_dashboard/bhdashboard/web_ui.py",
line 269, in _render_widget
return wp.render_widget(name, ctx, options)
File "/path/to/bloodhound/bloodhound_dashboard/bhdashboard/util.py",
line 132, in widget_name_checker
return f(self, name, *args, **kwargs)
File
"/path/to/bloodhound/bloodhound_dashboard/bhdashboard/widgets/query.py",
line 100, in render_widget
data = qrymdl.process_request(fakereq, self.env)[1]
File
"/path/to/bloodhound/bloodhound_multiproduct/multiproduct/ticket/query.py",
line 163, in process_request
result = super(ProductQueryModule, self).process_request(req)
File "/path/to/bloodhound/trac/trac/ticket/query.py", line 968, in
process_request
return self.display_html(req, query)
File "/path/to/bloodhound/trac/trac/ticket/query.py", line 1066, in
display_html
tickets = query.execute(req)
File
"/path/to/bloodhound/bloodhound_multiproduct/multiproduct/ticket/query.py",
line 138, in execute
row[product_idx], val)
File
"/path/to/bloodhound/bloodhound_multiproduct/multiproduct/ticket/query.py",
line 76, in _get_ticket_href
env = lookup_product_env(self.env, prefix)
File "/path/to/bloodhound/bloodhound_multiproduct/multiproduct/env.py",
line 927, in lookup_env
return ProductEnvironment(global_env, prefix)
File "/path/to/bloodhound/bloodhound_multiproduct/multiproduct/env.py",
line 371, in __call__
return f(self, g_env, *args, **kwargs)
File
"/path/to/bloodhound/bloodhound_multiproduct/multiproduct/cache.py", line
67, in wrapper
result = user_function(*args, **kwds)
File "/path/to/bloodhound/bloodhound_multiproduct/multiproduct/env.py",
line 395, in __call__
return ComponentMeta.__call__(self, *args, **kwargs)
File "/path/to/bloodhound/trac/trac/core.py", line 140, in __call__
self.__init__(*args, **kwargs)
File "/path/to/bloodhound/trac/trac/core.py", line 107, in new_init
original_init(self, *args, **kwargs)
File "/path/to/bloodhound/bloodhound_multiproduct/multiproduct/env.py",
line 550, in __init__
raise LookupError("Missing product %s" % (product,))
LookupError: Missing product <product name>
}}}
The same problem made global /query page crash . Considering this it seems
that upgrade procedure (once upon a time) left these entries behind.
In any case /query must still work even if some entries in the DB are
corrupted . A second take on this might consist in detecting such entries
and offer a TracAdmin command to fix dangling ticket references.
--
Ticket URL: <https://issues.apache.org/bloodhound/ticket/709>
Apache Bloodhound <https://issues.apache.org/bloodhound/>
The Apache Bloodhound issue tracker