Roundup Tracker - Issues

Issue 906247

classification
Registration Confirmation - key map error
Type: Severity: normal
Components: Web interface Versions:
process
Status: closed fixed
:
: richard : micktwomey, richard
Priority: normal :

Created on 2004-02-27 23:07 by anonymous, last changed 2004-03-24 20:36 by richard.

Messages
msg1137 Author: [hidden] (anonymous) Date: 2004-02-27 23:07
Installed on Win2K running python 2.3.1.
I'm not sure if I missed something in the installation and 
initialization.

Registered through web-interface clicked on confirmation 
link. Resulted into the following:

A problem occurred while running a Python script. Here is 
the sequence of function calls leading up to the error, 
with the most recent (innermost) call first. The 
exception attributes are:
      __doc__ = 'Mapping key not found.' 
      __getitem__ = <bound method 
KeyError.__getitem__ of <exceptions.KeyError instance 
at 0x00B8C0D0>> 
      __init__ = <bound method KeyError.__init__ of 
<exceptions.KeyError instance at 0x00B8C0D0>> 
      __module__ = 'exceptions' 
      __str__ = <bound method KeyError.__str__ of 
<exceptions.KeyError instance at 0x00B8C0D0>> 
      args = ('rkpsVmstJ0npHK8UyBwRIJLG3NMGFsCe.',)

E:\Python23\Lib\bsddb\__init__.py in __getitem__
(self=<_DBWithCursor instance>, 
key='rkpsVmstJ0npHK8UyBwRIJLG3NMGFsCe.') 
  114     def __getitem__(self, key):
  115         self._checkOpen()
  116         return self.db[key]
 
      self = <_DBWithCursor instance>, global db = 
<module '_bsddb' from 'e:\python23\DLLs\_bsddb.pyd'>, 
key = 'rkpsVmstJ0npHK8UyBwRIJLG3NMGFsCe.'
  117 
  118     def __setitem__(self, key, value):


msg1138 Author: [hidden] (richard) Date: 2004-02-28 00:48
Logged In: YES 
user_id=6405

What version of Roundup are you using? 
 
Could you please attach the entire error page? 
 
msg1139 Author: [hidden] (micktwomey) Date: 2004-03-23 15:51
Logged In: YES 
user_id=1004574

I'm having the same problem:

* roundup 0.6.7
* python 2.2.1
* Sun Java Desktop System (based on SuSE 8.1)

Using the demo instance I get the following trackback (including as an 
attachment too):

KeyError: OlzprIFFW5P6ATmJ5vkiZdHC6U95Zgd
Python 2.2.1
/usr/bin/python


A problem occurred while running a Python script. Here is the sequence 
of function calls leading up to the error, with the most recent (innermost) 
call first. The exception attributes are:
      __doc__ = 'Mapping key not found.' 
      __getitem__ = <bound method KeyError.__getitem__ of 
<exceptions.KeyError instance at 0x8434f24>> 
      __init__ = <bound method KeyError.__init__ of 
<exceptions.KeyError instance at 0x8434f24>> 
      __module__ = 'exceptions' 
      __str__ = <bound method KeyError.__str__ of <exceptions.KeyError 
instance at 0x8434f24>> 
      args = ('OlzprIFFW5P6ATmJ5vkiZdHC6U95Zgd',)



/home2/mick/src/misc/roundup-0.6.7/roundup/backends/sessions.py in 
getall(self=<roundup.backends.sessions.OneTimeKeys instance>, 
infoid='OlzprIFFW5P6ATmJ5vkiZdHC6U95Zgd')
   63             return marshal.loads(db[infoid])
   64         finally:


   65             db.close()

      db = <dbm.dbm object>, global close = undefined
   66 
   67     def set(self, infoid, **newvalues):




/home2/mick/src/misc/roundup-0.6.7/roundup/cgi/client.py in 
confRegoAction(self=<_roundup_tracker_1.interfaces.Client instance>)
  867         # pull the rego information out of the otk database
  868         otk = self.form['otk'].value


  869         props = self.db.otks.getall(otk)

      props = undefined, self = <_roundup_tracker_1.interfaces.Client 
instance>, global db = undefined, global otks = undefined, global 
getall = undefined, otk = 'OlzprIFFW5P6ATmJ5vkiZdHC6U95Zgd'
  870         for propname, proptype in self.db.user.getprops().items():
  871             value = props.get(propname, None)




/home2/mick/src/misc/roundup-0.6.7/roundup/cgi/client.py in 
handle_action(self=<_roundup_tracker_1.interfaces.Client instance>)
  587                 raise ValueError, 'No such action "%s"'%action
  588             # call the mapped action


  589             return getattr(self, method)()

      global getattr = undefined, self = 
<_roundup_tracker_1.interfaces.Client instance>, method = 
'confRegoAction'
  590         except Redirect:
  591             raise




/home2/mick/src/misc/roundup-0.6.7/roundup/cgi/client.py in 
inner_main(self=<_roundup_tracker_1.interfaces.Client instance>)
  309         except:
  310             # everything else


  311             self.write(cgitb.html())

      self = <_roundup_tracker_1.interfaces.Client instance>, global 
write = undefined, global cgitb = <module 'roundup.cgi.cgitb' from 
'roundup/cgi/cgitb.pyc'>, html = undefined
  312 
  313     def clean_sessions(self):

Running the unit tests yields a single failure:

$ ./run_tests
running sqlite backend tests
...................................................................................................
...E..............................................................................................
..........
=============================================
=========================
ERROR: testExceptions (test.test_db.anydbmDBTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "./test/test_db.py", line 446, in testExceptions
    ar(IndexError, self.db.issue.set, '99', title='foo')
  File "/usr/lib/python2.2/unittest.py", line 273, in failUnlessRaises
    apply(callableObj, args, kwargs)
  File "./roundup/backends/back_anydbm.py", line 1148, in set
    oldvalues = copy.deepcopy(self.db.getnode(self.classname, nodeid))
  File "./roundup/backends/back_anydbm.py", line 303, in getnode
    db = self.getclassdb(classname)
  File "./roundup/backends/back_anydbm.py", line 170, in getclassdb
    return self.opendb('nodes.%s'%classname, mode)
  File "./roundup/backends/back_anydbm.py", line 201, in opendb
    return anydbm.open(path, 'c')
  File "/usr/lib/python2.2/anydbm.py", line 86, in open
    return mod.open(file, flag, mode)
error: (11, 'Resource temporarily unavailable')
 
----------------------------------------------------------------------
Ran 207 tests in 178.654s
 
FAILED (errors=1)

As an aside to this, how easy is it to disable the registration confirmation 
entirely? This roundup instance is for internal use so the confirmation 
isn't really needed.
msg1140 Author: [hidden] (micktwomey) Date: 2004-03-23 15:55
Logged In: YES 
user_id=1004574

Hmm, I can't seem to attach a file, as a substitute I have the error page 
temporarily at http://translucentcode.org/~mick/
roundup_error_page.html
msg1141 Author: [hidden] (richard) Date: 2004-03-24 05:17
Logged In: YES 
user_id=6405

Thanks for following up with the info. 
 
I'm confused - the original bug report was for Python 2.3.1 
running on Win2k. I presume you've now switched to a 
different platform, but have the same error? 
 
What email client is being used to invoke the registration URL? 
 
Does the URL appear damaged in any way? 
 
If you look at roundup's access logs, does it look like the URL 
is being loaded twice? 
 
Does the registration work even when you get the error, or 
does it not work at all? 
 
As for the 'Resource temporarily unavailable' error during 
testing - are you running on NFS (or any other kind of 
networked filesystem)? 
 
Your final question about registration confirmation - it should 
be possible to modify the registration action to do this. I guess 
it'd be nice to have built into Roundup as a config option. If you 
wish to discuss the idea further, please do so on the 
roundup-users mailing list. I've opened a new RFE for the 
idea, 922209. 
msg1142 Author: [hidden] (micktwomey) Date: 2004-03-24 10:49
Logged In: YES 
user_id=1004574

Apologies, if I gave the impression that I filed the bug originally, I simply 
encountered the same problem and piggy backed my comments on the 
bug report :)

To answer your questions:

* I'm using Thunderbird on Mac OS X, however co-workers using either 
mozilla or evolution are encountering the same problem (in fact it's how 
I found out about it, I added myself via the admin account, they 
registered).

* Looking at the URL more closely it is indeed "damaged", in so far as 
Mozilla picks up every character right up to the last one as a URL, but 
omits he last character. I think it might be it's URL selection logic at 
fault. Adding the missing character makes it work.

Changing the email template to add an extra newline after the url fixes 
the problem:

$ diff -u roundup/cgi/client.py.original roundup/cgi/client.py
--- roundup/cgi/client.py.original      2004-03-24 10:33:45.000000000 
+0000
+++ roundup/cgi/client.py       2004-03-24 10:33:53.000000000 +0000
@@ -794,6 +794,7 @@
 please visit the following URL:
  
    %(url)s?@action=confrego&otk=%(otk)s
+
 '''%{'name': props['username'], 'tracker': tracker_name, 'url': self.base,
                 'otk': otk}
         if not self.sendEmail(props['address'], subject, body):

(the diff might be slightly mangled, but you get the idea).

So this is actually a bug in Mozilla :)

* As for the unit test error, it's not on an NFS disk, I'll see if I can pin it 
down more, it might be a bug in one of the libraries involved, some of 
them are a little old on the Java Desktop :/

* I'll follow up on the RFE, I've joined the list.
msg1143 Author: [hidden] (richard) Date: 2004-03-24 20:36
Logged In: YES 
user_id=6405

Thanks, patched.  
History
Date User Action Args
2004-02-27 23:07:52anonymouscreate