The Assertion error comes from pymysql which ships with web2py. I just
upgraded trunk to a newer version. Give it a try. It may (or my not)
resolve the problem. You may want to ask the pymysql mailing list for an
explanations of the error.
On Thursday, 12 July 2012 17:06:06 UTC-5, AbrahamLinksys wrote:
>
> I get these broken pipe errors almost daily now, usually in the wee hours
> of the morning (between 1-5am). I'll get one or two, or sometimes like 5,
> but probably not more than say 10/day (on one page that pulls four images
> from the DB, i will get 4 at once), and it doesn't happen every day.
>
> I am storing images (<100KB) in the database, but I'm not sure if that's
> it. I'm also hosting this on VMs (one for web2py, one for mysql DB server),
> and a few months ago I had never seen this error. It might be something to
> do with the VM setup but I'm really not sure.
>
> From what I understand, broken pipe happens at the OS level and is
> something to do with transferring information from the DB server... sound
> right?
>
>
> Also, (separate issue, possibly related?) sometimes the website becomes
> unresponsive, and I get errors to do with base64 decoding and assertion
> errors:
>
> File "/var/www/web2py/gluon/dal.py", line 5481, in select
> return self.db._adapter.select(self.query,fields,attributes)
> File "/var/www/web2py/gluon/dal.py", line 1192, in select
> return self.parse(rows,self._colnames)
> File "/var/www/web2py/gluon/dal.py", line 1421, in parse
> colset[fieldname] = base64.b64decode(str(value))
> File "/usr/lib64/python2.6/base64.py", line 76, in b64decode
> raise TypeError(msg)
> TypeError: Incorrect padding
>
>
> and :
>
> Error: (<type 'exceptions.AssertionError'>, AssertionError('Result length
> not requested length:\nExpected=97. Actual=31. Position: 299. Data
> Length: 330',))
>
> The odd thing is that I can do these queries via mysql command line, even
> when running mysql on the webserver to connect to the DB host, and they
> return instantly... although I guess I'm not sure if the assertion error
> comes from MySQL or is part of web2py's DB adapter?
> We used wireshark to determine that the TCP packets were being incessantly
> retransmitted ... but only sometimes. The Padding/Assertion Errors seem to
> be related to VMs since migrating the machine to a different physical host
> and back resolves the issue immediately.
>
> Also, restarting httpd tends to lessen the amount of Broken Pipe errors I
> see, so perhaps it's some sort of stale connection to the DB?
>
> -Abe
>
> On Thursday, July 12, 2012 2:02:01 PM UTC-5, Marcello wrote:
>>
>> Hello,
>>
>> I'm having "Connection timed out" to mysql server.
>> I'm creating a sheet from some queries. The function is in a module, and
>> running it from console.
>>
>> Sometimes, it goes OK, but sometimes I get the error (see below).
>>
>> I'm using EC2 and the database is in RDS.
>>
>> Thanks for any help...
>>
>> Marcello
>>
>> -----
>> Traceback (most recent call last):
>> File "/home/tecno2/web2py/gluon/shell.py", line 206, in run
>> execfile(startfile, _env)
>> File "applications/segundarj/private/diario.py", line 2, in <module>
>> planilha.roda(True)
>> File "applications/segundarj/modules/planilha.py", line 64, in roda
>> print "aba: %s, total: %s" % (aba,processos.count())
>> File "/home/tecno2/web2py/gluon/dal.py", line 7573, in count
>> return self.db._adapter.count(self.query,distinct)
>> File "/home/tecno2/web2py/gluon/dal.py", line 1339, in count
>> self.execute(self._count(query, distinct))
>> File "/home/tecno2/web2py/gluon/dal.py", line 1392, in execute
>> return self.log_execute(*a, **b)
>> File "/home/tecno2/web2py/gluon/dal.py", line 1386, in log_execute
>> ret = self.cursor.execute(*a, **b)
>> File "/home/tecno2/web2py/gluon/contrib/pymysql/cursors.py", line 108,
>> in execute
>> self.errorhandler(self, exc, value)
>> File "/home/tecno2/web2py/gluon/contrib/pymysql/connections.py", line
>> 182, in defaulterrorhandler
>> raise Error(errorclass, errorvalue)
>> Error: (<class 'socket.error'>, error(110, 'Connection timed out'))
>>
>> Traceback (most recent call last):
>> File "web2py.py", line 20, in <module>
>> gluon.widget.start(cron=True)
>> File "/home/tecno2/web2py/gluon/widget.py", line 868, in start
>> import_models=options.import_models, startfile=options.run)
>> File "/home/tecno2/web2py/gluon/shell.py", line 210, in run
>> if import_models: BaseAdapter.close_all_instances('rollback')
>> File "/home/tecno2/web2py/gluon/dal.py", line 432, in
>> close_all_instances
>> getattr(instance, action)()
>> File "/home/tecno2/web2py/gluon/dal.py", line 1357, in rollback
>> return self.connection.rollback()
>> File "/home/tecno2/web2py/gluon/contrib/pymysql/connections.py", line
>> 571, in rollback
>> self.errorhandler(None, exc, value)
>> File "/home/tecno2/web2py/gluon/contrib/pymysql/connections.py", line
>> 182, in defaulterrorhandler
>> raise Error(errorclass, errorvalue)
>> gluon.contrib.pymysql.err.Error: (<class 'socket.error'>, error(32,
>> 'Broken pipe'))
>>
>