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

Joey A commented on THRIFT-171:
-------------------------------

I am seeing the same TransportException that Dave mentions above. The Ruby 
client uses FramedTransport to communicate with a Java server. When more than 
one Ruby thread communicates with the server, I'll *sometimes* receive the 
error.



> Expected blocking from TSocket but didn't get it
> ------------------------------------------------
>
>                 Key: THRIFT-171
>                 URL: https://issues.apache.org/jira/browse/THRIFT-171
>             Project: Thrift
>          Issue Type: Bug
>          Components: Library (Java), Library (Ruby)
>    Affects Versions: 0.1
>         Environment: CentOS 4.x
>            Reporter: Dave Dupre
>         Attachments: try.zip
>
>
> I have a Thrift server built in Ruby on Rails. It uses the TSimpleServer 
> class since my server is using Rails to generate HTML (Rails view code 
> expects to be single threaded).  I have two clients: one in Java and one in 
> Ruby.  Here is what I see:
> Ruby client:
> # Usual init code straight from the tutorial here
> transport.open
> 1000.times { client.my_method }
> transport.close
> The Java client is basically the same.  Unfortunately, I see two different 
> behaviors when running multiple client instances.  With a Ruby client, 
> execute client A, and it starts processing normally.  Execute client B while 
> client A is still running, and it blocks at transport.open until client A 
> completes.  This is what I expected.  However, if I do the same thing with 
> Java clients, both clients proceed in parallel.  Unfortunately, this gets the 
> server very confused and into a really bad state.  I'm using TSocket which 
> should be doing blocking I/O, but that is not what I'm seeing happen.
> Is there some magic that I can do to make this work?  Right now, I use 
> configuration to ensure that only one Java client thread/process is allowed 
> to talk to my Ruby server, but this is a total hack.  Switching to 
> TThreadedServer makes blocking go away, but I'm nervous about what that will 
> mean to the Rails controller and view code.  FYI, my server allows me to 
> generate HTML views via Thrift.  If it was a pure Ruby server, then I would 
> not be concerned, but since so much is dependent on code that usually assumes 
> to be single threaded, I'm concerned about introducing bugs.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to