I cannot tell. The traceback is in pymysql so I would post there too. Can you tell us more?
On Dec 25, 4:02 am, Kenneth Lundström <[email protected]> wrote: > Apache 2, wsgi, MySQL, Python 2.6.5, web2py 1.90.6 > > After upgrading to the new DAL I occasionally get this error. Sometimes > I have to reload the page 1-4 times to get it working. > > Should I upgrade to 1.91.4 or do you need some more info? > > Kenneth > > Error ticket for "init" > Ticket ID > > xxx.xxx.xxx.xxx.2010-12-25.09-54-54.a54a74d6-70ac-4b4d-b943-5edbf0ac6d23 > Version > web2py Version 1.90.6 (2010-12-20 17:36:54) > Python Python 2.6.5: /usr/bin/python > Traceback > > 1. > 2. > 3. > 4. > 5. > 6. > 7. > 8. > 9. > 10. > 11. > 12. > 13. > 14. > 15. > 16. > 17. > > Traceback (most recent call last): > File "ggggggggggg/gluon/main.py", line 446, in wsgibase > BaseAdapter.close_all_instances(BaseAdapter.commit) > File "ggggggggggg/gluon/dal.py", line 271, in close_all_instances > action(instance) > File "ggggggggggg/gluon/dal.py", line 1027, in commit > return self.connection.commit() > File "ggggggggggg/gluon/contrib/pymysql/connections.py", line 549, in commit > self.errorhandler(None, exc, value) > File "ggggggggggg/gluon/contrib/pymysql/connections.py", line 545, in commit > self._execute_command(COM_QUERY, "COMMIT") > File "ggggggggggg/gluon/contrib/pymysql/connections.py", line 686, in > _execute_command > self._send_command(command, sql) > File "ggggggggggg/gluon/contrib/pymysql/connections.py", line 681, in > _send_command > sock.send(send_data) > error: [Errno 32] Broken pipe > > Error snapshot help Detailed traceback description > > <class 'socket.error'>([Errno 32] Broken pipe) > > inspect attributes > Exception instance attributes > __module__ 'socket' > __getslice__ <method-wrapper '__getslice__' of error object> > __str__ <method-wrapper '__str__' of error object> > __getattribute__ <method-wrapper '__getattribute__' of error object> > __dict__ {} > __sizeof__ <built-in method __sizeof__ of error object> > __weakref__ None > __init__ <method-wrapper '__init__' of error object> > __setattr__ <method-wrapper '__setattr__' of error object> > __reduce_ex__ <built-in method __reduce_ex__ of error object> > __new__ <built-in method __new__ of type object> > errno 32 > __format__ <built-in method __format__ of error object> > __class__ <class 'socket.error'> > filename None > __doc__ None > __getitem__ <method-wrapper '__getitem__' of error object> > __setstate__ <built-in method __setstate__ of error object> > __reduce__ <built-in method __reduce__ of error object> > args (32, 'Broken pipe') > __subclasshook__ <built-in method __subclasshook__ of type object> > __unicode__ <built-in method __unicode__ of error object> > strerror 'Broken pipe' > __delattr__ <method-wrapper '__delattr__' of error object> > __repr__ <method-wrapper '__repr__' of error object> > __hash__ <method-wrapper '__hash__' of error object> > Frames > > * > > File ggggggggggg/gluon/main.py in wsgibase at line 446 code arguments > variables > Function argument list > > (environ={'DOCUMENT_ROOT': 'ggggggggggg/', 'GATEWAY_INTERFACE': > 'CGI/1.1', 'HTTPS': '1', 'HTTP_ACCEPT': > 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', > 'HTTP_ACCEPT_CHARSET': 'ISO-8859-1,utf-8;q=0.7,*;q=0.7', > 'HTTP_ACCEPT_ENCODING': 'gzip,deflate', 'HTTP_ACCEPT_LANGUAGE': > 'en-gb,en;q=0.5', 'HTTP_CONNECTION': 'keep-alive', 'HTTP_COOKIE': > '__utma=12350507.1333234958.1291477692.1291477692...1.1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none)', > 'HTTP_HOST': '', ...}, responder=<built-in method start_response of > mod_wsgi.Adapter object>) > Code listing > > 441. > 442. > 443. > 444. > 445. > 446. > > 447. > 448. > 449. > 450. > > # ################################################## > > if response._custom_commit: > response._custom_commit() > else: > BaseAdapter.close_all_instances(BaseAdapter.commit) > > # ################################################## > # if session not in db try store session on filesystem > # this must be done after trying to commit database! > > Variables > BaseAdapter.close_all_instances <function close_all_instances> > BaseAdapter.commit <unbound method BaseAdapter.commit> > global BaseAdapter <class 'gluon.dal.BaseAdapter'> > * > > File ggggggggggg/gluon/dal.py in close_all_instances at line 271 code > arguments variables > Function argument list > > (action=<unbound method BaseAdapter.commit>) > Code listing > > 266. > 267. > 268. > 269. > 270. > 271. > > 272. > 273. > 274. > 275. > > """ to close cleanly databases in a multithreaded environment """ > if not hasattr(thread,'instances'): > return > while thread.instances: > instance = thread.instances.pop() > action(instance) > > # ## if you want pools, recycle this connection > really = True > if instance.pool_size: > sql_locker.acquire() > > Variables > action <unbound method BaseAdapter.commit> > instance <gluon.dal.MySQLAdapter object> > * > > File ggggggggggg/gluon/dal.py in commit at line 1027 code arguments > variables > Function argument list > > (self=<gluon.dal.MySQLAdapter object>) > Code listing > > 1022. > 1023. > 1024. > 1025. > 1026. > 1027. > > 1028. > 1029. > 1030. > 1031. > > if query.second!=None: > tables = tables.union(self.tables(query.second)) > return list(tables) > > def commit(self): > return self.connection.commit() > > def rollback(self): > return self.connection.rollback() > > Variables > self <gluon.dal.MySQLAdapter object> > self.connection <gluon.contrib.pymysql.connections.Connection object> > self.connection.commit <bound method Connection.commit of > <gluon.contrib.pymysql.connections.Connection object>> > * > > File ggggggggggg/gluon/contrib/pymysql/connections.py in commit at line > 549 code arguments variables > Function argument list > > (self=<gluon.contrib.pymysql.connections.Connection object>) > Code listing > > 544. > 545. > 546. > 547. > 548. > 549. > > 550. > 551. > 552. > 553. > > try: > self._execute_command(COM_QUERY, "COMMIT") > self.read_packet() > except: > exc,value,tb = sys.exc_info() > self.errorhandler(None, exc, value) > > def rollback(self): > ''' Roll back the current transaction ''' > try: > > Variables > builtinNone None > self <gluon.contrib.pymysql.connections.Connection object> > exc <class 'socket.error'> > value error(32, 'Broken pipe') > self.errorhandler <bound method Connection.defaulterrorhandler of > ...n.contrib.pymysql.connections.Connection object>> > * > > File ggggggggggg/gluon/contrib/pymysql/connections.py in commit at line > 545 code arguments variables > Function argument list > > (self=<gluon.contrib.pymysql.connections.Connection object>) > Code listing > > 540. > 541. > 542. > 543. > 544. > 545. > > 546. > 547. > 548. > 549. > > self.errorhandler(None, exc, value) > > def commit(self): > ''' Commit changes to stable storage ''' > try: > self._execute_command(COM_QUERY, "COMMIT") > > self.read_packet() > except: > exc,value,tb = sys.exc_info() > self.errorhandler(None, exc, value) > > Variables > self <gluon.contrib.pymysql.connections.Connection object> > global COM_QUERY '\x03' > self._execute_command <bound method Connection._execute_command of > <gluon.contrib.pymysql.connections.Connection object>> > * > > File ggggggggggg/gluon/contrib/pymysql/connections.py in > _execute_command at line 686 code arguments variables > Function argument list > > (self=<gluon.contrib.pymysql.connections.Connection object>, > command='\x03', sql='COMMIT') > Code listing > > 681. > 682. > 683. > 684. > 685. > 686. > > 687. > 688. > 689. > 690. > > sock.send(send_data) > > if DEBUG: dump_packet(send_data) > > def _execute_command(self, command, sql): > self._send_command(command, sql) > > def _request_authentication(self): > sock = self.socket > self._send_authentication() > > Variables > self <gluon.contrib.pymysql.connections.Connection object> > command '\x03' > self._send_command <bound method Connection._send_command of > <gluon.contrib.pymysql.connections.Connection object>> > sql 'COMMIT' > * > > File ggggggggggg/gluon/contrib/pymysql/connections.py in _send_command > at line 681 code arguments variables > Function argument list > > (self=<gluon.contrib.pymysql.connections.Connection object>, > command='\x03', sql='COMMIT') > Code listing > > 676. > 677. > 678. > 679. > 680. > 681. > > 682. > 683. > 684. > 685. > > def _send_command(self, command, sql): > send_data = struct.pack('<i', len(sql) + 1) + command + sql > > sock = self.socket > sock.send(send_data) > > if DEBUG: dump_packet(send_data) > > def _execute_command(self, command, sql): > > Variables > send_data '\x07\x00\x00\x00\x03COMMIT' > sock.send <built-in method send of _socket.socket object> > sock <socket._socketobject object> > > Context > > locals request session response > locals > command : > '\x03' > self : > <gluon.contrib.pymysql.connections.Connection object> > send_data : > '\x07\x00\x00\x00\x03COMMIT' > sock : > <socket._socketobject object> > sql : > 'COMMIT' > request > ajax : > False > application : > 'init' > args : > [] > body : > <cStringIO.StringO object> > cid : > None > client : > 'xxx.xxx.xxx.xxx' > controller : > 'default' > cookies : > <SimpleCookie: > __utma='12350507.1333234958.12914...1.utmccn=(direct)|utmcsr=(direct)|utmcmd=(none)'> > env : > <Storage {'mod_wsgi_listener_host': '', 'script_...data.fi/', > 'mod_wsgi_process_group': 'exp-kals'}> > extension : > 'html' > folder : > 'ggggggggggg/applications/init/' > function : > 'index' > get_vars : > <Storage {}> > now : > datetime.datetime(2010, 12, 25, 9, 54, 52, 861899) > post_vars : > <Storage {}> > raw_args : > None > url : > <gluon.html.XML object> > vars : > <Storage {}> > wsgi : > <Storage {'start_response': <function <lambda> a...p,deflate', > 'PATH_INFO': '/init/default/index'}}> > session > auth : > None > balance : > 0 > cart : > {} > language : > 'fi' > language_changed : > False > money_left : > 0 > money_to_use : > 0 > response > body : > <cStringIO.StringO object> > cookies : > <SimpleCookie: > session_id_init='xxx.xxx.xxx.xxx-469ece8e-c364-48c8-b36f-c6515c0d45a3'> > files : > [<gluon.html.XML object>, <gluon.html.XML object>, <gluon.html.XML object>] > flash : > '' > headers : > <Storage {'Expires': 'Sat, 25 Dec 2010 07:54:52 ...he, must-revalidate, > post-check=0, pre-check=0'}> > menu : > [] > meta : > <Storage {}> > postprocessing : > [] > session_filename : > 'ggggggggggg/applications/ini....-469ece8e-c364-48c8-b36f-c6515c0d45a3' > session_id : > 'xxx.xxx.xxx.xxx-469ece8e-c364-48c8-b36f-c6515c0d45a3' > session_id_name : > 'session_id_init' > session_new : > True > status : > 200 > subtitle : > <lazyT 'Overview'> > title : > <lazyT 'Your account'> > view : > 'default/index.html' > In file: Framework > > 1.

