[ 
https://issues.apache.org/jira/browse/THRIFT-4890?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17124873#comment-17124873
 ] 

Giorgi Grigalashvili edited comment on THRIFT-4890 at 6/3/20, 11:25 AM:
------------------------------------------------------------------------

Hi [~zeshuai007], 

Unfortunately I cannot follow up with this issue anymore, it's been almost a 
year ago and I'm not working with the same project anymore. 

It could have been a problem with my configuration, though the solution James 
suggested worked just fine as far as I remember. 

The struct I was working was a [polygon 
mesh][[https://en.wikipedia.org/wiki/Polygon_mesh]] which had a lot of elements 
like points, triangles and RGB data inside.  I'll try to remember and write 
down the structure of the object I was trying to move around and maybe it could 
be helpful:
{code:java}
struct ThriftPoint3D {   
    1: required double x;   
    2: required double y;   
    3: required double z;
}

struct ThriftTriangleCell {    
    1: required i32 id1;    
    2: required i32 id2;    
    3: required i32 id3;
}

struct ThriftColor {    
    1: required i16 r;    
    2: required i16 g;    
    3: required i16 b;
}

typedef list<ThriftPoint3D> ThriftPointList
typedef list<ThriftColor> ThriftVertexColorList
typedef list<ThriftTriangleCell> ThriftTriangleCellList

// This was an object I was exchanging between server and client.
struct ThriftVertexColorMesh {    
    1: required ThriftPointList vertices;   
    2: optional ThriftVertexColorList rgb;    
    3: required ThriftTriangleCellList triangles;
}{code}
 

Hope this helps.

 


was (Author: grigala):
Hi [~zeshuai007], 

Unfortunately I cannot follow up with this issue anymore, it's been almost a 
year ago and I'm not working with the same project anymore. 

It could have been a problem with my configuration, though the solution James 
suggested worked just fine as far as I remember. 

The struct I was working was a [polygon 
mesh|[https://en.wikipedia.org/wiki/Polygon_mesh]] which had a lot of elements 
like points, triangles and RGB data inside.  I'll try to remember and write 
down the structure of the object I was trying to move around and maybe it could 
be helpful:


{code:java}
struct ThriftPoint3D {   
    1: required double x;   
    2: required double y;   
    3: required double z;
}

struct ThriftTriangleCell {    
    1: required i32 id1;    
    2: required i32 id2;    
    3: required i32 id3;
}

struct ThriftColor {    
    1: required i16 r;    
    2: required i16 g;    
    3: required i16 b;
}

typedef list<ThriftPoint3D> ThriftPointList
typedef list<ThriftColor> ThriftVertexColorList
typedef list<ThriftTriangleCell> ThriftTriangleCellList

// This was an object I was exchanging between server and client.
struct ThriftVertexColorMesh {    
    1: required ThriftPointList vertices;   
    2: optional ThriftVertexColorList rgb;    
    3: required ThriftTriangleCellList triangles;
}{code}
 

Hope this helps.

 

> AttributeError: 'Connection' object has no attribute 'message'
> --------------------------------------------------------------
>
>                 Key: THRIFT-4890
>                 URL: https://issues.apache.org/jira/browse/THRIFT-4890
>             Project: Thrift
>          Issue Type: Bug
>          Components: Python - Library
>    Affects Versions: 0.12.0
>         Environment: Ubuntu Linux 18.10 64-bit
>            Reporter: Giorgi Grigalashvili
>            Priority: Major
>              Labels: Connection, Newbie, Python3, Question, non-blocking
>
> As part of my university research I'm using Thrift v0.12.0 to communicate 
> between Python server and Scala client. 
> The data my service is providing to client is lists of thrift 
> objects/structs, those lists contain ~1M items. The issue bellow is produced 
> if I'm sending full lists(more than ~60k items) of data, however if I 
> decrease list items to ~60k everything works fine. 
> {code:java}
> Traceback (most recent call last): 
> File "Server.py", line 40, in <module> 
> server.serve() 
> File "thrift/server/TNonblockingServer.py", line 370, in serve 
> self.handle() 
> File "thrift/server/TNonblockingServer.py", line 350, in handle 
> self.clients[writeable].write() 
> File "thrift/server/TNonblockingServer.py", line 88, in read 
> return func(self, *args, **kwargs) 
> File "thrift/server/TNonblockingServer.py", line 177, in write 
> self._wbuf = self.message[sent:] 
> AttributeError: 'Connection' object has no attribute 'message'
> {code}
> This is my server configuration:
> {code:java}
> ip = '127.0.0.1'
> port = '9000'
> handler = MyHandler()
> processor = MyService.Processor(handler)
> transport = TSocket.TServerSocket(host=ip, port=port)
> tfactory = TBinaryProtocol.TBinaryProtocolFactory()
> pfactory = TBinaryProtocol.TBinaryProtocolFactory()
> server = TNonblockingServer.TNonblockingServer(processor, transport, 
> tfactory, pfactory)
> server.serve()
> {code}
> Now my question is as follows, am I doing something wrong or could it be that 
> it's an issue from Thrift? Any ideas how can I resolve this problem or what I 
> could be doing wrong?
> Thanks in advance.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to