thrift-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Francisco Byun <comba...@gmail.com>
Subject Re: "TSocket read 0 bytes" when dictionary contains unicode character on 64-bit Ubuntu
Date Sun, 23 May 2010 05:33:32 GMT
When I'm using Thrift alone, no problem occur. But when I'm using it
through mod_python extension with Apache2 web server, the problem
occurs. ... Now I'm totally confused about this issue ...

2010/5/19 Francisco Byun <combacsa@gmail.com>:
> Hello David,
>
> When I'm testing with Ubuntu 32-bit version installed in "SAME" server
> (I mean, same hardware), no problem occurs. Problem only occurs when
> I'm using Ubuntu 64-bit version. I'm trying to write down a code which
> is short and simple enough to report & reproduce this problem. Would
> this be helpful to find out the exact problematic point?
>
> @ Maybe I should use 32-bit server for now ...
>
> 2010/5/18 David Reiss <dreiss@facebook.com>:
>> I'm not really sure what would cause this.  It sounds like either
>> a bug in the fastbinary module or corrupted data being sent to the
>> server.
>>
>> --David
>>
>> Francisco Byun wrote:
>>> Hello David,
>>>
>>> I forgot to take a look at server error log. This is what I found from
>>> server. Well, server think, it got "Unexpected TType". Again, it only
>>> happens when I put non-latin character (Korean letters) in the string.
>>> If I send everything purely in latin character, no ERROR occurs.
>>>
>>> 2010-05-18 03:37:57,917 [25831:-4E200470] <root> ** ERROR ** Unexpected
TType
>>> Traceback (most recent call last):
>>>   File "build/bdist.linux-i686/egg/thrift/server/TServer.py", line
>>> 157, in serveClient
>>>     self.processor.process(iprot, oprot)
>>>   File "/home/ara/arara/gen-py/arara_thrift/ArticleManager.py", line
>>> 833, in process
>>>     self._processMap[name](self, seqid, iprot, oprot)
>>>   File "/home/ara/arara/gen-py/arara_thrift/ArticleManager.py", line
>>> 1036, in process_write_article
>>>     args.read(iprot)
>>>   File "/home/ara/arara/gen-py/arara_thrift/ArticleManager.py", line
>>> 3054, in read
>>>     fastbinary.decode_binary(self, iprot.trans, (self.__class__,
>>> self.thrift_spec))
>>> TypeError: Unexpected TType
>>>
>>>
>>> 2010/5/18 David Reiss <dreiss@facebook.com>:
>>>> It looks like the server closed the connection without sending back
>>>> a response.  I would take a look at the server error log.
>>>>
>>>> --David
>>>>
>>>> Francisco Byun wrote:
>>>>> Hello. I'm running a BBS written in Python which use Thrift as the
>>>>> protocol between Backend & Frontend server. Recently I tried to
>>>>> migrate Frontend server. Former Frontend server was 32-bit Ubuntu
>>>>> server. New Frontend server is 64-bit Ubuntu server with doubled
>>>>> memory.
>>>>>
>>>>> But I failed.
>>>>>
>>>>> When Frontend ask Backend to send some information, it works fine. But
>>>>> when Frontend tries to send some information, it does not work very
>>>>> well. For example, I tried to write an article written in English,
>>>>> everything was fine. But when I tried to write an article written in
>>>>> Korean, it just screwed up with following traceback.
>>>>>
>>>>> What should I inspect? Is this reported Thrift problem, or my code is
>>>>> wrong? (But identical source works fine with 32-bit Ubuntu server
>>>>>
>>>>> .)
>>>>>
>>>>> Traceback (most recent call last):
>>>>>
>>>>>  File "/usr/local/lib/python2.6/dist-packages/Django-1.2-py2.6.egg/django/core/handlers/base.py",
>>>>> line 100, in get_response
>>>>>    response = callback(request, *callback_args, **callback_kwargs)
>>>>>
>>>>>  File "/home/ara/arara/warara/__init__.py", line 24, in check_error
>>>>>    return f(*args, **argv)
>>>>>
>>>>>  File "/home/ara/arara/warara/board/views.py", line 118, in write
>>>>>    return write_(request, board_name)
>>>>>
>>>>>  File "/home/ara/arara/warara/__init__.py", line 24, in check_error
>>>>>    return f(*args, **argv)
>>>>>
>>>>>  File "/home/ara/arara/warara/board/views.py", line 169, in write_
>>>>>    article_id = server.article_manager.write_article(sess, board_name,
>>>>> WrittenArticle(**article_dic))
>>>>>
>>>>>  File "/home/ara/arara/gen-py/arara_thrift/ArticleManager.py", line
>>>>> 607, in write_article
>>>>>    return self.recv_write_article()
>>>>>
>>>>>  File "/home/ara/arara/gen-py/arara_thrift/ArticleManager.py", line
>>>>> 620, in recv_write_article
>>>>>    (fname, mtype, rseqid) = self._iprot.readMessageBegin()
>>>>>
>>>>>  File "/usr/local/lib/python2.6/dist-packages/Thrift-0.2.0-py2.6-linux-x86_64.egg/thrift/protocol/TBinaryProtocol.py",
>>>>> line 126, in readMessageBegin
>>>>>    sz = self.readI32()
>>>>>
>>>>>  File "/usr/local/lib/python2.6/dist-packages/Thrift-0.2.0-py2.6-linux-x86_64.egg/thrift/protocol/TBinaryProtocol.py",
>>>>> line 203, in readI32
>>>>>    buff = self.trans.readAll(4)
>>>>>
>>>>>  File "/usr/local/lib/python2.6/dist-packages/Thrift-0.2.0-py2.6-linux-x86_64.egg/thrift/transport/TTransport.py",
>>>>> line 58, in readAll
>>>>>    chunk = self.read(sz-have)
>>>>>
>>>>>  File "/usr/local/lib/python2.6/dist-packages/Thrift-0.2.0-py2.6-linux-x86_64.egg/thrift/transport/TTransport.py",
>>>>> line 155, in read
>>>>>    self.__rbuf = StringIO(self.__trans.read(max(sz, self.DEFAULT_BUFFER)))
>>>>>
>>>>>  File "/usr/local/lib/python2.6/dist-packages/Thrift-0.2.0-py2.6-linux-x86_64.egg/thrift/transport/TSocket.py",
>>>>> line 94, in read
>>>>>    raise TTransportException(type=TTransportException.END_OF_FILE,
>>>>> message='TSocket read 0 bytes')
>>>>>
>>>>> TTransportException: TSocket read 0 bytes
>>>>>
>>>>> <ModPythonRequest
>>>>> path:/board/test/write/,
>>>>> GET:<QueryDict: {}>,
>>>>> POST:<QueryDict: {u'file1': [u'', u''], u'delete_file': [u''],
>>>>> u'article_no': [u''], u'title': [u'test'], u'text': [u'--\r\nKAIST
>>>>> \ucca0\ud559\uacfc\uc5d0 \uc7ac\ud559\uc911\uc778
>>>>> \ubcc0\uaddc\ud64d\uc774\ub77c\uace0 \ud569\ub2c8\ub2e4.'],
>>>>> u'article_write': [u'write'], u'board_name': [u'test'], u'write_type':
>>>>> [u'write'], u'file1_fi': [u'', u'']}>,
>>
>

Mime
View raw message