I have same problem (occasionally) SO Debian 7 VPS
83.37.153.54.2013-10-09.08-47-01.c139aa5f-0503-4642-933c-a4b3460c70a0 Version web2py™ Version 2.6.4-stable+timestamp.2013.09.22.01.43.37 Traceback 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Traceback (most recent call last): File "/home/www-data/web2py/gluon/main.py", line 550, in wsgibase BaseAdapter.close_all_instances('rollback') File "/home/www-data/web2py/gluon/dal.py", line 558, in close_all_instances db._adapter.close(action) File "/home/www-data/web2py/gluon/dal.py", line 538, in close getattr(self, action)() File "/home/www-data/web2py/gluon/dal.py", line 1789, in rollback return self.connection.rollback() File "/home/www-data/web2py/gluon/contrib/pymysql/connections.py", line 640, in rollback self.errorhandler(None, exc, value) File "/home/www-data/web2py/gluon/contrib/pymysql/connections.py", line 200, in defaulterrorhandler raise Error(errorclass, errorvalue) Error: (<class 'socket.error'>, error(32, 'Broken pipe')) In file: Framework Any idea? 1. On Saturday, December 25, 2010 11:01:45 PM UTC+1, Kenneth wrote: > > I have never seen this before I upgraded to a version with the new DAL > and it show any very occasionally. Today I got it a lot, so I upgraded > to 1.91.4 and so far havn�t got it. > > > Kenneth > > > 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<kenneth.t.lundst...@gmail.com> > > 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. > > -- Resources: - http://web2py.com - http://web2py.com/book (Documentation) - http://github.com/web2py/web2py (Source code) - https://code.google.com/p/web2py/issues/list (Report Issues) --- You received this message because you are subscribed to the Google Groups "web2py-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to web2py+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.