Modify

Opened 16 years ago

Closed 16 years ago

#3772 closed defect (fixed)

[patch] Race condition in TicketRPC.update()

Reported by: Michael Stone Owned by: osimons
Priority: highest Component: XmlRpcPlugin
Severity: normal Keywords:
Cc: Trac Release: 0.10

Description (last modified by osimons)

There is a race between t.save_changes() and tn.notify() in TicketRPC.update() in tracrpc/ticket.py which can result in Trac sending notification emails with empty changelogs. I believe that this race can be fixed with the following simple patch:

Index: ticket.py
===================================================================
--- ticket.py   (revision 4311)
+++ ticket.py   (working copy)
@@ -102,7 +102,7 @@
         t = model.Ticket(self.env, id)
         for k, v in attributes.iteritems():
             t[k] = v
-        t.save_changes(req.authname or 'anonymous', comment)
+        t.save_changes(req.authname or 'anonymous', comment, when=now)
 
         if notify:
             try:

Attachments (0)

Change History (6)

comment:1 Changed 16 years ago by Michael Stone

Many thanks to coderanger for guiding me through the Trac codebase as I diagnosed this issue.

comment:2 Changed 16 years ago by Steffen Pingel

Description: modified (diff)
Priority: normalhighest
Summary: Race condition in TicketRPC.update()[patch] Race condition in TicketRPC.update()

comment:3 Changed 16 years ago by osimons

Resolution: fixed
Status: newclosed

(In [6055]) XmlRpcPlugin: Fix for possible ticket update race condition. Closes #3772.

Thanks to mstone for report and patch.

comment:4 Changed 16 years ago by osimons

Description: modified (diff)
Resolution: fixed
Status: closedreopened

Reopen to change owner.

comment:5 Changed 16 years ago by osimons

Owner: changed from Alec Thomas to osimons
Status: reopenednew

comment:6 Changed 16 years ago by osimons

Resolution: fixed
Status: newclosed

...and closing again.

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain osimons.
The resolution will be deleted. Next status will be 'reopened'.

Add Comment


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

 
Note: See TracTickets for help on using tickets.