Edgewall Software
Modify

Ticket #2805 (closed defect: fixed)

Opened 6 years ago

Last modified 6 years ago

Ticket view sometimes silently drops information

Reported by: exarkun@… Owned by: jonas
Priority: high Milestone: 0.10
Component: ticket system Version: devel
Severity: major Keywords:
Cc: exarkun@…
Release Notes:
API Changes:

Description (last modified by athomas) (diff)

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

Change History

comment:1 Changed 6 years ago by anonymous

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 Changed 6 years ago by cboos

  • Milestone set to 0.10

comment:3 Changed 6 years ago by athomas

  • Description modified (diff)

comment:4 Changed 6 years ago by jonas

  • Cc exarkun@… added

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

comment:5 Changed 6 years ago by anonymous

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

comment:6 Changed 6 years ago by cboos

  • Resolution set to fixed
  • Status changed from new to closed

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

View

Add a comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
The resolution will be deleted. Next status will be 'reopened'
to The owner will be changed from jonas. Next status will be 'closed'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.