Edgewall Software

Opened 15 years ago

Closed 15 years ago

#1579 closed defect (fixed)

Can't modify ticket

Reported by: markb Owned by: Christopher Lenz
Priority: highest Milestone: 0.9
Component: ticket system Version: devel
Severity: critical Keywords:
Cc: odela01@… Branch:
Release Notes:
API Changes:
Internal Changes:

Description (last modified by Christopher Lenz)

Trying to add a comment to an existing ticket doesn't work. After clicking on the "Submit Changes" button, I'm presented with this error…

Trac detected an internal error:

int argument required

Traceback (most recent call last):
  File "/usr/local/python/lib/python2.4/site-packages/trac/web/cgi_frontend.py", line 103, in run
    dispatch_request(os.getenv('PATH_INFO', ''), req, env)
  File "/usr/local/python/lib/python2.4/site-packages/trac/web/main.py", line 419, in dispatch_request
  File "/usr/local/python/lib/python2.4/site-packages/trac/web/main.py", line 283, in dispatch
    resp = chosen_handler.process_request(req)
  File "/usr/local/python/lib/python2.4/site-packages/trac/Ticket.py", line 468, in process_request
    self._do_save(req, db, ticket)
  File "/usr/local/python/lib/python2.4/site-packages/trac/Ticket.py", line 609, in _do_save
    self.log.exception("Failure sending notification on change to "
TypeError: int argument required

I'm using revision: 1703

Attachments (0)

Change History (7)

comment:1 by PBruin, 15 years ago

Confirm, I had the same thing after upgrading. However, the second time it worked and it seems to be fine now.

comment:2 by PBruin, 15 years ago

Confirm, I had the same thing after upgrading. However, the second time it worked and it seems to be fine now.

comment:3 by Christopher Lenz, 15 years ago

Description: modified (diff)
Owner: changed from Jonas Borgström to Christopher Lenz
Status: newassigned

comment:4 by Christopher Lenz, 15 years ago

This is actually due to an error send mail notifications.

comment:5 by anonymous, 15 years ago

This is a really high priority [


comment:6 by odela01@…, 15 years ago

Cc: odela01@… added

I'm not sure why the email notification is failing, although using a ; to separate email addresses appears to be one cause.

The actual exception is because the log statement expects the ticketid to be an int, but it's a string at that point. I think the culprit is line 221 of Notify.py: {{{ tktid = '%s' % tktid}}}, where tkt is a reference to the original ticket object that was passed to the notify method. I have applied the following patch, and it seems to work:

--- Notify.py.orig      Fri Jun  3 16:59:51 2005
+++ Notify.py   Fri Jun  3 17:00:41 2005
@@ -218,7 +218,6 @@
     def format_props(self):
         tkt = self.ticket
-        tkt['id'] = '%s' % tkt['id']
         t = self.modtime or tkt['time']
         tkt['modified'] = time.strftime('%c', time.localtime(t))
         fields = ['id',        'status',
@@ -252,7 +251,7 @@
         for f in fields:
             if not tkt.has_key(f): continue
-            fval = tkt[f]
+            fval = str(tkt[f])
             fname = f.startswith('custom_') and f[7:] or f
             if '\n' in str(fval):
                 big.append((fname.capitalize(), fval))

After that is done, the log call works correctly. The stack trace of the email notification failure is now logged:

17:11:16 Trac[web_ui] ERROR: Failure sending notification on change to ticket #165: len() of unsized object
Traceback (most recent call last):
  File "/usr/local/lib/python2.3/site-packages/trac/ticket/web_ui.py", line 347, in _do_save
    tn.notify(ticket, newticket=0, modtime=now)
  File "/usr/local/lib/python2.3/site-packages/trac/Notify.py", line 217, in notify
    NotifyEmail.notify(self, ticket['id'], subject)
  File "/usr/local/lib/python2.3/site-packages/trac/Notify.py", line 117, in notify
    Notify.notify(self, resid)
  File "/usr/local/lib/python2.3/site-packages/trac/Notify.py", line 56, in notify
  File "/usr/local/lib/python2.3/site-packages/trac/Notify.py", line 347, in send
    NotifyEmail.send(self, rcpt, hdrs)
  File "/usr/local/lib/python2.3/site-packages/trac/Notify.py", line 150, in send
    self.server.sendmail(self.from_email, rcpt, msg.as_string())
  File "/usr/local/lib/python2.3/email/Message.py", line 130, in as_string
    g.flatten(self, unixfrom=unixfrom)
  File "/usr/local/lib/python2.3/email/Generator.py", line 103, in flatten
  File "/usr/local/lib/python2.3/email/Generator.py", line 138, in _write
  File "/usr/local/lib/python2.3/email/Generator.py", line 184, in _write_headers
    header_name=h, continuation_ws='\t').encode()
  File "/usr/local/lib/python2.3/email/Header.py", line 412, in encode
    newchunks += self._split(s, charset, targetlen, splitchars)
  File "/usr/local/lib/python2.3/email/Header.py", line 297, in _split
    elen = charset.encoded_header_len(encoded)
  File "/usr/local/lib/python2.3/email/Charset.py", line 341, in encoded_header_len
    return len(s)
TypeError: len() of unsized object

I haven't had a chance to look into this yet. Hope that helps.

comment:7 by Christopher Lenz, 15 years ago

Milestone: 0.9
Resolution: fixed
Status: assignedclosed

Should be fixed in [1831].

Modify Ticket

Change Properties
Set your email in Preferences
as closed The owner will remain Christopher Lenz.
The resolution will be deleted. Next status will be 'reopened'.
to The owner will be changed from Christopher Lenz 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.