Edgewall Software
Modify

Opened 16 years ago

Closed 16 years ago

Last modified 16 years ago

#2805 closed defect (fixed)

Ticket view sometimes silently drops information

Reported by: exarkun@… Owned by: Jonas Borgström
Priority: high Milestone: 0.10
Component: ticket system Version: devel
Severity: major Keywords:
Cc: exarkun@… Branch:
Release Notes:
API Changes:
Internal Changes:

Description (last modified by Alec Thomas)

I've got a Ticket with a changelog (as returned by get_changelog) that looks like this:

[(1139910447,
  'miro',
  'comment',
  '',
  '<long important comment snipped>'),  
 (1139910447, 'miro', 'comment', '', ''),
 (1139910447, 'miro', 'attachment', '', 'sshserver.py')]

The 1st 'comment' entry comes from an actual comment on the ticket. The 2nd 'comment' entry comes from the description of the attachment on the attachment table - ie, it is a row returned by the final SELECT clause in the statement which retrieves the changelog (line ~288 in trac/ticket/model.py). Since the timestamp and author on these two rows are the same, when the web ui builds up the change data set for the rendering pass (line ~420 in trac/ticket/web_ui.py), it does not create a new `changes' entry, but merely overwrites the first comment with the second.

It seems as though the schema is missing a reliable way to associate multiple pieces of change information with each other. The ad hoc time/author mechanism cannot be counted on to work in all cases.

I've patched my local version of trac like this in order to temporarily work around the problem:

=== trac/ticket/web_ui.py
==================================================================
--- trac/ticket/web_ui.py       (revision 2048)
+++ trac/ticket/web_ui.py       (local)
@@ -418,7 +418,7 @@
         curr_date   = 0
         changes = []
         for date, author, field, old, new in changelog:
-            if date != curr_date or author != curr_author:
+            if date != curr_date or author != curr_author or (field in changes[-1]):
                 changes.append({
                     'date': util.format_datetime(date),
                     'author': author,

Attachments (0)

Change History (6)

comment:1 by anonymous, 16 years ago

Forgot to pre the changelog, here it is again:

[(1139910447,
  'miro',
  'comment',
  '',
  '<long important comment snipped>'),  
 (1139910447, 'miro', 'comment', '', ''),
 (1139910447, 'miro', 'attachment', '', 'sshserver.py')]

comment:2 by Christian Boos, 16 years ago

Milestone: 0.10

comment:3 by Alec Thomas, 16 years ago

Description: modified (diff)

comment:4 by Jonas Borgström, 16 years ago

Cc: exarkun@… added

How did you manage to enter a ticket comment and attach a file at the exact same time?

comment:5 by anonymous, 16 years ago

This happened while migrating another bug tracker's database to trac.

comment:6 by Christian Boos, 16 years ago

Resolution: fixed
Status: newclosed

I believe this should be fixed with the [3364/trunk/trac/ticket/web_ui.py] changes (the uid = date, author, permanent part).

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain Jonas Borgström.
The resolution will be deleted. Next status will be 'reopened'.
to The owner will be changed from Jonas Borgström to the specified user.

Add Comment


E-mail address and name can be saved in the Preferences .
 
Note: See TracTickets for help on using tickets.