Edgewall Software

Opened 17 years ago

Last modified 14 years ago

#6088 closed defect

<coderanger_> jg: The problem is we cache the results of the current query for speed, and that list now contains deleted tickets for you. — at Version 1

Reported by: anonymous Owned by: Matthew Good
Priority: high Milestone: 0.11
Component: report system Version: devel
Severity: normal Keywords:
Cc: Branch:
Release Notes:
API Changes:
Internal Changes:

Description (last modified by Noah Kantrowitz)

Oops…
Trac detected an internal error:

TypeError: can't compare datetime.datetime to int

If you think this should work you can reproduce the problem, you should consider reporting this to the Trac team.

Before you do that, though, please first try searching for similar issues, as it is quite likely that this problem has been reported before. For questions about installation and configuration of Trac, please try the mailing list instead of filing a ticket.

Otherwise, please ==== How to Reproduce ==== While doing a GET operation on `/query`, Trac issued an internal error. ''(please provide additional details here)'' Request parameters: {{{ {'milestone': u'Untriaged', 'order': u'priority', 'status': [u'new', u'assigned', u'reopened']} }}} ==== System Information ==== || '''Trac''' || `0.11dev-r5992` || || '''Python''' || `2.5.1 (r251:54863, May 2 2007, 16:27:44) ` [[br]] `[GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)]` || || '''setuptools''' || `0.6c7` || || '''SQLite''' || `3.3.13` || || '''pysqlite''' || `2.3.2` || || '''Genshi''' || `0.4.4` || ==== Python Traceback ==== {{{ Traceback (most recent call last): File "/home/coderanger/local-trac-0.11/lib/python2.5/Trac-0.11dev_r5992-py2.5.egg/trac/web/main.py", line 381, in dispatch_request dispatcher.dispatch(req) File "/home/coderanger/local-trac-0.11/lib/python2.5/Trac-0.11dev_r5992-py2.5.egg/trac/web/main.py", line 191, in dispatch resp = chosen_handler.process_request(req) File "/home/coderanger/local-trac-0.11/lib/python2.5/Trac-0.11dev_r5992-py2.5.egg/trac/ticket/query.py", line 638, in process_request return self.display_html(context, query) File "/home/coderanger/local-trac-0.11/lib/python2.5/Trac-0.11dev_r5992-py2.5.egg/trac/ticket/query.py", line 720, in display_html data = query.template_data(context, tickets, orig_list, orig_time) File "/home/coderanger/local-trac-0.11/lib/python2.5/Trac-0.11dev_r5992-py2.5.egg/trac/ticket/query.py", line 506, in template_data if ticket['time'] > orig_time: TypeError: can't compare datetime.datetime to int }}} a new ticket at the Trac project site, where you can describe the problem and explain how to reproduce it.
Python Traceback
Most recent call last:

    * File "/home/coderanger/local-trac-0.11/lib/python2.5/Trac-0.11dev_r5992-py2.5.egg/trac/web/main.py", line 381, in dispatch_request
      Code fragment:
       376. if not env and env_error:
       377. raise HTTPInternalError(env_error)
       378. try:
       379. try:
       380. dispatcher = RequestDispatcher(env)
       381. dispatcher.dispatch(req)
       382. except RequestDone:
       383. pass
       384. return req._response or []
       385. finally:
       386. if not run_once:
      Local variables:
      Name	Value
      after 	[' except RequestDone:', ' pass', ' ...
      before 	[' if not env and env_error:', ' raise ...
      dispatcher 	<trac.web.main.RequestDispatcher object at 0x121e0d0>
      e 	TypeError("can't compare datetime.datetime to int",)
      env 	<trac.env.Environment object at 0xd26cd0>
      env_error 	None
      env_path 	'/home/olpc-code/newtrac'
      environ 	{'trac.base_url': u'https://dev.laptop.org/', 'wsgi.multiprocess': True, ...
      exc_info 	(<type 'exceptions.TypeError'>, TypeError("can't compare datetime.datetime ...
      filename 	'/home/coderanger/local-trac-0.11/lib/python2.5/Trac-0.11dev_r5992-py2.5.eg ...
      frames 	[{'function': 'dispatch_request', 'lines_before': [' if not env and ...
      has_admin 	True
      line 	' dispatcher.dispatch(req)'
      lineno 	380
      message 	u"TypeError: can't compare datetime.datetime to int"
      path_info 	'/query'
      req 	<Request "GET u'/query'">
      run_once 	False
      script_url 	'/query'
      start_response 	<function start_response at 0x44bf050>
      tb 	<traceback object at 0x2fd6b48>
      tb_hide 	None
      traceback 	'Traceback (most recent call last):\n File ...
    * File "/home/coderanger/local-trac-0.11/lib/python2.5/Trac-0.11dev_r5992-py2.5.egg/trac/web/main.py", line 191, in dispatch
      Code fragment:
       186. 'Do you have cookies enabled?')
       187.  
       188. # Process the request and render the template
       189. try:
       190. try:
       191. resp = chosen_handler.process_request(req)
       192. if resp:
       193. if len(resp) == 2: # Clearsilver
       194. chrome.populate_hdf(req)
       195. template, content_type = \
       196. self._post_process_request(req, *resp)
      Local variables:
      Name	Value
      chosen_handler 	<trac.ticket.query.QueryModule object at 0x1267910>
      chrome 	<trac.web.chrome.Chrome object at 0x110f490>
      err 	(<type 'exceptions.TypeError'>, TypeError("can't compare datetime.datetime ...
      handler 	<trac.ticket.query.QueryModule object at 0x1267910>
      req 	<Request "GET u'/query'">
      self 	<trac.web.main.RequestDispatcher object at 0x121e0d0>
    * File "/home/coderanger/local-trac-0.11/lib/python2.5/Trac-0.11dev_r5992-py2.5.egg/trac/ticket/query.py", line 638, in process_request
      Code fragment:
       633. format = req.args.get('format')
       634. if format:
       635. Mimeview(self.env).send_converted(req, 'trac.ticket.Query', query,
       636. format, 'query')
       637.  
       638. return self.display_html(context, query)
       639.  
       640. # Internal methods
       641.  
       642. def _get_constraints(self, req):
       643. constraints = {}
      Local variables:
      Name	Value
      cols 	None
      constraints 	{'status': [u'new', u'assigned', u'reopened'], 'milestone': ...
      context 	<Context '[root]' <Request "GET u'/query'">>
      conversion 	('tab', 'Tab-delimited Text', 'tsv', 'trac.ticket.Query', ...
      format 	None
      query 	<trac.ticket.query.Query object at 0x1c322d0>
      req 	<Request "GET u'/query'">
      rows 	[]
      self 	<trac.ticket.query.QueryModule object at 0x1267910>
    * File "/home/coderanger/local-trac-0.11/lib/python2.5/Trac-0.11dev_r5992-py2.5.egg/trac/ticket/query.py", line 720, in display_html
      Code fragment:
       715. except TracError, e:
       716. data = {'id': rest_id, 'time': 0, 'changetime': 0,
       717. 'summary': tag.em(e)}
       718. tickets.insert(orig_list.index(rest_id), data)
       719.  
       720. data = query.template_data(context, tickets, orig_list, orig_time)
       721.  
       722. # For clients without JavaScript, we add a new constraint here if
       723. # requested
       724. constraints = data['constraints']
       725. if 'add' in req.args:
      Local variables:
      Name	Value
      context 	<Context '[root]' <Request "GET u'/query'">>
      data 	{'changetime': 0, 'summary': <Element "em">, 'id': 3863, 'time': 0}
      db 	<trac.db.pool.PooledConnection object at 0x44bae60>
      e 	ResourceNotFound('Ticket 3863 does not exist.',)
      id 	u'3863'
      orig_list 	[3813, 3830, 2448, 2651, 2712, 2717, 2837, 2839, 2926, 2973, 3117, 3782, ...
      orig_time 	datetime.datetime(2007, 9, 26, 17, 26, 2, tzinfo=<FixedOffset "UTC" ...
      query 	<trac.ticket.query.Query object at 0x1c322d0>
      query_constraints 	u"{'status': [u'new', u'assigned', u'reopened'], 'milestone': ...
      query_time 	datetime.datetime(2007, 9, 26, 17, 26, 2, tzinfo=<FixedOffset "UTC" ...
      req 	<Request "GET u'/query'">
      rest_id 	3863
      rest_list 	[3813, 2448, 2651, 2712, 3825, 3826, 3827, 3828, 3829, 3831, 3832, 3833, ...
      self 	<trac.ticket.query.QueryModule object at 0x1267910>
      t 	{u'status': u'new', u'changetime': datetime.datetime(2007, 9, 26, 17, 9, ...
      ticket 	<trac.ticket.model.Ticket object at 0x345c5d0>
      tickets 	[{'status': u'new', 'changetime': datetime.datetime(2007, 9, 26, 17, 27, ...
      tid 	3821
    * File "/home/coderanger/local-trac-0.11/lib/python2.5/Trac-0.11dev_r5992-py2.5.egg/trac/ticket/query.py", line 506, in template_data
      Code fragment:
       501. groupsequence = []
       502. for ticket in tickets:
       503. if orig_list:
       504. # Mark tickets added or changed since the query was first
       505. # executed
       506. if ticket['time'] > orig_time:
       507. ticket['added'] = True
       508. elif ticket['changetime'] > orig_time:
       509. ticket['changed'] = True
       510. if self.group:
       511. group_key = ticket[self.group]
      Local variables:
      Name	Value
      col 	'component'
      cols 	['id', 'summary', 'status', 'owner', 'type', 'priority', 'component']
      constraint 	{'values': [u'Untriaged'], 'mode': ''}
      constraints 	{'status': {'values': [u'new', u'assigned', u'reopened'], 'mode': ''}, ...
      context 	<Context '[root]' <Request "GET u'/query'">>
      f 	{'name': 'verified', 'value': u'', 'custom': True, 'label': u'Verified', ...
      field 	{'name': 'verified', 'value': u'', 'custom': True, 'label': u'Verified', ...
      field_data 	{'label': u'Verified', 'type': u'checkbox', 'order': 0, 'value': u'', ...
      fields 	{'status': {'optional': True, 'type': 'radio', 'options': [u'assigned', ...
      groups 	{}
      groupsequence 	[]
      headers 	[{'href': ...
      k 	'milestone'
      labels 	{'status': 'Status', 'changetime': 'Modified', 'verified': u'Verified', ...
      mode 	''
      modes 	{'text': [{'name': 'contains', 'value': '~'}, {'name': "doesn't contain", ...
      neg 	False
      orig_list 	[3813, 3830, 2448, 2651, 2712, 2717, 2837, 2839, 2926, 2973, 3117, 3782, ...
      orig_time 	datetime.datetime(2007, 9, 26, 17, 26, 2, tzinfo=<FixedOffset "UTC" ...
      self 	<trac.ticket.query.Query object at 0x1c322d0>
      ticket 	{'changetime': 0, 'summary': <Element "em">, 'id': 3825, 'time': 0}
      tickets 	[{'status': u'new', 'changetime': datetime.datetime(2007, 9, 26, 17, 27, ...
      v 	[u'Untriaged']
      val 	u'Untriaged'

File "/home/coderanger/local-trac-0.11/lib/python2.5/Trac-0.11dev_r5992-py2.5.egg/trac/web/main.py", line 381, in dispatch_request
  dispatcher.dispatch(req)
File "/home/coderanger/local-trac-0.11/lib/python2.5/Trac-0.11dev_r5992-py2.5.egg/trac/web/main.py", line 191, in dispatch
  resp = chosen_handler.process_request(req)
File "/home/coderanger/local-trac-0.11/lib/python2.5/Trac-0.11dev_r5992-py2.5.egg/trac/ticket/query.py", line 638, in process_request
  return self.display_html(context, query)
File "/home/coderanger/local-trac-0.11/lib/python2.5/Trac-0.11dev_r5992-py2.5.egg/trac/ticket/query.py", line 720, in display_html
  data = query.template_data(context, tickets, orig_list, orig_time)
File "/home/coderanger/local-trac-0.11/lib/python2.5/Trac-0.11dev_r5992-py2.5.egg/trac/ticket/query.py", line 506, in template_data
  if ticket['time'] > orig_time:

System Information:

User Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20061201 Firefox/2.0.0.6 (Ubuntu-feisty)
Trac: 	0.11dev-r5992
Python: 	2.5.1 (r251:54863, May 2 2007, 16:27:44) [GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)]
setuptools: 	0.6c7
SQLite: 	3.3.13
pysqlite: 	2.3.2
Genshi: 	0.4.4
jQuery:	1.1.3.1

TracGuide — The Trac User and Administration Guide
Trac Powered

Powered by Trac 0.11dev-r5992

Change History (1)

comment:1 by Noah Kantrowitz, 17 years ago

Description: modified (diff)

The problem is if a ticket in the cached query list doesn't exist, its time is 0, not a null datetime object.

Note: See TracTickets for help on using tickets.