I'm experimenting an "invite_members" command-line script derived from the add_members script. It does send a request for confirmation, but the confirmation email does not get processed, and no traceback show up in the logs. However, if I try the web confirmation, I get this traceback.
Bug in Mailman version 2.1.2+
We're sorry, we hit a bug!
If you would like to help us identify the problem, please email a copy of this page to the webmaster for this site with a description of what happened. Thanks!
Traceback:
Traceback (most recent call last): File "/usr/local/mailman/scripts/driver", line 87, in run_main main() File "/usr/local/mailman/Mailman/Cgi/confirm.py", line 98, in main content = Pending.confirm(cookie, expunge=0) File "/usr/local/mailman/Mailman/Pending.py", line 111, in confirm db = _load() File "/usr/local/mailman/Mailman/Pending.py", line 163, in _load return cPickle.load(fp) SystemError: Failed to import class UserDesc from module __main__
Python information:
Variable Value
sys.version 2.1.3 (#1, Sep 7 2002, 15:29:56) [GCC 2.95.4 20011002 (Debian prerelease)]
sys.executable /usr/bin/python
sys.prefix /usr
sys.exec_prefix /usr
sys.path /usr
sys.platform linux2
Environment variables:
Variable Value
DOCUMENT_ROOT /var/www/listes.rezo.net
SERVER_ADDR 80.67.170.17
SERVER_PORT 80
PATH_TRANSLATED /var/www/listes.rezo.net/test/062c5a8c98ba236594a3edd6092ec2cdfb5737f4
REMOTE_ADDR 62.212.98.121
UNIQUE_ID PtwRIVBDqhEAAEaeBq8
HTTP_ACCEPT_LANGUAGE fr-fr, ja;q=0.62, en-us;q=0.93, en;q=0.90, de-de;q=0.86, de;q=0.83, nl-nl;q=0.79, nl;q=0.76, it-it;q=0.72, it;q=0.69, ja-jp;q=0.66, fr;q=0.97, es-es;q=0.59, es;q=0.55, da-dk;q=0.52, da;q=0.48, fi-fi;q=0.45, fi;q=0.41, ko-kr;q=0.38, ko;q=0.34, no-no;q=0.31, no;q=0.28, pt-pt;q=0.24, pt;q=0.21, sv-se;q=0.17, sv;q=0.14, zh-cn;q=0.10, zh-tw;q=0.07, zh;q=0.03
GATEWAY_INTERFACE CGI/1.1
SERVER_NAME listes.rezo.net
HTTP_CONNECTION keep-alive
HTTP_USER_AGENT Mozilla/5.0 (Macintosh; U; PPC Mac OS X; fr-fr) AppleWebKit/74 (KHTML, like Gecko) Safari/74
HTTP_ACCEPT */*
REQUEST_URI /mailman/confirm/test/062c5a8c98ba236594a3edd6092ec2cdfb5737f4
QUERY_STRING
SCRIPT_FILENAME /home/mailman/cgi-bin/confirm
SCRIPT_URL /mailman/confirm/test/062c5a8c98ba236594a3edd6092ec2cdfb5737f4
HTTP_HOST listes.rezo.net
REQUEST_METHOD GET
SERVER_SIGNATURE
SCRIPT_URI http://listes.rezo.net/mailman/confirm/test/062c5a8c98ba236594a3edd6092ec2cd...
SCRIPT_NAME /mailman/confirm
SERVER_ADMIN fil@rezo.net
SERVER_SOFTWARE Apache/1.3.27 (Unix) Debian GNU/Linux PHP/4.2.3 mod_fastcgi/2.2.12 mod_perl/1.26 DAV/1.0.3
PYTHONPATH /usr/local/mailman
PATH_INFO /test/062c5a8c98ba236594a3edd6092ec2cdfb5737f4
HTTP_COOKIE site=280200000069590cdc3e732800000039303939623930306333386139346564633231373832653532303062643863323134356662303536
SERVER_PROTOCOL HTTP/1.1
REMOTE_PORT 29092
-- Fil
I'm experimenting an "invite_members" command-line script derived from the add_members script. It does send a request for confirmation, but the confirmation email does not get processed, and no traceback show up in the logs. However, if I try the web confirmation, I get this traceback.
Traceback (most recent call last): File "/usr/local/mailman/scripts/driver", line 87, in run_main main() File "/usr/local/mailman/Mailman/Cgi/confirm.py", line 98, in main content = Pending.confirm(cookie, expunge=0) File "/usr/local/mailman/Mailman/Pending.py", line 111, in confirm db = _load() File "/usr/local/mailman/Mailman/Pending.py", line 163, in _load return cPickle.load(fp) SystemError: Failed to import class UserDesc from module __main__
My script must have played fool: somehow the data/pending.pck file was generating the error. I just removed it from that folder and Mailman is now running fine.
-- Fil
On Mon, 2003-06-02 at 23:11, Fil wrote:
I'm experimenting an "invite_members" command-line script derived from the add_members script. It does send a request for confirmation, but the confirmation email does not get processed, and no traceback show up in the logs. However, if I try the web confirmation, I get this traceback.
Without seeing your code, it's hard for me to tell exactly what the bug is, but let me explain a little about how pickles work.
When you pickle an instance, Python really pickles the object's data members and a reference to the object's class -- not the class itself. This reference is in the form of a string such as "Mailman.UserDesc.UserDesc". Upon unpickling, Python will attempt to import e.g. UserDesc from Mailman.UserDesc.
Things that can foul this up include pickling a class nested inside a function or another class. In those cases, Python won't be able to write the correct reference, or find the right imports to satisfy the class reference.
The moral of the story is to make sure all the classes of the object you want to pickle are defined at global scope. Mailman.UserDesc.UserDesc ought to satisfy that requirement, but maybe you've done something funky in your script?
-Barry
Well well... I just modified bin/add_members to be able to invite them instead of adding them. I need the command line because I wrap it in a php script (don't hit me!)... And obviously I failed! Here it is (mailman-users: don't use it!). Hint: if add_members could grow an 'invite' option...
-- Fil
@ Barry Warsaw <barry@python.org> :
On Mon, 2003-06-02 at 23:11, Fil wrote:
I'm experimenting an "invite_members" command-line script derived from the add_members script. It does send a request for confirmation, but the confirmation email does not get processed, and no traceback show up in the logs. However, if I try the web confirmation, I get this traceback.
Without seeing your code, it's hard for me to tell exactly what the bug is, but let me explain a little about how pickles work.
When you pickle an instance, Python really pickles the object's data members and a reference to the object's class -- not the class itself. This reference is in the form of a string such as "Mailman.UserDesc.UserDesc". Upon unpickling, Python will attempt to import e.g. UserDesc from Mailman.UserDesc.
Things that can foul this up include pickling a class nested inside a function or another class. In those cases, Python won't be able to write the correct reference, or find the right imports to satisfy the class reference.
The moral of the story is to make sure all the classes of the object you want to pickle are defined at global scope. Mailman.UserDesc.UserDesc ought to satisfy that requirement, but maybe you've done something funky in your script?
-Barry
participants (2)
-
Barry Warsaw
-
Fil