Well, I think i have figured out the problem with my code (*but i am not entirely sure..so please correct me if i am wrong)

If you look at above code, then you will see:

 begin
   timeout(6) do
    # read from socket
   end
rescue Timeout::Error
  # error handling
end

My assertion says, sometimes for certain protocol codes, the time to read from the socket is more than 6 seconds and hence that "gets request" is timed out there. Now..in the next call, when i put some new request to the socket...i get response for the previous request, because socket still contains data that was written to it after the timeout. Ugly,right?

Solution I have thought is:
  1. Send a unique GUID as a extended modifier with each request and expect that proxy will echo it to us.
  2. Somehow clear the socket, before read...not entirely sure abt this.Somebody on ruby-lang  also suggested that, use Eventmachine.



On 9/2/06, Zed Shaw <[EMAIL PROTECTED]> wrote:
On Sat, 2006-09-02 at 17:00 +0530, hemant wrote:
> Yes...its a multithreaded and supposed to server request flawlessly.
>
> BTW, as a  quick check...i wrote a ruby program to fetch data for some
> 10000 iterations and and append it to a CSV file...and didn't get a
> single data mangling error.
>
> Next step, I will try 100 simultaneous threads, fetching the data and
> see if there is a mis-match.

And randomize it.  Ruby's threads work fairly predictably so without a
random short think time to mix things up you won't get good results.



--
Zed A. Shaw
http://www.zedshaw.com/
http://mongrel.rubyforge.org/
http://www.lingr.com/room/3yXhqKbfPy8 -- Come get help.

_______________________________________________
Mongrel-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/mongrel-users



--
nothing much to talk
_______________________________________________
Mongrel-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/mongrel-users

Reply via email to